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

如何计算statsmodels OLS模型X变动0.25单位的边际效应95%置信区间

我得到如下模型:
$y = \beta_0 + \beta_1 X + \beta_2 X^2 + \epsilon$
因此,X每增加1单位时输出的预期变化由下式给出:
$\frac{\partial y}{\partial X} = \beta_1 + 2\beta_2 X$
假设X的取值为40,请问如何计算X增加0.25单位时对应效应的95%置信区间?

以下是可复现示例:

# 生成数据
import pandas as pd
from scipy import stats as st
from statsmodels.api import OLS

df = pd.DataFrame({'const':1,'X':st.norm(loc=40, scale=5).rvs(1000)})
df['X_sq'] = df['X'].pow(2)
df['y'] = 1200 + df['X'] + df['X_sq'] + st.norm().rvs(1000)
df = df[['y','const','X','X_sq']]

# 声明并拟合模型
y = df['y']
X = df[['const','X','X_sq']]
m1 = OLS(endog=y, exog=X).fit()

# 设定`Xi`的取值
x = 40

# 计算`Xi`增加1单位的预测边际效应
Mg = m1.params['X'] + (2 * m1.params['X_sq'] * x)

如上,X从40增加到41时y的预期变化等于Mg。请问如何计算X边际变动0.25单位时对应的95%置信区间?
提示:可通过m1.t_test()方法实现。


解答

计算逻辑

X每变动1单位的边际效应是回归系数的线性组合:$\beta_1 + 2\beta_2 \times x$,因此X变动0.25单位的效应就是该值乘以0.25,等价于新的线性组合:$0 \times \beta_0 + 0.25 \times \beta_1 + (0.25 \times 2x) \times \beta_2$。直接调用OLS模型的t_test方法即可计算该线性组合的95%置信区间。

代码实现

在现有代码基础上补充以下内容即可:

# 构造线性组合的系数向量,顺序和模型变量顺序保持一致:const、X、X_sq
r_matrix = [0, 0.25, 0.25 * 2 * x]
# 执行t检验
test_result = m1.t_test(r_matrix)
# 提取95%置信区间
ci_95 = test_result.conf_int(alpha=0.05)

print(f"X增加0.25单位的效应95%置信区间:[{ci_95[0][0]:.4f}, {ci_95[0][1]:.4f}]")

如果需要查看对应点估计值、标准误、t值等统计量,直接打印test_result.summary()即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:06