我已经尝试使用 (pandas)pd.ols 和 (statsmodels)sm.ols 来获得带有回归线的回归散点图,我可以得到散点图,但我似乎无法获得参数来获取要绘制的回归线。很明显,我在这里进行了一些剪切和粘贴编码:-((以此为指导: http: //nbviewer.ipython.org/github/weecology/progbio/blob/master/ipynbs/statistics.ipynb
我的数据在 pandas DataFrame 中,x 列是 merge2[:-1].lastqu 和 y 数据列是 merge2[:-1].Units 我的代码现在如下:获取回归:
def fit_line2(x, y):
X = sm.add_constant(x, prepend=True) #Add a column of ones to allow the calculation of the intercept
model = sm.OLS(y, X,missing='drop').fit()
"""Return slope, intercept of best fit line."""
X = sm.add_constant(x)
return model
model=fit_line2(merged2[:-1].lastqu,merged2[:-1].Units)
print fit.summary()
^^^^ 好像还可以
intercept, slope = model.params << I don't think this is quite right
plt.plot(merged2[:-1].lastqu,merged2[:-1].Units, 'bo')
plt.hold(True)
^^^^^ 这完成了散点图****并且下面没有给我回归线
x = np.array([min(merged2[:-1].lastqu), max(merged2[:-1].lastqu)])
y = intercept + slope * x
plt.plot(x, y, 'r-')
plt.show()
数据框的片段: [:-1] 从数据中消除当前周期,该周期随后将成为投影
Units lastqu Uperchg lqperchg fcast errpercent nfcast
date
2000-12-31 7177 NaN NaN NaN NaN NaN NaN
2001-12-31 10694 2195.000000 0.490038 NaN 10658.719019 1.003310 NaN
2002-12-31 11725 2469.000000
编辑:
我发现我可以这样做:
fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_regress_exog(model, "lastqu", fig=fig)
如Statsmodels 文档中 所述,这似乎得到了我想要的主要内容(以及更多内容)我仍然想知道我在之前的代码中哪里出错了!