Python 统计模型 : OLS regressor not predicting

标签 python regression statsmodels

我编写了以下代码,但我无法让“预测”方法发挥作用:

import statsmodels.api as sm
from statsmodels.formula.api import ols
ols_model = ols('Consumption ~ Disposable_Income', df).fit()

我的“df”是一个 pandas 数据框,其列标题为“消耗”和“Disposable_Income”。例如,当我运行时,

ols_model.predict([1000.0])

我得到:“TypeError:列表索引必须是整数,而不是 str”

例如,当我运行时,

ols_model.predict(df['Disposable_Income'].values)

我得到:“IndexError:仅整数、切片 (:)、省略号 (...)、numpy.newaxis (None )和整数或 bool 数组是有效索引”

我很困惑,因为我认为这两种格式正是文档所说的 - 放入 x 变量的值数组。我到底应该如何使用“预测”方法?

这就是我的 df 的样子: enter image description here

最佳答案

由于您使用模型中的公式,因此公式信息也将用于解释 predict 中的 exog。

我认为您需要使用具有正确名称的解释变量的数据框或字典。

ols_model.predict({'Disposable_Income':[1000.0]})

或者类似的东西

df_predict = pd.DataFrame([[1000.0]], columns=['Disposable_Income'])
ols_model.predict(df_predict)

另一种选择是,如果用于预测的完整设计矩阵(包括常数)可用,则避免预测中的公式处理

AFAIR,这也应该有效:

ols_model.predict([[1, 1000.0]],transform=False)

关于Python 统计模型 : OLS regressor not predicting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476897/

相关文章:

r - 如何在 R 的 lm() 中正确选择因变量和控件?

python - 如何在 python 中添加回归函数,或根据给定系数创建新的回归函数?

R:找不到作为参数传递的函数

python - 具有虚拟/分类变量的线性回归

python - 初学者统计数据 : Predict binary outcome of set of numbers given history (Logistic regression)

javascript - python 和 javascript 中闭包的区别

c++ - 传递要动态查找的成员

python - 如何打印所有 CSV 文件共有的列名称

python - 图片上传完成后,summernote 编辑器不显示图片

python - LogLog 回归线不是直线且对数值为负?