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

如何用rddtools实现预设带宽?基于Card等人医保数据的问题

问题分析与解决方案

首先,你遇到的核心问题是带宽设置未生效,导致两个回归结果完全一致——这是因为你错误地在covar.opt参数里指定了bw=2,而covar.opt是用来配置协变量处理逻辑(比如中心化、标准化)的参数组,根本不负责限制RDD分析的样本带宽范围。

修正代码:正确设置2年带宽(ageyrs 64-66)

你需要明确:2年带宽对应断点(65)前后各1年的样本范围(64≤ageyrs≤66)。有两种可靠的实现方式:

方法1:手动筛选样本后创建RDD对象

先从原始数据中提取符合带宽要求的观测,再构建RDD对象进行回归:

load(file ="C:/Users/perdue/Desktop/Adv.MicroEconometrics/HA 9/medicare.Rdata")

# 筛选断点前后1年的样本(64到66岁)
medicare_bw2 <- subset(medicare, ageyrs >= 64 & ageyrs <= 66)

# 基于筛选后的样本创建RDD对象
rd.medic.1 <- rdd_data(y=er, x=ageyrs, covar=ageyrs, cutpoint=65, data = medicare_bw2)

# 带协变量的同斜率回归(使用筛选后的样本)
rd.reg.1c <- rdd_reg_lm(rdd_object=rd.medic.1, covariates = "ageyrs", slope = "same")

# 全样本回归(用于对比)
rd.medic.full <- rdd_data(y=er, x=ageyrs, covar=ageyrs, cutpoint=65, data = medicare)
rd.reg.1a <- rdd_reg_lm(rdd_object=rd.medic.full, covariates = "ageyrs", slope = "same")

# 输出结果对比
stargazer(rd.reg.1c, rd.reg.1a, type="text")

方法2:直接在回归函数中指定带宽

rddtools的rdd_reg_lm函数支持通过bw参数直接指定断点两侧的带宽(单位与x变量一致),这里bw=1就表示断点前后各1年,总带宽2年:

load(file ="C:/Users/perdue/Desktop/Adv.MicroEconometrics/HA 9/medicare.Rdata")

# 基于全样本创建RDD对象
rd.medic.1 <- rdd_data(y=er, x=ageyrs, covar=ageyrs, cutpoint=65, data = medicare)

# 指定带宽为1(前后各1年)的回归
rd.reg.1c <- rdd_reg_lm(rdd_object=rd.medic.1, covariates = "ageyrs", slope = "same", bw=1)

# 全样本回归(对比用)
rd.reg.1a <- rdd_reg_lm(rdd_object=rd.medic.1, covariates = "ageyrs", slope = "same")

stargazer(rd.reg.1c, rd.reg.1a, type="text")

补充资料建议

除了CRAN官方文档,你可以参考这些更详细的资源:

  • rddtools的GitHub仓库中的vignettes:里面有完整的RDD分析流程示例,包括带宽选择、模型诊断的细节,代码可直接复用
  • 学术书籍《Regression Discontinuity Designs: A Guide to Practice》:书中有专门章节讲解rddtools的使用,结合实际案例解释参数逻辑
  • 经济学领域的R博客:比如部分应用计量博客会分享RDD实操教程,其中会涉及rddtools带宽设置的常见坑点

你的原始回归结果:

===========================================================
Dependent variable:
----------------------------
y
(1) (2)
-----------------------------------------------------------
D 9.175*** 9.175***
(3.243) (3.243)
x 14.342*** 14.342***
(0.565) (0.565)
ageyrs
Constant 479.508*** 479.508***
(2.035) (2.035)
-----------------------------------------------------------
Observations 120 120
R2 0.965 0.965
Adjusted R2 0.964 0.964
Residual Std. Error (df = 117) 8.746 8.746
F Statistic (df = 2; 117) 1,605.695*** 1,605.695***
===========================================================
Note: *p<0.1; **p<0.05; ***p<0.01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:40:11