You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从glmmTMB的VarCorr结果中提取Std.Dev.用于emmeans偏差校正

问题描述

用glmmTMB构建负二项模型后,想结合emmeans对反变换后的边际均值做偏差校正,校正需要用到随机效应的标准差。虽然VarCorr(nbinom_mod)能显示这个标准差数值,但试了多种方法都没法正确提取,导致没法传给emmeans的sigma参数。

解决方案

1. 正确提取随机效应标准差

VarCorr()返回的对象里,每个随机效应组的方差-协方差矩阵带有stddev属性,用attr()就能直接提取:

# 提取herd组随机效应的标准差
rand_std_dev <- attr(VarCorr(nbinom_mod)$cond$herd, "stddev")

执行后rand_std_dev会得到你需要的9.048036e-05,也就是输出里的Std.Dev.值。

2. 传入emmeans完成偏差校正

把提取到的标准差数值传给emmeans()的sigma参数就行:

nbinom_em <- emmeans(nbinom_mod, ~ period, 
               bias.adjust = TRUE,
               sigma = rand_std_dev,
               type = "response")
补充说明
  • 之前用unlist(VarCorr(nbinom_mod))或者直接取矩阵元素,得到的是随机效应的方差(8.186695e-09),不是标准差。标准差是方差的平方根,也可以用sqrt(8.186695e-09)计算,但直接提取属性更准确省事。
  • 如果模型有多个随机效应组,把$cond$herd改成目标组的名字,就能提取对应组的标准差。

内容的提问来源于stack exchange,提问作者myfatson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:53:14