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