我在pandas
DataFrame中有大约500个星系的数据(每个星系几百个测量值),我正在尝试对一些变量执行OLS回归,其中一个是绝对的(每个星系)是它自己的类别)。基本上,一旦我完成了模型的拟合,我想绘制数据,拟合和一些误差范围,取出类别本身的推测效果。
实际上,我希望生成一个类似于this tutorial的“OLS非线性曲线但参数中的线性”部分的图(在此复制)。
相反,我有这个(我刚刚在这里挑选了两个星系,为了便于阅读,但是所有500个都变得非常丑陋):
由于这里似乎有两个“星团”,我得出结论,每个都必须对应一个星系。然而,我真正想要的是将它们折叠成一行来消除类别间的影响,并想象它们都是一个星系。
作为参考,我用来拟合和绘制的代码是:
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,但它似乎只针对特定类别的预测观察,而不是完全消除这些影响。
非常感谢任何进一步的建议。