Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz korelację między x i y, używając metody .corr().
  • Przeprowadź regresję:
    • Najpierw przekształć serię x na DataFrame dfx.
    • Dodaj wyraz stały za pomocą sm.add_constant() i przypisz wynik do dfx1.
    • Dokonaj regresji y względem dfx1, używając sm.OLS().fit().
  • 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())
Edytuj i uruchom kod