Aan de slagGa gratis aan de slag

Kijken naar de R-kwadraat van een regressie

R-kwadraat meet hoe goed de data op de regressielijn passen, dus in een eenvoudige regressie hangt de R-kwadraat samen met de correlatie tussen de twee variabelen. Concreet is de absolute waarde van de correlatie de vierkantswortel van de R-kwadraat en is het teken van de correlatie gelijk aan het teken van de regressiecoëfficiënt.

In deze oefening ga je het statistiekpakket statsmodels gebruiken, dat veel van de statistische modellering en tests uitvoert die je ook in R en softwarepakketten zoals SAS en MATLAB vindt.

Je neemt twee reeksen, x en y, berekent hun correlatie en regresseert vervolgens y op x met de functie OLS(y,x) uit de bibliotheek statsmodels.api (let op: de afhankelijke, of rechterkantvariabele y is het eerste argument). De meeste lineaire regressies bevatten een constante term, de intercept (de \(\small \alpha\) in de regressie \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Om een constante op te nemen met de functie OLS(), moet je een kolom met 1'en toevoegen aan de rechterkant van de regressie.

De module statsmodels.api is voor je geïmporteerd als sm.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in Python

Cursus bekijken

Oefeninstructies

  • Bereken de correlatie tussen x en y met de methode .corr().
  • Voer een regressie uit:
    • Zet eerst de Series x om naar een DataFrame dfx.
    • Voeg een constante toe met sm.add_constant() en sla dit op in dfx1.
    • Regressseer y op dfx1 met sm.OLS().fit().
  • Print de resultaten van de regressie en vergelijk de R-kwadraat met de correlatie.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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())
Code bewerken en uitvoeren