调用sm.ols处理数组执行线性回归报错,寻求解决方案
解决statsmodels OLS数组调用报错的问题
你搞混了statsmodels里两个不同的OLS接口:
- 小写的
sm.ols()是公式化接口,必须传formula和data参数,专门适配数据框场景,所以你传数组和endog/exog会触发参数缺失报错。 - 大写的
sm.OLS()才是数组专用接口,支持用endog(因变量)和exog(自变量)传递数组数据。
另外要注意:statsmodels的OLS默认不会自动给自变量加截距项,如果你需要包含截距,得手动用sm.add_constant()给自变量数组添加一列常数项。
正确代码示例
import statsmodels.api as sm # 假设你的两个变量数组 dose = [1, 2, 3, 4, 5] consumption = [2, 4, 5, 7, 8] # 给自变量dose添加截距项(不需要截距可跳过此步) x = sm.add_constant(dose) y = consumption # 用大写OLS接口初始化模型 model = sm.OLS(endog=y, exog=x) # 拟合模型并生成回归摘要 results = model.fit() print(results.summary())
如果不需要截距项,直接传入原始自变量数组即可:
model = sm.OLS(endog=consumption, exog=dose) results = model.fit() print(results.summary())
内容的提问来源于stack exchange,提问作者buddy0813
相关产品推荐
相关产品推荐

