首页 > 解决方案 > 如何测试 R 中的线性混合效应模型(lmer)是否大于 1?

问题描述

在下面的虚拟数据中,我想测试oviposition indexA 和 B 的值是否与 1 显着不同。如果我理解正确,summary(mod) 表示每个物种是否与 0 显着不同。如何更改默认值以进行测试如果它不同于1?在这里,我希望物种B与 1 显着不同,因为置信区间不包括 1

set.seed(111)
oviposition.index <- rnorm(20, 2, 1.3)
species <- rep(c("A","B"), each = 10)
month <- rep(c("Jan", "Feb"), times = 10)
plot <- rep(c("1", "2"), times = 10)
df <- data.frame(oviposition.index, species, month, plot)

mod <- lmer(oviposition.index ~ species + (1|month/plot), df)
summary(mod)

ggplot(df, aes(x = species, y = oviposition.index, color = species)) + geom_point() + geom_hline(yintercept = 1) + stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2, colour="black") + stat_summary(fun = mean, color = "black", geom ="point", size = 3,show.legend = FALSE) 

在此处输入图像描述

标签: rggplot2lmlme4mixed-models

解决方案


内特的评论

lmer(oviposition.index ~ 0 + species + (1|month/plot), df)

通过指定您想要对每个物种进行单独估计而不是对物种 A 的估计 + 对差异的估计,让您在中途取得成功,但是如果您想针对 index = 1 的零假设进行测试,您只需从响应中减去 1 :

lmer(oviposition.index - 1 ~ 0 + species + (1|month/plot), df)

您也可以添加一个偏移量(即添加+offset(rep(1, nrow(df)))到您的模型中),但是对于线性模型来说它是多余的(它对于调整零点不那么容易的 GLM 很有用)。

我要补充一点警告,在这里很容易走上一条坏路:您可能有充分的理由分别测试每个物种的重要性,但继续(可能很自然)得出结论:“物种 B 的 OI与 1 显着不同,而 A 种没有,因此它们不同”是一个错误。正如 Andrew Gelman 所说,“显着和非显着之间的差异在统计上并不显着”。


推荐阅读