R语言MatchIt包汇报效应值与系数t检验表数值不符问题咨询
问题原因与统计量获取方法
你当前输出的结果是匹配后将全部协变量纳入线性回归得到的条件处理效应,和教程中汇报的「处理组平均处理效应(ATT)」属于不同的估计目标,且你没有对匹配带来的样本非独立性做标准误调整,因此数值无法对应。教程中$1980(SE = 756.1, p = .009)的结果可以按以下路径复现:
- 第一步:确认匹配参数与教程完全一致
教程默认使用1:1无放回最近邻匹配,估计目标为ATT,倾向得分通过logit模型拟合,匹配协变量为age、educ、种族、婚姻状态、是否无学位、1974年收入、1975年收入。如果你修改了匹配比例、是否放回、距离计算规则,或是将估计目标设为ATE,结果会出现偏移。 - 第二步:使用匹配权重+聚类稳健标准误估计未调整ATT,不要在结果模型中额外纳入协变量
你当前直接在匹配后样本上跑含全部协变量的普通OLS,既估计的是条件效应而非边际ATT,又默认匹配样本相互独立,会低估标准误,和教程结果产生偏差。可以直接运行以下代码得到目标统计量(假设你存储匹配结果的对象名为m.out,结果变量为1978年收入re78):
上述代码输出的估计值、标准误、p值即教程中汇报的对应统计量。library(marginaleffects) # 提取匹配后数据集,拟合仅含处理变量的结果模型,指定匹配权重 fit <- lm(re78 ~ treat, data = match.data(m.out), weights = weights) # 针对处理组样本计算ATT,按配对ID聚类调整标准误 avg_comparisons( fit, variables = "treat", vcov = ~subclass, newdata = subset(match.data(m.out), treat == 1) ) - 结果差异的核心原因
- 估计目标不同:你当前的结果是协变量调整后的条件效应,教程汇报的是未做额外协变量调整的边际ATT
- 标准误计算逻辑不同:你使用的普通OLS默认样本独立,没有考虑匹配形成的配对相关性,会低估标准误,因此得到的SE更小、p值更显著,和教程经聚类调整的结果存在差异。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

