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

使用R的survey包在无协变量调整的简单GLM中计算预测边际

仅截距调查加权GLM使用marginpred报错的解决方法

问题场景

已加载survey和srvyr包,构建复杂调查设计并拟合仅含截距的调查加权GLM:

library(survey) # Analysis of Complex Survey Samples
library(srvyr) # 'dplyr' inspired syntactic style

# 复杂调查设计
design <- data %>% as_survey_design(ids = HOSP_NRD, weights = DISCWT, strata = NRD_STRATUM)

# 拟合仅含截距的调查加权GLM
fit_cost <- svyglm(Costs1 ~ 1, 
                   design = design,
                   family = Gamma(link = "log")) 

# 使用svypredmeans计算预测边际均值正常运行
svypredmeans(fit_cost, ~group)

但调用marginpred计算预测边际时失败:

# 尝试计算标准化预测值(预测边际)
marginpred(fit_cost,
           predictat = data.frame(group = c("a", "b")))

报错信息:

Error in eval(e[[2L]], where) : argument "adjustfor" is missing, with no default

解决方法

marginpred要求必须显式指定adjustfor参数,即使模型仅包含截距项、无协变量需要调整。此时可以将adjustfor设置为~1(代表基于截距水平调整)或NULL,即可正常运行:

# 方法1:设置adjustfor为~1
marginpred(fit_cost,
           predictat = data.frame(group = c("a", "b")),
           adjustfor = ~1)

# 方法2:设置adjustfor为NULL
marginpred(fit_cost,
           predictat = data.frame(group = c("a", "b")),
           adjustfor = NULL)

原理:当模型仅含截距时,没有额外协变量需要调整均值,显式指定adjustfor参数可以满足函数的参数校验,使其正确基于调查权重计算不同group的预测边际值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:30