【问题标题】:Python statsmodels - display regression results by groupPython statsmodels - 按组显示回归结果
【发布时间】:2017-10-20 08:54:42
【问题描述】:

我正在尝试按组运行线性回归并分别显示每个材料组的结果,包括特定材料的名称。

我的数据集有一个变量 ActYTDVol,我正在对 UnitPrice 进行回归。我使用 statsmodels 和 for-in 分别对每个材料(=组)执行此回归。

我能够运行上述回归,但是回归输出没有显示我正在分析的材料的名称,因此我无法说出回归输出指的是哪个材料。

有没有办法在回归输出旁边显示材质(=组)名称?

这是我目前使用的代码:

import statsmodels.api as sm
from statsmodels.iolib.summary2 import summary_col

for Materials in df.Material.unique():
tempdf = df[df.Material == Materials]
X = sm.add_constant(tempdf['UnitPrice'])
y = tempdf['ACTYTDVol']

model = sm.OLS(y, X)
results = model.fit()

print(results.summary())

我当前的输出显示了我拥有的 10 种材料中的每一种的 10 个 OLS 回归结果表。但是,它没有说明进行回归的材料的名称,因此我不知道结果是指哪个材料。

非常感谢您的帮助!

【问题讨论】:

    标签: python-3.x for-loop statsmodels


    【解决方案1】:

    您可以在循环中打印Materials

    另外,summary 有一个 yname 关键字,用于将响应变量的名称添加到汇总表中 http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.OLSResults.summary.html#statsmodels.regression.linear_model.OLSResults.summary

    【讨论】:

    • 非常感谢!我已经尝试了以下代码,但收到错误消息“IndentationError:预期缩进块”。你知道我做错了什么吗?我是 Python 新手,非常感谢您的帮助,谢谢!对于 tempdf 中的材料: print(results.summary())
    • 第 1 行:用于 tempdf 中的材料:第 2 行(4 个空格后):print(results.summary())
    • 现在我明白了 :-) 我用“print(results.summary(yname=Materials))”替换了打印行,它就像一个魅力 - 非常感谢您的帮助!跨度>
    猜你喜欢
    • 2019-10-31
    • 2021-12-26
    • 2021-12-18
    • 2012-06-13
    • 2016-09-07
    • 2021-03-01
    • 1970-01-01
    • 2015-11-05
    • 2015-12-31
    相关资源
    最近更新 更多