2017-05-20 49 views
0

我试图按组运行线性回归,并分别显示每个材质组的结果,包括特定材质的名称。Python statsmodels - 按组显示回归结果

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

我能够运行上述回归,但回归输出不显示我正在分析的材料的名称,因此我无法说出回归输出引用的材料的名称。

是否有办法在回归输出旁边显示Material(= group)名称?

这是我目前使用的代码:

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回归与结果表。但是,它没有说明回归完成的材料的名称,因此我无法知道结果涉及哪种材料。

非常感谢您的帮助!

回答

0

您可以在循环中打印Materials

此外,总结了一个yname关键字添加响应变量的名称汇总表 http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.OLSResults.summary.html#statsmodels.regression.linear_model.OLSResults.summary

+0

非常感谢您!我已经尝试了下面的代码,但得到一个错误消息“IndentationError:预计一个缩进块”。你知道我做错了什么吗?我是Python新手,非常感谢您的帮助,谢谢!对于材料tempdf: print(results.summary()) – Paddington

+0

第一行:对于材料在tempdf:第二行(4空格后):print(results.summary()) – Paddington

+0

现在我明白了:-)我替换了打印行“打印(results.summary(yname =材料))”,它的作品就像一个魅力 - 非常感谢您的帮助! – Paddington