Analiza współczynnika R-kwadrat regresji
R-kwadrat mierzy, jak dobrze dane dopasowują się do linii regresji. W prostej regresji R-kwadrat jest powiązany z korelacją między dwiema zmiennymi – mianowicie wartość bezwzględna korelacji to pierwiastek kwadratowy z R-kwadrat, a znak korelacji odpowiada znakowi współczynnika regresji.
W tym ćwiczeniu zaczniesz korzystać z pakietu statystycznego statsmodels, który oferuje wiele narzędzi do modelowania i testowania statystycznego dostępnych wcześniej głównie w R oraz w pakietach takich jak SAS i MATLAB.
Wezwiesz dwie serie danych, x i y, obliczysz ich korelację, a następnie przeprowadzisz regresję y względem x za pomocą funkcji OLS(y,x) z biblioteki statsmodels.api (zwróć uwagę, że zmienna zależna y jest pierwszym argumentem). Większość regresji liniowych zawiera wyraz wolny, czyli wyraz stały (\(\small \alpha\) w równaniu regresji \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Aby uwzględnić wyraz stały w funkcji OLS(), musisz dodać kolumnę jedynek po prawej stronie równania regresji.
Moduł statsmodels.api został już zaimportowany jako sm.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w Pythonie
Instrukcje do ćwiczenia
- Oblicz korelację między
xiy, używając metody.corr(). - Przeprowadź regresję:
- Najpierw przekształć serię
xna DataFramedfx. - Dodaj wyraz stały za pomocą
sm.add_constant()i przypisz wynik dodfx1. - Dokonaj regresji
ywzględemdfx1, używającsm.OLS().fit().
- Najpierw przekształć serię
- Wyświetl wyniki regresji i porównaj wartość R-kwadrat ze współczynnikiem korelacji.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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())