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

statsmodels中拟合无截距多元线性回归后,能否模拟预测值分布?

用statsmodels GLM拟合无截距多元线性回归并模拟预测值分布

完全可以做到,下面是具体的实现步骤和示例:

1. 拟合无截距的GLM线性回归模型

多元线性回归本质是GLM的特例——使用高斯族(Gaussian)和恒等链接函数(identity link)。要去掉截距项,只需确保自变量矩阵不包含常数项,或者在公式接口中加入-1。

代码示例(矩阵接口)

import statsmodels.api as sm
import numpy as np

# 生成模拟数据(无截距设定)
np.random.seed(42)
x1 = np.random.normal(0, 1, 100)
x2 = np.random.normal(0, 1, 100)
y = 2*x1 + 3*x2 + np.random.normal(0, 0.5, 100)  # 真实系数2、3,误差方差0.25

# 构造自变量矩阵(不含常数项)
X = np.column_stack((x1, x2))

# 拟合GLM模型
model = sm.GLM(y, X, family=sm.families.Gaussian(link=sm.genmod.families.links.identity()))
results = model.fit()
print(results.summary())

公式接口写法

如果用Pandas DataFrame,可以通过公式去掉截距:

import pandas as pd
data = pd.DataFrame({'y': y, 'x1': x1, 'x2': x2})
model = sm.GLM.from_formula('y ~ x1 + x2 -1', data=data, family=sm.families.Gaussian())
results = model.fit()

2. 模拟预测值的分布

预测值的分布由拟合均值和模型假设的误差分布共同决定。以高斯族为例,预测值 = 拟合均值 + 正态分布误差;如果是其他分布(如泊松、二项),则直接从对应分布中采样。

高斯族的模拟步骤

  1. 从拟合结果中提取系数results.params和误差方差results.scale(即残差的估计方差)
  2. 对目标输入X_new计算拟合均值mu = X_new @ results.params
  3. 从N(0, sqrt(results.scale))中采样误差项,与均值相加得到模拟预测值
  4. 重复多次采样,得到完整的预测值分布

模拟代码示例

import matplotlib.pyplot as plt

# 定义待预测的新输入样本
X_new = np.array([[1, 2], [0.5, -1]])  # 两个不同的输入组合

# 模拟10000次预测,生成分布
n_sim = 10000
pred_distributions = []

for x_sample in X_new:
    mu = x_sample @ results.params
    # 采样误差并生成预测值
    errors = np.random.normal(0, np.sqrt(results.scale), n_sim)
    simulated_preds = mu + errors
    pred_distributions.append(simulated_preds)

# 可视化第一个样本的预测分布
plt.hist(pred_distributions[0], bins=50, alpha=0.7, label='预测值分布 ([1,2])')
plt.axvline(mu, color='red', linestyle='--', label='拟合均值')
plt.xlabel('预测值')
plt.ylabel('频次')
plt.legend()
plt.show()

注意事项

  • 如果使用其他GLM族(如泊松、二项),模拟逻辑要对应调整:比如泊松族直接从np.random.poisson(mu, n_sim)采样,无需加误差项
  • results.get_prediction()可以直接输出预测的置信/预测区间,但模拟分布能更直观展示整体的概率分布形态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:20:38