R 中带有子样本的 svyglm 对象的边际效应
Marginal Effect from svyglm object with a subsample in R
我需要通过 R 包 survey
中的 svyglm
函数估计子样本的广义线性模型(系列=泊松)来计算边际效应。
首先,我声明了调查设计:
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))
解决方案:
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。
我需要通过 R 包 survey
中的 svyglm
函数估计子样本的广义线性模型(系列=泊松)来计算边际效应。
首先,我声明了调查设计:
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))
解决方案:
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。