lmer线性混合模型输出缺失Camp分组,如何显示全部4个营地?
问题原因
这是R中线性混合模型的默认行为:当模型包含分类变量(比如你的Camp)时,R会自动选择该变量的某一个水平作为参考组,不在summary()输出中显示它的系数——你看到缺失的Dos Naciones就是被默认选为参考组的水平,其他三个营地的系数都是和它的差值。
解决方法
下面提供几种常用的方式来显示所有4个营地的效应:
方法1:修改分类变量的对比方式
通过设置总和对比(sum-to-zero contrasts),让所有组的系数都显示出来(此时每个组的系数代表该组与总体均值的差异):
# 为Camp变量设置总和对比 contrasts(DataAbunAllHerps$Camp) <- contr.sum(nlevels(DataAbunAllHerps$Camp)) # 重新拟合模型(复制你原来的公式即可) AllHerps <- lmer(Abun_All_Herps ~ Total_Saplings * Total_Understorey_Vegetation * Tree_Species_Richness * Mean_DBH * Total_Basal_Area * Mean_Canopy_Openess * Mean_Leaf_Litter_Depth + Aguada_Distance_Category * Camp + (1|Year), data=DataAbunAllHerps) # 查看结果 summary(AllHerps)
方法2:指定自定义参考组
如果你想保留默认的对比方式,但让其他营地作为参考组,从而显示Dos Naciones的系数,可以用relevel()函数重新指定参考组:
# 将参考组改为CampKM20(你可以换成任意其他营地) DataAbunAllHerps$Camp <- relevel(DataAbunAllHerps$Camp, ref = "CampKM20") # 重新拟合模型并查看结果 AllHerps <- lmer(Abun_All_Herps ~ Total_Saplings * Total_Understorey_Vegetation * Tree_Species_Richness * Mean_DBH * Total_Basal_Area * Mean_Canopy_Openess * Mean_Leaf_Litter_Depth + Aguada_Distance_Category * Camp + (1|Year), data=DataAbunAllHerps) summary(AllHerps)
方法3:用边际均值查看各组效应
如果想更直观地看到每个营地对应的爬行动物丰度预测值,可以使用emmeans包:
# 若未安装emmeans,先执行安装 # install.packages("emmeans") library(emmeans) # 获取Camp各组的边际均值及置信区间 emmeans(AllHerps, ~ Camp)
内容的提问来源于stack exchange,提问作者Hefin
相关产品推荐
相关产品推荐

