更改R中ANOVA的默认对比度

时间:2015-08-10 05:37:07

标签: r anova

假设我们有一个因子X有3个等级,即H,L和M.如果我使用lm(Y~X)函数在R中进行ANOVA,那么默认设置是将H视为参考组或基线。我的问题是是否有内置语法将L设置为基线。请注意,我知道我们可以使用指标功能来实现这一目标。我正在寻找的是lm函数的一些简单调整。谢谢!

3 个答案:

答案 0 :(得分:3)

C函数为您的示例执行此操作

dat <- data.frame(x=sample(c("H","L","M"), 30, rep=T), y=runif(30))
levels(dat$x)
# [1] "H" "L" "M"
lm(y ~ x, data=dat)  # "H" is base

lm(y ~ C(x, base=2), data=dat)  # use "L" as base

答案 1 :(得分:3)

我认为relevel对于这种情况非常简单和灵活,例如:

dat <- data.frame(Y=1:3, X=c("H","L","M"))
lm(Y ~ X, data=transform(dat, X=relevel(X,"L") ))

#Call:
#lm(formula = Y ~ X, data = transform(dat, X = relevel(X, "L")))
# 
#Coefficients:
#(Intercept)           XH           XM  
#          2           -1            1 

按照:

contrasts(dat$X)
#  L M
#H 0 0
#L 1 0
#M 0 1

contrasts(relevel(dat$X,"L"))
#  H M
#L 0 0
#H 1 0
#M 0 1

答案 2 :(得分:0)

尝试这样的事情

lm(Y~X, contrasts = list(X = "contr.treatment"))

其他选项

contr.sum
contr.SAS