Obtención de la línea de regresión para trazar desde una regresión de Pandas
He intentado con ambos (pandas) pd.ols y (statsmodels) sm.ols obtener un gráfico de dispersión de regresióncon la linea de regresion, Puedo obtener el gráfico de dispersión pero parece que no puedo obtener los parámetros para obtener la línea de regresión para representar. Probablemente sea obvio que estoy haciendo algunos códigos de cortar y pegar aquí :-( (usando esto como una guía:http://nbviewer.ipython.org/github/weecology/progbio/blob/master/ipynbs/statistics.ipynb
Mis datos están en un marco de datos de pandas y la columna x es merged2 [: - 1] .lastqu y la columna de datos y es merged2 [: - 1] .Units Mi código es el siguiente: para obtener la regresión:
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()
^^^^ parece bien
intercept, slope = model.params << I don't think this is quite right
plt.plot(merged2[:-1].lastqu,merged2[:-1].Units, 'bo')
plt.hold(True)
^^^^^ Esto consigue el diagrama de dispersión hecho** y lo de abajo no me da una línea de regresión
x = np.array([min(merged2[:-1].lastqu), max(merged2[:-1].lastqu)])
y = intercept + slope * x
plt.plot(x, y, 'r-')
plt.show()
Un fragmento del Dataframe: el [: -1] elimina el período actual de los datos que posteriormente serán una proyección.
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
Editar:
Descubrí que podía hacer:
fig = plt.figure(figsize=(12,8))
fig = sm.graphics.plot_regress_exog(model, "lastqu", fig=fig)
como se describe aquí en elStatsmodels doc que parece ser lo principal que quería (y más) ¡Todavía me gustaría saber dónde me equivoqué en el código anterior!