Osservare l'R-quadro di una regressione
L'R-quadro misura quanto bene i dati si adattano alla retta di regressione, quindi in una regressione semplice l'R-quadro è legato alla correlazione tra le due variabili. In particolare, il valore assoluto della correlazione è la radice quadrata dell'R-quadro e il segno della correlazione coincide con il segno del coefficiente di regressione.
In questo esercizio inizierai a usare il pacchetto statistico statsmodels, che esegue gran parte della modellazione e dei test statistici presenti in R e in software come SAS e MATLAB.
Prenderai due serie, x e y, ne calcolerai la correlazione e poi regredirai y su x usando la funzione OLS(y,x) della libreria statsmodels.api (nota che la variabile dipendente, o a destra dell'uguaglianza, y è il primo argomento). La maggior parte delle regressioni lineari include un termine costante, cioè l'intercetta (la \(\small \alpha\) nella regressione \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Per includere una costante usando la funzione OLS(), devi aggiungere una colonna di 1 sul lato destro della regressione.
Il modulo statsmodels.api è stato importato per te come sm.
Questo esercizio fa parte del corso
Analisi delle serie temporali in Python
Istruzioni dell'esercizio
- Calcola la correlazione tra
xeyusando il metodo.corr(). - Esegui una regressione:
- Per prima cosa converti la Series
xin un DataFramedfx. - Aggiungi una costante usando
sm.add_constant(), assegnandola adfx1 - Regressa
ysudfx1usandosm.OLS().fit().
- Per prima cosa converti la Series
- Stampa i risultati della regressione e confronta l'R-quadro con la correlazione.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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())