ПочатиПочніть безкоштовно

Аналіз R-squared у регресії

R-squared показує, наскільки тісно дані прилягають до лінії регресії, тож у простій регресії R-squared пов'язаний із кореляцією між двома змінними. Зокрема, модуль кореляції дорівнює квадратному кореню з R-squared, а знак кореляції збігається зі знаком коефіцієнта регресії.

У цій вправі ви почнете використовувати статистичний пакет statsmodels, який виконує багато статистичного моделювання та тестування, що є в R і таких програмних пакетах, як SAS і MATLAB.

Ви візьмете два ряди x та y, обчислите їхню кореляцію, а потім виконаєте регресію y на x, використавши функцію OLS(y,x) із бібліотеки statsmodels.api (зверніть увагу, що залежна змінна, або права частина, y є першим аргументом). Більшість лінійних регресій містять сталий член — перетин із віссю (це \(\small \alpha\) у рівнянні регресії \(\small y_t=\alpha + \beta x_t + \epsilon_t\)). Щоб включити сталий член у функції OLS(), потрібно додати стовпчик із 1 до правої частини регресії.

Модуль statsmodels.api вже імпортовано для вас як sm.

Ця вправа є частиною курсу

Аналіз часових рядів у Python

Переглянути курс

Інструкції до вправи

  • Обчисліть кореляцію між x та y за допомогою методу .corr().
  • Запустіть регресію:
    • Спочатку перетворіть Series x на DataFrame dfx.
    • Додайте сталий член за допомогою sm.add_constant(), збережіть у dfx1.
    • Зробіть регресію y на dfx1, використавши sm.OLS().fit().
  • Виведіть результати регресії та порівняйте R-squared із кореляцією.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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())
Редагувати та запускати код