如何在R的survey包中基于复杂抽样设计估计IV Probit模型?
在R的survey包框架下估计复杂抽样的IV Probit模型
为什么你之前的两阶段Probit方法不可行
直接分阶段用svyglm拟合Probit的做法本质是两阶段Probit(2SP),这种方法存在两个核心问题:
- 未考虑Probit模型的非线性特性,会产生估计偏误
- 第二阶段的标准误没有针对内生性和复杂抽样设计做调整,导致标准误估计错误,进而影响统计推断的可靠性
可行的解决方案
由于survey包本身没有原生的IV Probit函数,我们可以通过以下两种方法结合复杂抽样设计完成估计:
方法1:结合survey设计与GMM估计(推荐)
GMM(广义矩估计)适合处理非线性IV模型,且能兼容复杂抽样的权重、聚类/分层结构。我们可以用gmm包配合survey的设计信息实现:
library(survey) library(gmm) # 从survey设计对象中提取所需信息 dat <- survey_design$variables sampling_weights <- weights(survey_design) cluster_ids <- survey_design$cluster$cluster # 定义IV Probit的矩条件函数 # 假设:y是二分类因变量,x1是外生变量,x2是内生变量,z1/z2是工具变量 ivprobit_moment <- function(beta, data, weights) { y <- data$y # 构造自变量矩阵(截距项+外生变量+内生变量) x_matrix <- cbind(1, data$x1, data$x2) # 构造工具变量矩阵(截距项+外生变量+工具变量) z_matrix <- cbind(1, data$x1, data$z1, data$z2) # 计算Probit的预测概率 probit_pred <- pnorm(x_matrix %*% beta) # 生成矩条件并乘以抽样权重 moments <- z_matrix * (y - probit_pred) return(moments * weights) } # 用线性IV模型的结果作为GMM的初始值 linear_iv_init <- coef(svyglm(y ~ x1 + x2 | x1 + z1 + z2, design = survey_design, family = gaussian()))[1:3] # 运行GMM估计,指定聚类稳健标准误匹配抽样设计 gmm_result <- gmm(ivprobit_moment, x = dat, t0 = linear_iv_init, weights = sampling_weights, vcov = "cluster", cluster = cluster_ids) # 查看估计结果 summary(gmm_result)
方法2:用AER包的ivprobit配合抽样权重与聚类标准误
如果你更习惯用现成的IV Probit函数,可以用AER包的ivprobit,手动传递survey设计的权重和聚类信息,再调整标准误:
library(AER) library(survey) library(lmtest) # 提取数据、抽样权重和聚类变量 dat <- survey_design$variables dat$sampling_weights <- weights(survey_design) cluster_ids <- survey_design$cluster$cluster # 估计IV Probit模型,指定抽样权重 ivprobit_fit <- ivprobit( formula = y ~ x1 + x2 | x1 + z1 + z2, data = dat, weights = sampling_weights ) # 计算匹配抽样设计的聚类稳健标准误 cluster_vcov <- vcovCL(ivprobit_fit, cluster = cluster_ids) # 输出带正确标准误的结果 coeftest(ivprobit_fit, vcov = cluster_vcov)
关键注意事项
- 工具变量有效性检验:必须确保工具变量与内生变量显著相关(可通过第一阶段线性回归的F检验验证),且与误差项无关(需依托理论或额外检验)
- 分层抽样的调整:如果你的survey设计包含分层,可在GMM或标准误计算中加入分层参数(比如
gmm()的strata参数,或vcovCL()的strata参数) - 避免两阶段Probit:再次强调,分阶段拟合的方法无法正确处理非线性模型的内生性和复杂抽样的标准误,绝对不能用于正式分析
内容的提问来源于stack exchange,提问作者Kikiko14
相关产品推荐
相关产品推荐

