Analizando el R-cuadrado de una regresión
R-cuadrado mide qué tan bien se ajustan los datos a la recta de regresión, así que en una regresión simple está relacionado con la correlación entre las dos variables. En particular, la magnitud de la correlación es la raíz cuadrada del R-cuadrado y el signo de la correlación coincide con el signo del coeficiente de regresión.
En este ejercicio empezarás a usar el paquete estadístico statsmodels, que realiza gran parte del modelado y las pruebas estadísticas que se encuentran en R y en paquetes como SAS y MATLAB.
Tomarás dos series, x y y, calcularás su correlación y después ajustarás una regresión de y sobre x usando la función OLS(y,x) de la librería statsmodels.api (ten en cuenta que la variable dependiente, o del lado derecho, y es el primer argumento). La mayoría de las regresiones lineales incluyen un término constante, que es la intersección (la \(\small \alpha\) en la regresión \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Para incluir una constante con la función OLS(), necesitas añadir una columna de 1 a la parte derecha de la regresión.
El módulo statsmodels.api se ha importado por ti como sm.
Este ejercicio forma parte del curso
Análisis de series temporales en Python
Instrucciones del ejercicio
- Calcula la correlación entre
xeyusando el método.corr(). - Ejecuta una regresión:
- Primero convierte la Series
xen un DataFramedfx. - Añade una constante usando
sm.add_constant(), asignándola adfx1. - Regresa
ysobredfx1usandosm.OLS().fit().
- Primero convierte la Series
- Imprime los resultados de la regresión y compara el R-cuadrado con la correlación.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Import the statsmodels module
import statsmodels.api as sm
# Compute correlation of x and y
correlation = ___
print("The correlation between x and y is %4.2f" %(correlation))
# Convert the Series x to a DataFrame and name the column x
dfx = pd.DataFrame(x, columns=['x'])
# Add a constant to the DataFrame dfx
dfx1 = sm.add_constant(___)
# Regress y on dfx1
result = sm.OLS(___, ___).fit()
# Print out the results and look at the relationship between R-squared and the correlation above
print(result.summary())