为什么VarCorr无法为lmerModLmerTest、glmerMod对象输出方差值?
你遇到的问题是参数调用位置错误导致的:comp 不属于 VarCorr() 函数本身的入参,而是 VarCorr 类对象对应 print() 方法的参数,直接把 comp 传入 VarCorr() 不会生效,因此不管你怎么修改 comp 的取值,默认打印结果都只会输出标准差。
解决方案
方案1:打印时指定参数
你可以在打印时给print方法传入comp参数,即可同时输出方差和标准差:
# 示例,针对glmer模型gm2 print(VarCorr(gm2), comp = c("Variance", "Std.Dev."))
运行后输出结果和summary里的随机效应部分完全一致:
Groups Name Variance Std.Dev. herd (Intercept) 0.4123 0.6421
方案2:直接提取数值用于后续计算
如果需要把方差、标准差存为变量做后续分析,可以直接将VarCorr返回的对象转为数据框后提取对应字段:
# 转为数据框 vc_df <- as.data.frame(VarCorr(gm2)) # 提取herd随机截距的方差 herd_variance <- vc_df[vc_df$grp == "herd" & vc_df$var1 == "(Intercept)", "vcov"] # 提取对应标准差 herd_sd <- vc_df[vc_df$grp == "herd" & vc_df$var1 == "(Intercept)", "sdcor"]
内容的提问来源于stack exchange,提问作者canderson156
相关产品推荐
相关产品推荐

