IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Calcola la correlazione tra x e y usando il metodo .corr().
  • Esegui una regressione:
    • Per prima cosa converti la Series x in un DataFrame dfx.
    • Aggiungi una costante usando sm.add_constant(), assegnandola a dfx1
    • Regressa y su dfx1 usando sm.OLS().fit().
  • 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())
Modifica ed esegui il codice