Як виконати регресію ols у r (з прикладом)
Звичайна регресія найменших квадратів (МНК) — це метод, який дозволяє нам знайти лінію, яка найкраще описує зв’язок між однією або декількома змінними предиктора та змінною відповіді .
Цей метод дозволяє нам знайти таке рівняння:
ŷ = b 0 + b 1 x
золото:
- ŷ : оцінене значення відповіді
- b 0 : Початок лінії регресії
- b 1 : Нахил лінії регресії
Це рівняння може допомогти нам зрозуміти взаємозв’язок між предиктором і змінною відповіді, і його можна використовувати для прогнозування значення змінної відповіді, враховуючи значення змінної предиктора.
Наступний покроковий приклад показує, як виконати регресію OLS у R.
Крок 1: Створіть дані
Для цього прикладу ми створимо набір даних, що містить такі дві змінні для 15 студентів:
- Загальна кількість вивчених годин
- Результат іспиту
Ми виконаємо регресію OLS, використовуючи години як змінну прогнозу та оцінку іспиту як змінну відповіді.
Наступний код показує, як створити цей фальшивий набір даних у R:
#create dataset df <- data. frame (hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14), score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89)) #view first six rows of dataset head(df) hours score 1 1 64 2 2 66 3 4 76 4 5 73 5 5 74 6 6 81
Крок 2: Візуалізуйте дані
Перш ніж виконувати регресію OLS, давайте створимо діаграму розсіювання, щоб візуалізувати зв’язок між годинами та оцінкою іспиту:
library (ggplot2) #create scatterplot ggplot(df, aes(x=hours, y=score)) + geom_point(size= 2 )
Одне з чотирьох припущень лінійної регресії полягає в тому, що існує лінійна залежність між предиктором і змінною відповіді.
З графіка ми бачимо, що залежність виглядає лінійною. Зі збільшенням кількості годин оцінка також має тенденцію до лінійного зростання.
Тоді ми можемо створити коробкову діаграму для візуалізації розподілу результатів іспиту та перевірки викидів.
Примітка : R визначає спостереження як викид, якщо воно в 1,5 рази перевищує інтерквартильний діапазон вище третього квартиля або в 1,5 рази перевищує інтерквартильний діапазон нижче першого квартиля.
Якщо спостереження виходить за межі, на прямокутній діаграмі з’явиться маленьке коло:
library (ggplot2) #create scatterplot ggplot(df, aes(y=score)) + geom_boxplot()
На прямокутній діаграмі немає маленьких кружечків, а це означає, що в нашому наборі даних немає викидів.
Крок 3: Виконайте регресію OLS
Далі ми можемо використати функцію lm() у R, щоб виконати регресію OLS, використовуючи години як змінну предиктора та оцінку як змінну відповіді:
#fit simple linear regression model model <- lm(score~hours, data=df) #view model summary summary(model) Call: lm(formula = score ~ hours) Residuals: Min 1Q Median 3Q Max -5,140 -3,219 -1,193 2,816 5,772 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 65,334 2,106 31,023 1.41e-13 *** hours 1.982 0.248 7.995 2.25e-06 *** --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.641 on 13 degrees of freedom Multiple R-squared: 0.831, Adjusted R-squared: 0.818 F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06
З підсумку моделі ми можемо побачити, що підігнане рівняння регресії таке:
Оцінка = 65,334 + 1,982*(години)
Це означає, що кожна додаткова вивчена година пов’язана зі збільшенням середнього балу на іспиті на 1982 бали.
Початкове значення 65 334 говорить нам про середній очікуваний іспитовий бал для студента, який навчається нуль годин.
Ми також можемо використати це рівняння, щоб знайти очікуваний бал за іспит на основі кількості годин, які навчається студент.
Наприклад, студент, який навчається 10 годин, повинен набрати іспитовий бал 85,15 :
Оцінка = 65,334 + 1,982*(10) = 85,15
Ось як інтерпретувати решту короткого опису моделі:
- Pr(>|t|): це p-значення, пов’язане з коефіцієнтами моделі. Оскільки p-значення для годин (2,25e-06) значно менше, ніж 0,05, ми можемо сказати, що існує статистично значущий зв’язок між годинами та балом .
- Множинний R-квадрат: це число говорить нам, що відсоток варіації оцінок на іспитах можна пояснити кількістю вивчених годин. Загалом, чим більше значення R-квадрат регресійної моделі, тим краще прогностичні змінні передбачають значення змінної відповіді. У цьому випадку 83,1% варіації балів можна пояснити вивченими годинами.
- Залишкова стандартна помилка: це середня відстань між спостережуваними значеннями та лінією регресії. Чим менше це значення, тим більше лінія регресії може відповідати даним спостереження. У цьому випадку середній бал, отриманий на іспиті, відхиляється на 3641 бал від балу, передбаченого лінією регресії.
- F-статистика та p-значення: F-статистика ( 63.91 ) і відповідне p-значення ( 2.253e-06 ) повідомляють нам про загальну значущість регресійної моделі, тобто чи корисні змінні предиктора в моделі для пояснення варіації . у змінній відповіді. Оскільки p-значення в цьому прикладі менше 0,05, наша модель є статистично значущою, і години вважаються корисними для пояснення варіації оцінки .
Крок 4: Створіть залишкові ділянки
Нарешті, нам потрібно створити залишкові графіки, щоб перевірити припущення гомоскедастичності та нормальності .
Припущення гомоскедастичності полягає в тому, що залишки регресійної моделі мають приблизно однакову дисперсію на кожному рівні змінної предиктора.
Щоб переконатися, що це припущення виконується, ми можемо побудувати графік залишків проти відповідностей .
На осі абсцис відображаються підібрані значення, а на осі у – залишки. Поки залишки виглядають випадково та рівномірно розподіленими по всьому графіку навколо нульового значення, ми можемо припустити, що гомоскедастичність не порушена:
#define residuals res <- resid(model) #produce residual vs. fitted plot plot(fitted(model), res) #add a horizontal line at 0 abline(0,0)
Залишки, здається, випадково розкидані навколо нуля і не виявляють помітної моделі, тому це припущення виконується.
Припущення нормальності стверджує, що залишки регресійної моделі розподілені приблизно нормально.
Щоб перевірити, чи виконується це припущення, ми можемо створити графік QQ . Якщо точки графіка лежать уздовж приблизно прямої лінії, що утворює кут 45 градусів, то дані розподіляються нормально:
#create QQ plot for residuals qqnorm(res) #add a straight diagonal line to the plot qqline(res)
Залишки трохи відхиляються від лінії 45 градусів, але недостатньо, щоб викликати серйозне занепокоєння. Ми можемо припустити, що припущення нормальності виконується.
Оскільки залишки є нормально розподіленими та гомоскедастичними, ми перевірили, чи виконуються припущення регресійної моделі OLS.
Таким чином, вихід нашої моделі надійний.
Примітка : якщо одне або кілька припущень не виконано, ми можемо спробувати трансформувати наші дані.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в R:
Як виконати множинну лінійну регресію в R
Як виконати експоненціальну регресію в R
Як виконати зважену регресію найменших квадратів у R