数据集的Days
变量sleepstudy
是数字的。因此它对应于模型中的一个斜率M1: Reaction ~ Days + (1|Subject)
。让我们通过与包的比较来测试Days
效果:M1
M0: Reaction ~ (1|Subject)
pbkrtest
library(lme4)
data("sleepstudy")
M1 <- lmer(Reaction ~ Days + (1|Subject), data=sleepstudy)
library(pbkrtest)
M0 <- lmer(Reaction ~ (1 | Subject), data=sleepstudy)
那么我们得到 161 个 Kenward-Roger 自由度:
> KRmodcomp(M1, M0)
F-test with Kenward-Roger approximation; computing time: 0.30 sec.
large : Reaction ~ Days + (1 | Subject)
small : Reaction ~ (1 | Subject)
stat ndf ddf F.scaling p.value
Ftest 169.4 1.0 161.0 1 < 2.2e-16 ***
但是当我们用 测试Days
效果时emmeans
,我们得到 17 个自由度:
> library(emmeans)
> emmeans(M1, ~ Days)
Days emmean SE df lower.CL upper.CL
4.5 298.5079 9.049936 17 279.4142 317.6016
Degrees-of-freedom method: kenward-roger
我们不应该获得相同数量的自由度吗?为什么它们不同?这两个程序都测试了斜率的无效性,不是吗?