我已经查看了R中的lsmeans
包。包描述说明如果安装了pbkrtest
包,那么对于lme4
个对象,F测试的自由度是根据肯沃德和罗杰调整。
但是,安装并加载pbkrtest
包后,自由度仍然是默认值(渐近):
示例:
require(lsmeans)
require(nlme)
require(pbkrtest)
Oats.lme <- lme(yield ~ factor(nitro) + Variety, random = ~1 | Block/Variety,
subset = -c(1,2,3,5,8,13,21,34,55), data = Oats)
lsmeans(Oats.lme, list(poly ~ nitro, pairwise ~ Variety))
输出:
$`lsmeans of nitro`
nitro lsmean SE df asymp.LCL asymp.UCL
0.0 78.89205 7.280578 NA 64.62065 93.16344
0.2 97.03422 7.128674 NA 83.06058 111.00785
0.4 114.19813 7.128853 NA 100.22415 128.17212
0.6 124.06857 7.067271 NA 110.21529 137.92184
...
P值是渐近的
...
我正在使用R版本3.02并且新安装了软件包。
packageVersion("lsmeans")
[1] '2.0.4'
答案 0 :(得分:4)
?lsmeans
个州(强调补充)
对于使用'lme4'软件包的模型,使用Kenward-Roger(1997)方法获得自由度,如果已安装,则使用'pbkrtest'软件包中实现的方法。如果未安装“pbkrtest”,则将自由度设置为“NA”并显示渐近结果。
这意味着您必须使用lme4::lmer
而不是nlme::lme
才能适合您的模型。
require(lsmeans)
require(lme4)
require(pbkrtest)
Oats.lmer <- lmer(yield ~ factor(nitro) + Variety+
(1 | Block/Variety),
subset = -c(1,2,3,5,8,13,21,34,55), data = Oats)
lsmeans(Oats.lmer, list(poly ~ nitro, pairwise ~ Variety))
结果确实调整了df:
## $`lsmeans of nitro`
## nitro lsmean SE df lower.CL upper.CL
## 0.0 78.89207 7.294379 7.78 61.98930 95.79484
## 0.2 97.03425 7.136271 7.19 80.25029 113.81822
## 0.4 114.19816 7.136186 7.19 97.41454 130.98179
## 0.6 124.06857 7.070235 6.95 107.32795 140.80919