我正在尝试计算几个实验组的标准误差 (SE),以便绘制图表。然而,数据不满足方差的同质性——处理之间的适应度方差差异非常大,无法通过我尝试过的转换来解决。
我的模型非常简单:Fitness ~ History * Treatment
。
在 R 中,我尝试将 emmeans
与我的模型一起用作 lm,这为每个组提供了与预期完全相同的 SE,因为它假定方差是同质的。我已经读过包 nlme
的 gls 函数应该通过允许方差的异质性来解决这个问题 here,但即使在 emmeans
上运行 nlme::gls()
也会给出非常相似的 SE组(如下)。
> SM2 <- gls(Seed_mass_mg~History*Treatment, data1, na.action = na.omit)
emmeans(SM2, ~History * Treatment)
History Treatment emmean SE df lower.CL upper.CL
ancestral drought 35.0 5.93 909 23.3 46.6
dry drought 56.3 6.29 909 44.0 68.7
wet drought 39.1 6.12 909 27.1 51.1
ancestral watered 102.9 6.02 909 91.1 114.8
dry watered 131.0 6.38 909 118.5 143.6
wet watered 140.2 5.97 909 128.4 151.9
Degrees-of-freedom method: df.error
Confidence level used: 0.95
然而,当我通过公式计算 SE 时,我得到了完全不同的 SE:
History Treatment Seed_mass_mg_SE
Ancestral Watered 7.008392
Ancestral Drought 1.60024
Drought Watered 8.693766
Drought Drought 2.740732
Watered Watered 9.229806
Watered Drought 2.234901
谁能帮我理解我对 SE 的误解?
答案 0 :(得分:0)
不带 gls()
参数的 weights
调用就像 lm()
调用一样,因为它默认为同方差模型。特别是,我建议添加 weights = varIdent(form = ~ 1 | History*Treatment)
。请参阅 varIdent
的文档,然后再看一下 FAQs vignette in emmeans。