计算具有异方差性的组的标准误

时间:2021-07-31 16:38:50

标签: r standard-error

我正在尝试计算几个实验组的标准误差 (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 的误解?

1 个答案:

答案 0 :(得分:0)

不带 gls() 参数的 weights 调用就像 lm() 调用一样,因为它默认为同方差模型。特别是,我建议添加 weights = varIdent(form = ~ 1 | History*Treatment)。请参阅 varIdent 的文档,然后再看一下 FAQs vignette in emmeans