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

statsmodels OLS返回的params数组元素含义咨询

理解OLS回归中Res.params返回2x2数组的含义

嘿,我来帮你搞清楚这个问题~ 你遇到的Res.params是2x2数组的情况,核心原因是你的因变量Y是一个二维数组,statsmodels的OLS会对Y的每一列单独拟合一个回归模型,所以参数数组的每一列对应一个因变量的回归结果。

先拆解你的参数数组

你得到的Res.params结果是:

array([[ 1.10000000e+01, 8.00000000e+00],
       [ 5.37764278e-17, 3.00000000e+00]])

这里的维度对应关系是:

  • 行:对应自变量(第一行是截距项,第二行是你输入的自变量X的系数)
  • 列:对应Y的每一列(也就是每个独立的因变量)

所以具体元素含义:

  • params[0][0]:Y第一列对应的回归截距项
  • params[1][0]:Y第一列对应的自变量X的斜率系数(这个极小值是浮点运算的误差,实际近似0)
  • params[0][1]:Y第二列对应的回归截距项(也就是你预期的8)
  • params[1][1]:Y第二列对应的自变量X的斜率系数(也就是你预期的3)

为什么Y会是二维数组?

看你代码里的这行:

Y = (X * 3) + 8

你之前用sm.add_constant(X)把X变成了20行2列的数组(第一列是全1的常数项,第二列是0-19的序列),所以X*3会得到一个20x2的数组,再加8后Y依然是20x2的二维数组——相当于你同时给了两个因变量,statsmodels自然会分别拟合两个回归模型。

如何得到你预期的一维参数数组?

如果你只想拟合单个因变量,只需要基于原来的自变量(也就是X的第二列)计算Y,把Y变成一维数组即可:

import statsmodels.api as sm
import numpy as np

X = np.arange(0, 20)
X = sm.add_constant(X)
# 取X的第二列(原始自变量)计算Y,得到一维数组
Y = (X[:, 1] * 3) + 8
Res = sm.OLS(Y, X).fit()
print(Res.params)  # 输出会是一维数组 [8. 3.],和你预期一致

内容的提问来源于stack exchange,提问作者R.yan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:32