在 R 中更改方差分析中的默认对比度
Change default contrast in ANOVA in R
假设我们有一个具有 3 个水平的因子 X,即 H、L 和 M。如果我使用 lm(Y~X)
函数在 R 中进行方差分析,则默认设置是将 H 视为参考组或基线。我的问题是是否有内置语法将 L 设置为基线。请注意,我知道我们可以使用指标函数来实现这一目标。我正在寻找的是 lm
函数的一些简单调整。谢谢!
尝试这样的事情
lm(Y~X, contrasts = list(X = "contr.treatment"))
其他选项是
contr.sum
contr.SAS
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
我认为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
假设我们有一个具有 3 个水平的因子 X,即 H、L 和 M。如果我使用 lm(Y~X)
函数在 R 中进行方差分析,则默认设置是将 H 视为参考组或基线。我的问题是是否有内置语法将 L 设置为基线。请注意,我知道我们可以使用指标函数来实现这一目标。我正在寻找的是 lm
函数的一些简单调整。谢谢!
尝试这样的事情
lm(Y~X, contrasts = list(X = "contr.treatment"))
其他选项是
contr.sum
contr.SAS
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
我认为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