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

R中marginaleffects::predictions置信区间计算差异问题咨询

关于marginaleffects包工具变量模型置信区间与手动计算差异的问题

模型设定与估计代码

我采用工具变量法估计包含内生变量二次项的回归模型,公式为:
$Y = b_1 \times \text{endogenous} + b_2 \times \text{endogenous}^2 + b_3 \times \text{controls} + \text{error}$

使用fixest包的feols()函数完成模型估计,代码如下:

model <- feols(outcome ~ control1 + control2 + control3 + control4 |
                    fixed_effect1 + fixed_effect2 |
                    endogenous + I(endogenous^2) ~ instrument + I(instrument^2) ,
                  data = dataset,  se = "cluster", cluster = "cluster_id")

模型估计结果

变量估计值标准误
fit_endogenous-0.0416265700.156600333
fit_I(endogenous^2)0.0373135360.264656733
control10.0033027890.001053634
control2-0.0041760990.003436881
control30.0003202320.000164557
control4-0.0000002700.000000127

问题描述

我关注endogenous(记为X)的边际效应,当X=0时,边际效应的方差应为$\text{Var}(b_1)$,对应的95%置信区间宽度手动计算为:
2*1.96*0.156600333=0.6138733

但运行marginaleffects::predictions(model, newdata = datagrid(endogenous = c(0, 1)))得到如下结果:

endogenousEstimateStd. ErrorCI 2.5 %CI 97.5 %
09.040.1658.719.36
19.030.2038.649.43

X=0时置信区间宽度为9.36-8.71=0.65,明显大于手动计算值,想了解差异原因。


原因分析与解决方案

1. 函数用途混淆:预测值vs边际效应的置信区间

你手动计算的是边际效应的置信区间,但marginaleffects::predictions()默认输出的是Y的预测值的置信区间,两者计算逻辑完全不同:

  • 边际效应的方差仅与核心解释变量(endogenous及其平方项)的系数方差、协方差相关;
  • 预测值的方差则包含所有控制变量系数的方差、固定效应的估计误差,以及模型整体的误差项贡献,范围远大于单个系数的方差。

2. IV模型与聚类标准误的方差传递

你的模型是工具变量估计且使用了聚类标准误:

  • IV模型的方差计算会包含第一阶段回归的方差传递,marginaleffects会完整调用fixest输出的全方差协方差矩阵,包含所有变量系数间的协方差;
  • 聚类标准误的调整会进一步影响方差估计结果,而你手动计算时仅使用了单个系数的标准误,未考虑这些复杂的方差成分。

3. datagrid默认取值的额外方差贡献

datagrid()默认将控制变量设为均值/中位数等代表性值,这些控制变量的系数本身存在方差,会被纳入预测值的方差计算中,这也是你手动计算时忽略的部分。

正确获取边际效应置信区间的方法

若需计算endogenous的边际效应及其置信区间,应使用marginaleffects::marginaleffects()函数,其计算逻辑与你手动推导一致:

marginaleffects(model, newdata = datagrid(endogenous = c(0, 1)))

该函数会直接计算$\frac{\partial Y}{\partial X} = \hat{b}_1 + 2X\hat{b}_2$的估计值、标准误和置信区间,自动调用模型的方差协方差矩阵计算边际效应的方差:$\text{Var}(\hat{b}_1 + 2X\hat{b}_2) = \text{Var}(\hat{b}_1) + 4X^2\text{Var}(\hat{b}_2) + 4X\text{Cov}(\hat{b}_1, \hat{b}_2)$。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:32:07