Pregunta

Estoy obteniendo valores diferentes de R ^ 2 (coeficiente de determinación) Cuando intento que OLS se adapte a estas dos bibliotecas y no puedo averiguar por qué.(Algunos espacios eliminados para su conveniencia)

In [1]: import pandas as pd       
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: import scipy.stats
In [5]: np.random.seed(100)
In [6]: x = np.linspace(0, 10, 100) + 5*np.random.randn(100)
In [7]: y = np.arange(100)

In [8]: slope, intercept, r, p, std_err = scipy.stats.linregress(x, y)

In [9]: r**2
Out[9]: 0.22045988449873671

In [10]: model = sm.OLS(y, x)
In [11]: est = model.fit()

In [12]: est.rsquared
Out[12]: 0.5327910685035413

¿Qué está pasando aquí?¡No puedo resolverlo!¿Hay algún error en alguna parte?

¿Fue útil?

Solución

El 0.2205 proviene de un modelo que también tiene un término de intercepción: el valor 0.5328 es el resultado si elimina la intersección.

Básicamente, un paquete está modelando y= bx , mientras que el otro (con ayuda) asume que usted también lo desea como un término de intercepción (es decir, y= a +bx ).[Nota: la ventaja de este supuesto es que de lo contrario tendría que tomar x y vincular una columna de otras cada vez que quería correr una regresión (o de lo contrario terminará con un sesgado modelo)]

VERIFICE esta publicación para una discusión más larga.

buena suerte!

Otros consejos

Esta no es una respuesta a la pregunta original que ha sido respondida.

sobre R-Squared en una regresión sin una constante.

Un problema es que una regresión sin una intersección no tiene la definición estándar de R ^ 2.

Esencialmente, R-Squared como una bondad de medida de ajuste en un modelo con una intercepción compara el modelo completo con el modelo que tiene solo una intersección. Si el modelo completo no tiene una intersección, entonces la definición estándar de R ^ 2 puede producir resultados extraños como negativos R ^ 2.

La definición convencional en la regresión sin divisiones constantes por la suma total de cuadrados de la variable dependiente en lugar de los degradados. El R ^ 2 entre una regresión con una constante y sin que realmente no se puede comparar de una manera significativa.

Consulte, por ejemplo, el problema que provocó el cambio en StatSModels para manejar R ^ 2 "correctamente" en la regresión no constante: https://github.com/statsmodels/statsmodels/issues/785

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top