Анализ коэффициента детерминации R² регрессии
Коэффициент детерминации R² показывает, насколько точно данные соответствуют линии регрессии. В простой регрессии R² связан с корреляцией между двумя переменными: модуль корреляции равен квадратному корню из R², а знак корреляции совпадает со знаком коэффициента регрессии.
В этом упражнении вы начнёте работать со статистическим пакетом 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(), необходимо добавить столбец из единиц в правую часть регрессии.
Модуль statsmodels.api уже импортирован как sm.
Это упражнение является частью курса
Анализ временных рядов на Python
Инструкции к упражнению
- Вычислите корреляцию между
xиyс помощью метода.corr(). - Постройте регрессию:
- Сначала преобразуйте Series
xв DataFramedfx. - Добавьте константу с помощью
sm.add_constant()и сохраните результат вdfx1. - Регрессируйте
yнаdfx1с помощьюsm.OLS().fit().
- Сначала преобразуйте Series
- Выведите результаты регрессии и сравните значение R² с корреляцией.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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())