R中线性混合效应模型中的交互项

机器算法验证 r 混合模式 相互作用 lme4-nlme
2022-04-02 01:31:18

我试图通过线性混合模型分析来分析两个分类变量 (landusespecies) 对连续变量 ( ) 的影响。carbon研究地点作为随机效应包含在模型中(具有随机斜率和随机截距)。土地利用、物种(及其相互作用)作为固定效应包括在内。

模型是这样的——

model1 = lmer(carbon ~ species*landuse + (1+landuse|site), data)

我知道土地利用和物种之间可能存在相互作用。我知道相互作用的存在可以改变对主要影响的解释。我想知道如果土地利用和物种之间存在显着的相互作用,我该怎么办?在这种情况下,我是否使用以下模型分别研究土地利用对每个物种的影响 -

model.sp1 = lmer(carbon ~ landuse + (1+landuse|site), data.sp1)

并为所有六个物种重复这个?由于运行多个测试,我是否需要任何形式的校正(p 值)?

另一个问题是,如果交互项不显着,我是否可以解释主要影响,model1或者我是否可以运行另一个model2没有交互影响的模型 ( ) 并从那里解释主要影响?

model2 = lmer(carbon ~ species + landuse + (1+landuse|site), data)

我对混合模型和 R 相当陌生,所以请原谅我的天真!

PS - 澄清一下,我对交互的含义以及如何解释它有一个相当好的想法。我不知道如何在存在交互作用的情况下解释主效应 - 我是否需要运行单独的分析来解释主效应。

1个回答

这是我要做的:

首先,我会在这里看看如何在你的model1. 我不太确定你想适应什么。CV 上还有很多关于线性混合效应模型的信息。点击标签,您也提供了。如果您可以提供示例数据集,或者至少提供数据结构,这也会有所帮助。

然后,您很可能只需要一个模型,大概是以下形式:

my_model <- lmer(carbon ~ species + landuse + species : landuse + (1|site), data = mydata)

我将随机效应指定为+ (1|site),因为您说:

研究地点作为模型中的随机效应包括在内。

要获取 ANOVA 表,您可以执行以下操作:

library(car)
Anova(my_model)

或者:

library(afex)
mixed(carbon ~ species + landuse + species : landuse + (1|site), data = mydata)

或者不是lmer()通过lme4包运行,而是加载lmerTest包并运行:

my_model <- lmer(carbon ~ species + landuse + species : landuse + (1|site), data = mydata)
anova(my_model) 

这将为您提供最终可能需要的 ANOVA 表。请务必查看这些函数及其参数 ( ?Anova, ?mixed, ?lmerTest::anova)。

我不太明白为什么要排除species相互作用是否显着并为所有物种运行单独的模型?!

但是,如果您的主要影响不显着,您可以考虑将它们扔掉并重新运行仅包含交互的模型。但是,如果一个或两个主要影响显着,我会将它们都保留在模型中,并将其与潜在的显着交互作用一起报告。

无论如何,如果你有一个重要的交互,你应该专注于解释交互而不是主要影响,因为它们的解释现在可能会产生误导。交互的解释应该从可视化开始。例如,您可以使用包emmip()中的函数来执行此操作emmeans

library(emmeans)
emmip(my_model, landuse ~ species)

关于 p 值的调整,只有在跟进post-hoc tests时才需要这样做

这可以通过emmeans()函数(也来自emmeans包)来完成:

emmeans(my_model, pairwise ~ species : landuse)