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

使用statsmodels的OLS模型获取beta报错AttributeError,求解决

问题解决方案

错误核心原因

AttributeError是因为statsmodels的OLS拟合结果对象(OLSResults)没有名为beta的属性,回归系数实际存储在params属性中。

修正后的代码

同时需要修正代码里另外两个错误:

  • 普通OLS模型不支持window参数,该参数属于滚动回归模型
  • statsmodels默认不为自变量添加截距项,需手动添加以符合常规回归逻辑
import statsmodels.api as sm
import pandas as pd

df = pd.DataFrame({"A": [10,20,30,40,50], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]})
# 为自变量添加常数项(截距)
X = sm.add_constant(df['B'])
# 初始化普通OLS模型并拟合,移除无效的window参数
model = sm.OLS(df['A'], X).fit()
print(model.summary())
# 获取回归系数(原需求的beta值)
print(model.params)

滚动窗口回归补充

如果你的实际需求是滚动窗口回归,则需要使用RollingOLS类,示例代码如下:

from statsmodels.regression.rolling import RollingOLS

# 注意window值不能大于样本量(当前样本量为5,此处设为2)
rolling_model = RollingOLS(df['A'], X, window=2).fit()
# 获取各窗口的回归系数
print(rolling_model.params)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:50:27