【问题标题】:Marginal Effect from svyglm object with a subsample in R来自 svyglm 对象的边际效应与 R 中的子样本
【发布时间】:2021-03-08 10:59:55
【问题描述】:

我需要计算通过 R 包 survey 中的 svyglm 函数估计的广义线性模型 (family=Poisson) 的边际效应,用于子样本。

首先,我声明了调查设计:

myDesisgn = svydesign(id=data$id, strata=data$strata, weights=data$sw, data=data)

其次,我估计我的模型为:

fit = svyglm(y~ x1 +x2,  design=myDesisgn, data=data, subset= x3 == 1, family= poisson(link = "log"))

最后,当我想获得 x1 的平均边际效应时,我运行:

summary(margins(fit, variables = "x1", design=myDesisgn))

...但我收到以下错误消息:

"h(simpleError(msg, call)) 中的错误: 在为函数“summary”选择方法时评估参数“object”时出错:“x”和“w”必须具有相同的长度”

运行以下也不起作用:

summary(margins(fit, variables = "x1", design=myDesisgn, subset=x3==1))

【问题讨论】:

    标签: r marginal-effects


    【解决方案1】:

    解决方案:

    summary(margins(fit, variables = "x1", design=myDesisgn[myDesisgn$variables$x3 == 1]))
    

    对复杂调查进行子集化会导致误差估计出现问题。当对特定子样本的参数感兴趣时,应使用所需的子样本来估计感兴趣的参数,并使用完整样本来估计其误差。

    例如,svyglm(y~x, data=data, subset = z == 1) 正是这样做的(beta_hat 使用 z=1 的观察值进行估计,而 se(beta_hat) 使用完整样本)。

    对 svy 设计进行子集化是可能的,它保留了有关集群数量、层数的原始设计信息。上面显示的代码是这样做的“手动”方式。另一种可以直接依赖subset.survey.design {survey}函数。

    myDesign_subset <- subset(myDesign, data$x3 == 1)
    

    这两种方法是等效的,并且会产生正确的 z-stats。

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 2014-11-08
      • 2021-07-21
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多