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
Oefeninstructies
- Bereken de correlatie tussen
xenymet de methode.corr(). - Voer een regressie uit:
- Zet eerst de Series
xom naar een DataFramedfx. - Voeg een constante toe met
sm.add_constant()en sla dit op indfx1. - Regressseer
yopdfx1metsm.OLS().fit().
- Zet eerst de Series
- 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())