programar - regresion lineal python paso a paso
¿Cómo obtener los resultados de ajuste numérico al trazar una regresión en el mar? (2)
Mirando a través del documento actualmente disponible, lo más cercano que he podido determinar si esta funcionalidad se puede cumplir ahora es si uno usa el módulo scipy.stats.pearsonr.
r2 = stats.pearsonr("pct", "rdiff", df)
Al intentar hacer que funcione directamente dentro de un marco de datos de Pandas, se produce un error al violar los requisitos básicos de entrada de Scipy:
TypeError: pearsonr() takes exactly 2 arguments (3 given)
Logré ubicar a otro usuario de Pandas Seaborn que evidentemente lo resolvió: https://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/stats.py#L2392
sns.regplot("rdiff", "pct", df, corr_func=stats.pearsonr);
Pero, desafortunadamente, no he logrado que funcione como parece que el autor creó su propio ''corr_func'' personalizado o bien hay un método de aprobación de argumentos de Seaborn no documentado que está disponible utilizando un método más manual:
# x and y should have same length.
x = np.asarray(x)
y = np.asarray(y)
n = len(x)
mx = x.mean()
my = y.mean()
xm, ym = x-mx, y-my
r_num = np.add.reduce(xm * ym)
r_den = np.sqrt(ss(xm) * ss(ym))
r = r_num / r_den
# Presumably, if abs(r) > 1, then it is only some small artifact of floating
# point arithmetic.
r = max(min(r, 1.0), -1.0)
df = n-2
if abs(r) == 1.0:
prob = 0.0
else:
t_squared = r*r * (df / ((1.0 - r) * (1.0 + r)))
prob = betai(0.5*df, 0.5, df / (df + t_squared))
return r, prob
Espero que esto ayude a avanzar en esta solicitud original hacia una solución provisional, ya que hay una utilidad muy necesaria para agregar las estadísticas de la condición física de regresión al paquete Seaborn como un reemplazo de lo que se puede obtener fácilmente desde MS-Excel o un gráfico de líneas de Matplotlib.
Si utilizo la biblioteca marina en Python para trazar el resultado de una regresión lineal, ¿hay alguna forma de averiguar los resultados numéricos de la regresión? Por ejemplo, podría querer saber los coeficientes de ajuste o el R 2 del ajuste.
Podría volver a ejecutar el mismo ajuste utilizando la interfaz de los modelos de estadísticas subyacentes, pero eso parecería ser un esfuerzo duplicado innecesario, y de todos modos me gustaría poder comparar los coeficientes resultantes para estar seguro de que los resultados numéricos son los mismos que los de I Estoy viendo en la trama.
No hay manera de hacer esto.
En mi opinión, pedir una biblioteca de visualización para proporcionarle los resultados del modelado estadístico es hacia atrás. statsmodels
, una biblioteca de modelos, le permite ajustar un modelo y luego dibujar una gráfica que corresponda exactamente con el modelo que usted ajusta. Si quiere esa correspondencia exacta, este orden de operaciones tiene más sentido para mí.
Se podría decir "pero las parcelas en statsmodels
de statsmodels
no tienen tantas opciones estéticas como seaborn
". Pero creo que tiene sentido: statsmodels
es una biblioteca de modelos que a veces usa la visualización en el servicio de modelos. seaborn
es una biblioteca de visualización que a veces utiliza el modelado al servicio de la visualización. Es bueno especializarse, y malo tratar de hacer todo.
Afortunadamente, tanto los seaborn
como los de statsmodels
usan datos ordenados . Eso significa que realmente necesita muy poco esfuerzo en la duplicación para obtener gráficos y modelos a través de las herramientas adecuadas.