Undersöka en regressions R-kvadrat
R-kvadrat mäter hur väl data passar regressionslinjen, så R-kvadraten i en enkel regression är relaterad till korrelationen mellan de två variablerna. Mer specifikt är korrelationens absolutbelopp kvadratroten av R-kvadraten, och korrelationens tecken är detsamma som regressionskoefficientens tecken.
I den här övningen börjar du använda statistikpaketet statsmodels, som utför en stor del av den statistiska modellering och testning som finns i R och program som SAS och MATLAB.
Du tar två serier, x och y, beräknar deras korrelation och regresserar sedan y på x med funktionen OLS(y,x) i biblioteket statsmodels.api (observera att den beroende variabeln y är det första argumentet). De flesta linjära regressioner innehåller en konstantterm som är intercept (\(\small \alpha\) i regressionen \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). För att inkludera en konstant med funktionen OLS() behöver du lägga till en kolumn med ettor på höger sida av regressionen.
Modulen statsmodels.api har importerats åt dig som sm.
Den här övningen är en del av kursen
Tidsserieanalys i Python
Övningsinstruktioner
- Beräkna korrelationen mellan
xochymed metoden.corr(). - Kör en regression:
- Konvertera först serien
xtill en DataFramedfx. - Lägg till en konstant med
sm.add_constant()och tilldela resultatet tilldfx1. - Regressera
ypådfx1medsm.OLS().fit().
- Konvertera först serien
- Skriv ut regressionsresultaten och jämför R-kvadraten med korrelationen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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())