statsmodels OLS拟合的预测图,取出分类效果

时间:2015-12-14 21:12:21

标签: python pandas linear-regression statsmodels

我在pandas DataFrame中有大约500个星系的数据(每个星系几百个测量值),我正在尝试对一些变量执行OLS回归,其中一个是绝对的(每个星系)是它自己的类别)。基本上,一旦我完成了模型的拟合,我想绘制数据,拟合和一些误差范围,取出类别本身的推测效果

实际上,我希望生成一个类似于this tutorial的“OLS非线性曲线但参数中的线性”部分的图(在此复制)。from [statsmodels tutorials](http://statsmodels.sourceforge.net/devel/examples/notebooks/generated/ols.html)

相反,我有这个(我刚刚在这里挑选了两个星系,为了便于阅读,但是所有500个都变得非常丑陋):

What I get with categorical variables

由于这里似乎有两个“星团”,我得出结论,每个都必须对应一个星系。然而,我真正想要的是将它们折叠成一行来消除类别间的影响,并想象它们都是一个星系。

作为参考,我用来拟合和绘制的代码是:

m = sm.ols(
    formula='{} ~ Rdeproj + NSAMstar + \
             NSASersicN + C(plateifu)'.format(qty),
    data=dfr)
f = m.fit()
#print dir(f)

ypred = f.predict()
prstd, iv_l, iv_u = wls_prediction_std(f)

plt.close('all')

fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(dfr['Rdeproj'], dfr[qty], '.', label='data')
ax.plot(dfr['Rdeproj'], f.fittedvalues, 'r--.', label='pred')
ax.plot(dfr['Rdeproj'], iv_u, 'r--', label='bound')
ax.plot(dfr['Rdeproj'], iv_l, 'r--')
legend=ax.legend(loc='best')
ax.set_xlabel(r'$R_{deproj}$ [Mpc]')
ax.set_ylabel(qty)
plt.tight_layout()
plt.savefig('fits/' + qty + '_fit.png')

我发现了一个类似的问题here,但它似乎只针对特定类别的预测观察,而不是完全消除这些影响。

非常感谢任何进一步的建议。

0 个答案:

没有答案