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

R中glmmTMB模型聚类稳健标准误报错:非数值二元运算符参数

解决glmmTMB模型调用vcovCR计算CR2稳健标准误的报错问题

1. 报错是否源于vcov(model)返回的列表结构?

是的,这就是报错的核心原因。vcovCR(来自clubSandwich包)默认要求模型对象的vcov()方法返回单个数值矩阵,但glmmTMB的vcov()会返回一个分块列表(包含cond子矩阵对应固定效应的方差-协方差、varcor对应随机效应的方差成分等)。当vcovCR内部执行nobs0(x) * vcov0(x, ...)时,试图用观测数(数值)乘以列表,自然会触发"非数值参数参与二元运算"的错误。

2. 解决方法

根据你的需求(仅固定效应/含随机效应),可以选择以下两种方案:

方案一:仅计算固定效应的CR2稳健标准误

直接提取glmmTMB模型中固定效应的方差-协方差矩阵,传入vcovCR的vcov参数:

# 提取固定效应的vcov矩阵
cond_vcov <- vcov(mixed_logit)$cond
# 调用vcovCR并指定vcov参数
robust_se <- vcovCR(mixed_logit, cluster = data_used$id, type = "CR2", vcov = cond_vcov)
# 查看带稳健标准误的系数结果
coef_test(robust_se)

方案二:针对包含随机效应的模型适配

将glmmTMB模型转换为lme4的merMod类对象(vcovCR对这类对象的支持更完善),再执行计算:

# 转换模型对象类型
mixed_logit_mer <- glmmTMB::as.merMod(mixed_logit)
# 计算CR2聚类稳健标准误
robust_se <- vcovCR(mixed_logit_mer, cluster = data_used$id, type = "CR2")
# 查看结果
coef_test(robust_se)

注意:转换后部分模型属性可能丢失,建议验证结果与原模型的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:32:41