Множинна лінійна регресія в R: проста та покрокова з прикладами

⚡ Розумний підсумок

Проста та множинна лінійна регресія в R моделюють неперервний результат як зважену суму предикторів, що підбираються за допомогою звичайних найменших квадратів. Цей посібник охоплює lm(), зчитування коефіцієнтів, предиктори факторів, діагностику залишків, прогнозування та автоматичний вибір змінних.

  • 📐 Базове рівняння: Проста регресія апроксимує y = альфа + бета x, а множинна регресія розширює ту саму лінію до k предикторів у матричній формі.
  • 🧮 Метод оцінки: Звичайний метод найменших квадратів мінімізує підсумовані квадрати вертикальних відстаней між спостережуваними та прогнозованими значеннями.
  • 🛠️ Синтаксис моделі: lm(формула, дані) замінює знак рівності тильдою, а -1 видаляє точку перетину з віссю.
  • 📊 Вихідні дані для читання: summary() видає коефіцієнти, p-значення та скоригований R-квадрат, який на прикладі mtcars досягає 0.8199.
  • 🔎 Діагностика: par(mfrow = c(2, 2)), а потім plot(fit), відображає чотири графіки залишків, що використовуються для перевірки припущень методу найменших квадратів.
  • 🔁 Вибір змінної: Покрокова регресія в olsrr додає та видаляє предиктори за p-значенням та зупиняється на wt плюс hp.

Множинна лінійна регресія в R

Де лінійна регресія підходить у машинному навчанні

Лінійна регресія є однією з найстаріших контрольованих навчання за допомогою машини алгоритми, і це досі перша модель, до якої звертається більшість аналітиків. Одним із найперших застосувань машинного навчання було спам-фільтр.

Інші поширені застосування машинного навчання включають:

  • Виявлення небажаних повідомлень спаму в електронній пошті
  • Сегментація поведінки клієнтів для таргетованої реклами
  • Зменшення кількості шахрайських операцій з кредитними картками
  • Оптимізація використання енергії в житлових будинках та офісних будівлях
  • Розпізнавання обличчя

Навчання під наглядом

In Навчання під наглядом, навчальні дані, які ви подаєте в алгоритм, містять мітку.

Класифікація Ймовірно, це найпоширеніший метод навчання з учителем. Одним із перших завдань класифікації, з яким розібралися дослідники, був спам-фільтр. Метою навчання є прогнозування того, чи класифікується електронний лист як спам, чи як фальшива розсилка (хороша електронна пошта). Після етапу навчання машина може визначити клас електронної пошти.

Регресії зазвичай використовуються в галузі машинного навчання для прогнозування безперервного значення. Завдання регресії може передбачити значення залежна змінна на основі набору незалежні змінні (їх також називають предикторами або регресорами). Наприклад, лінійна регресія може передбачити курс акцій, прогноз погоди, продажі тощо.

Деякі фундаментальні алгоритми навчання з учителем:

  • Лінійна регресія
  • Логістична регресія
  • Найближчі сусіди
  • Машина опорних векторів (SVM)
  • Дерева рішень і випадковий ліс
  • Нейронні мережі

Навчання без нагляду

In Навчання без нагляду, дані навчання не позначені. Система намагається вчитися без посилання. Нижче наведено список алгоритмів неконтрольованого навчання.

  • K-середнє
  • Ієрархічна Cluster Аналіз
  • Максимізація очікування
  • Візуалізація та зменшення розмірності
  • Аналіз основних компонентів
  • Ядро PCA
  • Локально-лінійне вбудовування

З урахуванням цього контексту, решта цього посібника крок за кроком будує регресійні моделі в R.

Проста лінійна регресія в R

Лінійна регресія відповідає на просте запитання: чи можна виміряти точний зв'язок між однією цільовою змінною та набором предикторів?

Найпростішою ймовірнісною моделлю є прямолінійна модель:

Проста лінійна регресія в R

де

  • y = залежна змінна
  • x = незалежна змінна
  • Проста лінійна регресія в R = компонент випадкової помилки
  • Проста лінійна регресія в R = перехопити
  • Проста лінійна регресія в R = Коефіцієнт х

Розглянемо такий сюжет:

Проста лінійна регресія в R

Рівняння таке Проста лінійна регресія в R У цьому рівнянні точка перетину з віссю дорівнює 4.77, тому, коли x дорівнює 0, підібране значення y дорівнює 4.77. Нахил показує, в якій пропорції змінюється y, коли змінюється x.

Для оцінки оптимальних значень Проста лінійна регресія в R та Проста лінійна регресія в R, ви використовуєте метод під назвою Звичайні найменші квадрати (OLS). Цей метод намагається знайти параметри, які мінімізують суму квадратів помилок, тобто вертикальну відстань між прогнозованими значеннями y і фактичними значеннями y. Різниця відома як термін помилки.

Перш ніж оцінити модель, ви можете визначити, чи вірогідний лінійний зв’язок між y і x, побудувавши діаграму розсіювання.

Діаграма розкиду

Ми використаємо дуже простий набір даних, щоб пояснити концепцію простої лінійної регресії. Ми імпортуємо середній зріст і вагу для американських жінок. Набір даних містить 15 спостережень. Ви хочете визначити, чи зріст позитивно корелює з вагою.

library(ggplot2)
path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv'
df <-read.csv(path)
ggplot(df,aes(x=height, y =  weight))+
geom_point()

вихід:

Діаграма розкиду

Діаграма розсіювання показує загальну тенденцію збільшення ваги зі збільшенням зросту. На наступному кроці ви виміряєте, на скільки збільшується вага на кожну додаткову одиницю зросту.

Оцінки методом найменших квадратів

У простій регресії МНК обчислення Оцінки методом найменших квадратів та Оцінки методом найменших квадратів це просто. У цьому посібнику формули не виводяться, а лише наводяться.

Ви хочете оцінити: Оцінки методом найменших квадратів

Метою регресії МНК є мінімізація наступного рівняння:

Оцінки методом найменших квадратів

де

Оцінки методом найменших квадратів є фактичним значенням і Оцінки методом найменших квадратів є прогнозованим значенням.

Рішення для Оцінки методом найменших квадратів is Оцінки методом найменших квадратів

Зверніть увагу, що Оцінки методом найменших квадратів означає середнє значення x

Рішення для Оцінки методом найменших квадратів is Оцінки методом найменших квадратів

У R ви можете використовувати функції cov() та var() для оцінки Оцінки методом найменших квадратів і ви можете використовувати функцію mean() для оцінки Оцінки методом найменших квадратів

beta <- cov(df$height, df$weight) / var (df$height)
beta

вихід:

##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height)
alpha

вихід:

## [1] -87.51667

Бета-коефіцієнт означає, що на кожен додатковий дюйм зросту середня вага збільшується на 3.45 фунта.

Оцінювання лінійного рівняння вручну є повчальним, але непрактичним. R надає функцію lm(), яка зробить це за вас, і ви використовуватимете її з наступного розділу. У реальних проектах ви майже ніколи не підберете модель з одним предиктором; регресійні завдання зазвичай передбачають використання багатьох оцінок одночасно.

Множинна лінійна регресія в R

Практичне застосування регресійного аналізу використовує моделі складніші, ніж проста прямолінійна модель. Імовірнісна модель, яка включає більше однієї незалежної змінної, називається моделі множинної регресії. Загальний вигляд цієї моделі:

Множинна лінійна регресія в R

У матричній нотації ви можете переписати модель:

  • Множинна лінійна регресія в R

Залежна змінна y тепер є функцією k незалежних змінних. Значення коефіц Множинна лінійна регресія в R визначає внесок незалежної змінної Множинна лінійна регресія в R та Множинна лінійна регресія в R.

Коротко представимо зроблене нами припущення щодо випадкової похибки Множинна лінійна регресія в R з OLS:

  • Середнє дорівнює 0
  • Дисперсія дорівнює Множинна лінійна регресія в R
  • Нормальний розподіл
  • Випадкові помилки незалежні (в імовірнісному сенсі)

Вам потрібно вирішити для Множинна лінійна регресія в R, вектор коефіцієнтів регресії, які мінімізують суму квадратів помилок між прогнозованим і фактичним значеннями y.

Рішення закритої форми це:

Множинна лінійна регресія в R

з:

  • вказує на транспонувати матриці X
  • Множинна лінійна регресія в R вказує на оборотна матриця

У наведених нижче прикладах використовується вбудований набір даних mtcars. Мета полягає в тому, щоб передбачити витрату палива в милях на галон (mpg) на основі набору характеристик.

Безперервні змінні в R

На даний момент ви будете використовувати лише безперервні змінні та залишити осторонь категоричні ознаки. Змінна am є двійковою змінною, яка приймає значення 1, якщо коробка передач механічна, і 0 для автомобілів з автоматичними коробками передач; vs також є двійковою змінною.

library(dplyr)
df <- mtcars %>%
select(-c(am, vs, cyl, gear, carb))
glimpse(df)

вихід:

## Observations: 32
## Variables: 6
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19....
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1...
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ...
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9...
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3...
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...

Для обчислення параметрів можна використовувати функцію lm(). Основний синтаксис цієї функції:

lm(formula, data, subset)
Arguments:
	-formula: The equation you want to estimate	
	-data: The dataset used
	-subset: Estimate the model on a subset of the dataset

Пам’ятайте, що рівняння має такий вигляд

Безперервні змінні в R

в Р

  • Символ = замінюється на ~
  • Кожен x замінюється назвою змінної
  • Якщо ви хочете видалити константу, додайте -1 у кінці формули

приклад:

Ви хочете оцінити вагу людей на основі їх зростання та доходу. Рівняння таке

Безперервні змінні в R

Рівняння в R записується так:

y ~ X1+ X2+…+Xn # З перехопленням

Отже, для нашого прикладу:

  • Зважте ~ зріст + дохід

Ваше завдання — оцінити милю на галон на основі набору змінних. Рівняння для оцінки таке:

Безперервні змінні в R

Ви оціните свою першу лінійну регресію та збережете результат у відповідному об’єкті.

model <- mpg ~ disp + hp + drat + wt + qsec
fit <- lm(model, df)
fit

Code Пояснення

  • model <- mpg ~ disp + hp + drat + wt + qsec: Збереження моделі для оцінки
  • lm(модель, df): оцінка моделі за допомогою кадру даних df
## 
## Call:
## lm(formula = model, data = df)
## 
## Coefficients:
## (Intercept)         disp           hp         drat           wt  
##    16.53357      0.00872     -0.02060      2.01577     -4.38546  
##        qsec  
##     0.64015	

Вихід не надає достатньо інформації про якість підгонки. Ви можете отримати доступ до додаткових деталей, таких як значення коефіцієнтів, ступінь свободи та форма залишків за допомогою функції summary().

summary(fit)

вихід:

## return the p-value and coefficient
## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5404 -1.6701 -0.4264  1.1320  5.4996 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 16.53357   10.96423   1.508  0.14362   
## disp         0.00872    0.01119   0.779  0.44281   
## hp          -0.02060    0.01528  -1.348  0.18936   
## drat         2.01578    1.30946   1.539  0.13579   
## wt          -4.38546    1.24343  -3.527  0.00158 **
## qsec         0.64015    0.45934   1.394  0.17523   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.558 on 26 degrees of freedom
## Multiple R-squared:  0.8489, Adjusted R-squared:  0.8199 
## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10

Висновок із наведеної вище таблиці

  • У таблиці показано сильний негативний зв'язок між вагою (wt) та витратою палива (mpg), а також позитивний коефіцієнт для витрати палива (drat).
  • Тільки змінна wt має статистичний вплив на mpg. Пам’ятайте, що для перевірки гіпотези в статистиці ми використовуємо:
    • H0: Відсутність статистичного впливу
    • H1: предиктор має значний вплив на y
    • Якщо значення p менше 0.05, це означає, що змінна є статистично значущою
  • Скоригований коефіцієнт детермінації (R-квадрат): частка дисперсії y, пояснена моделлю, скоригована на кількість предикторів. Тут це 0.8199, тобто модель пояснює близько 82 відсотків дисперсії витрати пального. R-квадрат завжди знаходиться між 0 та 1, і чим вище, тим краще.

Ви можете запустити ANOVA тест для оцінки впливу кожної функції на дисперсії за допомогою функції anova().

anova(fit)

вихід:

## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq  F value   Pr(>F)    
## disp       1 808.89  808.89 123.6185 2.23e-11 ***
## hp         1  33.67   33.67   5.1449 0.031854 *  
## drat       1  30.15   30.15   4.6073 0.041340 *  
## wt         1  70.51   70.51  10.7754 0.002933 ** 
## qsec       1  12.71   12.71   1.9422 0.175233    
## Residuals 26 170.13    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1	

Більш звичайним способом оцінки ефективності моделі є відображення залишку порівняно з різними показниками.

Ви можете використовувати функцію plot(), щоб показати чотири графіки:

– Залишки проти підігнаних значень

– Нормальний графік QQ: теоретичний квартиль проти стандартизованих залишків

– Масштаб-розташування: підігнані значення проти квадратних коренів стандартизованих залишків

– Залишки проти кредитного плеча: кредитне плече проти стандартизованих залишків

Ви додаєте код par(mfrow = c(2, 2)) перед plot(fit). Якщо ви не додасте цей рядок коду, R запропонує вам натиснути команду Enter для відображення наступного графіка.

par(mfrow = c(2, 2))

Code Пояснення

  • (mfrow=c(2,2)): повертає вікно з чотирма графіками поруч.
  • Перші 2 додають кількість рядків
  • Другі 2 додають кількість стовпців.
  • Якщо ви напишете (mfrow=c(3,2)): ви створите вікно з 3 рядками та 2 стовпцями
plot(fit)

вихід:

Безперервні змінні в R

Формула lm() повертає список, що містить багато корисної інформації. Ви можете отримати до них доступ за допомогою створеного вами об'єкта fit, а потім знака $ та інформації, яку ви хочете отримати.tract.

– коефіцієнти: `fit$coefficients`

– залишки: `fit$residuals`

– підігнане значення: `fit$fitted.values`

Фактори регресії в R

В останній модельній оцінці ви регресуєте милі на галон лише за безперервними змінними. До моделі можна легко додати факторні змінні. Ви додаєте змінну am до своєї моделі. Важливо бути впевненим, що змінна є факторним рівнем, а не безперервною.

df <- mtcars %>%
    mutate(cyl = factor(cyl),
        vs = factor(vs),
        am = factor(am),
        gear = factor(gear),
        carb = factor(carb))
model <- mpg ~ .
summary(lm(model, df))

вихід:

## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5087 -1.3584 -0.0948  0.7745  4.6251 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 23.87913   20.06582   1.190   0.2525  
## cyl6        -2.64870    3.04089  -0.871   0.3975  
## cyl8        -0.33616    7.15954  -0.047   0.9632  
## disp         0.03555    0.03190   1.114   0.2827  
## hp          -0.07051    0.03943  -1.788   0.0939 .
## drat         1.18283    2.48348   0.476   0.6407  
## wt          -4.52978    2.53875  -1.784   0.0946 .
## qsec         0.36784    0.93540   0.393   0.6997  
## vs1          1.93085    2.87126   0.672   0.5115  
## am1          1.21212    3.21355   0.377   0.7113  
## gear4        1.11435    3.79952   0.293   0.7733  
## gear5        2.52840    3.73636   0.677   0.5089  
## carb2       -0.97935    2.31797  -0.423   0.6787  
## carb3        2.99964    4.29355   0.699   0.4955  
## carb4        1.09142    4.44962   0.245   0.8096  
## carb6        4.47757    6.38406   0.701   0.4938  
## carb8        7.25041    8.36057   0.867   0.3995  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.833 on 15 degrees of freedom
## Multiple R-squared:  0.8931, Adjusted R-squared:  0.779 
## F-statistic:  7.83 on 16 and 15 DF,  p-value: 0.000124

R використовує перший факторний рівень як базову групу. Вам потрібно порівняти коефіцієнти іншої групи з базовою групою.

Припущення лінійної регресії в R

Звичайний метод найменших квадратів дає достовірні коефіцієнти та p-значення лише за умови виконання п'яти умов. Чотири діагностичні графіки, створені за допомогою plot(fit), існують саме для їх перевірки.

  • Лінійність: зв'язок між кожним предиктором та y є лінійним. Перевірте Залишки проти встановлених графік; видима крива означає, що вам потрібне перетворення або поліноміальний член.
  • Незалежність: Члени помилки некорельовані. Дані, впорядковані за часом, часто порушують це, що можна перевірити за допомогою durbinWatsonTest() з пакета car.
  • Гомоскедастичність: Дисперсія помилки є постійною для всіх підібраних значень. Форма воронки в Масштаб-Розташування сюжет сигналізує про порушення.
  • Нормальність залишків: помилки розподіляються за нормальним законом. Точки повинні розташовуватися на діагоналі Звичайний QQ сюжет.
  • Відсутність мультиколінеарності: Предиктори не є майже дублікатами один одного. Коефіцієнт інфляції дисперсії вище 5 є звичайною попереджувальною лінією.
library(car)
vif(fit)           # variance inflation factors
shapiro.test(residuals(fit))   # normality of residuals

Порушення не завжди роблять модель недійсною, але вони змінюють рівень впевненості в p-значеннях, тому перевірте їх, перш ніж повідомляти будь-який коефіцієнт.

Як робити прогнози за допомогою моделі лінійної регресії в R

Підбір моделі – це лише половина справи. Функція predict() застосовує підібрані коефіцієнти до нових спостережень.

predict(object, newdata, interval = "none", level = 0.95)
arguments:
-object: The model returned by lm()
-newdata: A data frame whose columns match the predictors used in the formula
-interval: "none", "confidence" for the mean response, or "prediction" for a single new case
-level: The confidence level, 0.95 by default

Виконайте ці три кроки.

  1. Створіть фрейм даних для нових випадків. Назви стовпців повинні точно збігатися з назвами предикторів у формулі, а рівні факторів повинні відповідати навчальним даним.
  2. Викличте predict(). Передайте підігнаний об'єкт та новий фрейм даних.
  3. Додайте інтервал. Оберіть «впевненість», якщо вам потрібна невизначеність щодо середньої реакції, та «прогноз», якщо вам потрібен запас ходу для одного окремого автомобіля.
new_cars <- data.frame(wt = c(2.5, 3.2), hp = c(110, 175))
fit_final <- lm(mpg ~ wt + hp, data = mtcars)

predict(fit_final, newdata = new_cars)
predict(fit_final, newdata = new_cars, interval = "prediction")

Зчитування результату. Прогнозується, що автомобіль вагою 2.5 тисячі фунтів (11000 кг) з потужністю 110 кінських сил (110 кінських сил) витрачатиме приблизно 24.1 милі на галон (24,1 милі на галон). Інтервал прогнозування завжди ширший за довірчий інтервал, оскільки він містить невизначеність окремого спостереження на додаток до невизначеності підібраної прямої.

Два правила забезпечують чесність прогнозів. Ніколи не екстраполюйте за межі діапазону навчальних предикторів, оскільки пряма лінія не має жодних доказів. І завжди оцінюйте на даних, які модель не бачила, інакше зареєстрована похибка є оптимістичною.

Лінійна регресія проти логістичної регресії в R

Аналітики часто вдаються до lm(), коли результат не є неперервним. У таблиці нижче показано, де пролягає межа.

Критерії Linear Regression Логістична регресія
Змінна відповіді безперервна Бінарний або категоріальний
Прогнозований вихід Будь-яке дійсне число Ймовірність між 0 та 1
Оцінка Звичайні найменші квадрати Максимальна ймовірність
Відповідність мірі R-квадрат, середньоквадратичне відхилення (RMSE) AIC, відхилення, точність
функція R lm(формула, дані) glm(формула, дані, сім'я = "біноміал")

Якщо результат — так чи ні, перейдіть до узагальнена лінійна модель замість того, щоб провести пряму лінію через нулі та одиниці.

Покрокова лінійна регресія в R

Остання частина цього підручника присвячена ступінчаста регресія алгоритм. Метою цього алгоритму є додавання та видалення потенційних кандидатів у моделі та утримання тих, хто має значний вплив на залежну змінну. Цей алгоритм має значення, коли набір даних містить великий список предикторів. Вам не потрібно вручну додавати та видаляти незалежні змінні. Покрокова регресія побудована для вибору найкращих кандидатів, які відповідають моделі.

Давайте розглянемо, як це працює на практиці. Ви використовуєте набір даних mtcars з неперервними змінними лише для педагогічної ілюстрації. Перш ніж розпочати аналіз, гарною практикою буде перевірити зв'язки в даних за допомогою матриці кореляції. Бібліотека GGally є розширенням ggplot2.

Бібліотека містить різні функції для показу зведених статистичних даних, таких як кореляція та розподіл усіх змінних у матриці. Ми будемо використовувати функцію ggscatmat, але ви можете звернутися до віньєтка для отримання додаткової інформації про бібліотеку GGally.

Основний синтаксис для ggscatmat() такий:

ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson")
arguments:
-df:  A matrix of continuous variables
-columns: Pick up the columns to use in the function. By default, all columns are used
-corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula

Ви відображаєте кореляцію для всіх ваших змінних і вирішуєте, які з них є найкращими кандидатами для першого кроку покрокової регресії. Існують деякі сильні кореляції між вашими змінними та залежною змінною, mpg.

library(GGally)
df <- mtcars %>%
	select(-c(am, vs, cyl, gear, carb))
ggscatmat(df, columns = 1: ncol(df))

вихід:

Покрокова лінійна регресія в R

Приклад покрокової регресії

Вибір змінних є важливою частиною підбору моделі, і покрокова регресія виконує цей пошук автоматично. Щоб оцінити, скільки можливих варіантів є в наборі даних, потрібно обчислити Приклад покрокової регресії де k — кількість предикторів. Кількість можливостей зростає з кількістю незалежних змінних. Тому потрібен автоматичний пошук.

Вам потрібно встановити пакет olsrr з CRAN. Пакет ще не доступний в Anaconda. Отже, ви встановлюєте його безпосередньо з командного рядка:

install.packages("olsrr")

Ви можете побудувати всі підмножини можливостей із критеріями відповідності (тобто R-квадрат, скоригований R-квадрат, критерії Байєса). Модель з найнижчими критеріями AIC буде остаточною.

library(olsrr)
model <- mpg~.
fit <- lm(model, df)
test <- ols_all_subset(fit)
plot(test)

Code Пояснення

  • милі на галон ~.: Побудуйте модель для оцінки
  • lm(модель, df): Запустіть модель OLS
  • ols_all_subset(підгонка): Побудуйте графіки з відповідною статистичною інформацією
  • ділянка (тест): Побудуйте графіки

вихід:

Приклад покрокової регресії

Моделі лінійної регресії використовують t-тест оцінити статистичний вплив незалежної змінної на залежну змінну. Дослідники зазвичай встановлюють максимальний поріг на рівні 10 відсотків, а нижчі p-значення вказують на сильніший статистичний зв'язок. Навколо цього тесту будується покрокова регресія для додавання та видалення кандидатів-предикторів. Алгоритм працює наступним чином:

Покрокова лінійна регресія в R
Покрокова лінійна регресія в R
  • крок 1: Регресія кожного предиктора на y окремо. А саме, регресія x_1 на y, x_2 на y до x_n. Зберігайте р-значення і підтримувати регресор із значенням p, нижчим за визначене порогове значення (0.1 за замовчуванням). Предиктори зі значущістю, нижчою за порогове значення, будуть додані до остаточної моделі. Якщо жодна змінна не має p-значення, нижче за вхідний поріг, тоді алгоритм зупиняється, і ви маєте остаточну модель лише з константою.
  • крок 2: Використовуйте предиктор із найнижчим p-значенням і додайте окремо одну змінну. Ви регресуєте константу, найкращий предиктор першого кроку та третьої змінної. Ви додаєте до покрокової моделі нові предиктори зі значенням, нижчим за вхідний поріг. Якщо жодна змінна не має p-значення нижче 0.1, тоді алгоритм зупиняється, і ви маєте остаточну модель лише з одним предиктором. Ви регресуєте поетапну модель, щоб перевірити значущість найкращих предикторів кроку 1. Якщо він вищий за поріг видалення, ви зберігаєте його в поетапній моделі. В іншому випадку ви виключаєте його.
  • крок 3: Ви повторюєте крок 2 на новій найкращій поетапній моделі. Алгоритм додає предиктори до покрокової моделі на основі введених значень і виключає предиктор із покрокової моделі, якщо він не задовольняє порогове значення виключення.
  • Алгоритм продовжує працювати, доки жодна змінна не може бути додана або виключена.

Ви можете виконати алгоритм за допомогою функції ols_stepwise() з пакету olsrr.

ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE)

arguments:
-fit:  Model to fit. Need to use `lm()`before to run `ols_stepwise()
-pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1
-prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3
-details: Print the details of each step

⚠️ Примітка до пакету: Останні версії olsrr перейменували ці функції. Використовуйте ols_step_all_possible() замість ols_all_subset() та ols_step_both_p() замість ols_stepwise(). Аргументи та результат залишаються незмінними.

Перед цим ми покажемо вам кроки алгоритму. Нижче наведено таблицю із залежними та незалежними змінними:

Залежна змінна Незалежні змінні
милі на галон розсилка
hp
драт
wt
qsec

Старт

Почнемо з того, що алгоритм починається з запуску моделі для кожної незалежної змінної окремо. У таблиці показано p-значення для кожної моделі.

## [[1]]
##  (Intercept)         disp 
## 3.576586e-21 9.380327e-10 
## 
## [[2]]
##  (Intercept)           hp 
## 6.642736e-18 1.787835e-07 
## 
## [[3]]
##  (Intercept)         drat 
## 0.1796390847 0.0000177624 
## 
## [[4]]
##  (Intercept)           wt 
## 8.241799e-19 1.293959e-10 
## 
## [[5]
## (Intercept)        qsec 
##  0.61385436  0.01708199

Щоб увійти в модель, алгоритм зберігає змінну з найменшим p-значенням. З наведеного вище результату це мас

крок 1

На першому кроці алгоритм незалежно запускає mpg для wt та інших змінних.

## [[1]]
##  (Intercept)           wt         disp
## 4.910746e-16 7.430725e-03 6.361981e-02 
## 
## [[2]]
##  (Intercept)           wt           hp 
## 2.565459e-20 1.119647e-06 1.451229e-03 
## 
## [[3]]
##  (Intercept)           wt         drat 
## 2.737824e-04 1.589075e-06 3.308544e-01 
## 
## [[4]]
##  (Intercept)           wt         qsec 
## 7.650466e-04 2.518948e-11 1.499883e-03

Кожна змінна є потенційним кандидатом для включення до остаточної моделі. Однак алгоритм залишає лише змінну з нижчим p-значенням. Виявляється, що hp має дещо нижче p-значення, ніж qsec, тому hp входить до остаточної моделі.

крок 2

Алгоритм повторює перший крок, але цього разу з двома незалежними змінними в остаточній моделі.

## [[1]]
##  (Intercept)           wt           hp         disp 
## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 
## 
## [[2]]
##  (Intercept)           wt           hp         drat 
## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 
## 
## [[3]]
##  (Intercept)           wt           hp         qsec 
## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01

Жоден з кандидатів, що залишилися, не має p-значення нижче порогу входу. Алгоритм на цьому зупиняється, і це остаточна модель:

## 
## Call:
## lm(formula = mpg ~ wt + hp, data = df)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.941 -1.600 -0.182  1.050  5.854 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.22727    1.59879  23.285  < 2e-16 ***
## wt          -3.87783    0.63273  -6.129 1.12e-06 ***
## hp          -0.03177    0.00903  -3.519  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.593 on 29 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8148 
## F-statistic: 69.21 on 2 and 29 DF,  p-value: 9.109e-12

Ви можете використовувати функцію ols_stepwise(), щоб порівняти результати.

stp_s <-ols_stepwise(fit, details=TRUE)

вихід:

Алгоритм знаходить рішення після двох кроків і повертає той самий результат, що й у покроковому покроковому посібнику вище.

Таким чином, остаточна модель пояснюється двома предикторами та перетином з точкою 1: кількість миль на галон негативно пов'язана як з валовою потужністю в кінських силах, так і з вагою.

## You are selecting variables based on p value...
## 1 variable(s) added....
## Variable Selection Procedure
##  Dependent Variable: mpg 
## 
##  Stepwise Selection: Step 1 
## 
##  Variable wt Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.868       RMSE                3.046 
## R-Squared               0.753       Coef. Var          15.161 
## Adj. R-Squared          0.745       MSE                 9.277 
## Pred R-Squared          0.709       MAE                 2.341 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##		ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     847.725         1        847.725    91.375    0.0000 
## Residual       278.322        30          9.277                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.285         1.878                 19.858    0.000    33.450    41.120 
##          wt    -5.344         0.559       -0.868    -9.559    0.000    -6.486    -4.203 
## ----------------------------------------------------------------------------------------
## 1 variable(s) added...
## Stepwise Selection: Step 2 
## 
##  Variable hp Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.909       RMSE                2.593 
## R-Squared               0.827       Coef. Var          12.909 
## Adj. R-Squared          0.815       MSE                 6.726 
## Pred R-Squared          0.781       MAE                 1.901 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##			ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     930.999         2        465.500    69.211    0.0000 
## Residual       195.048        29          6.726                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.227         1.599                 23.285    0.000    33.957    40.497 
##          wt    -3.878         0.633       -0.630    -6.129    0.000    -5.172    -2.584 
##          hp    -0.032         0.009       -0.361    -3.519    0.001    -0.050    -0.013 
## ----------------------------------------------------------------------------------------
## No more variables to be added or removed.

Лінійна регресія в R: ключові висновки та довідник функцій

  • Лінійна регресія відповідає на просте запитання: чи можна виміряти точний зв'язок між однією цільовою змінною та набором предикторів?
  • Метод звичайних найменших квадратів знаходить параметри, які мінімізують суму квадратичних помилок, тобто вертикальну відстань між прогнозованими значеннями y та фактичними значеннями y.
  • Імовірнісна модель, яка включає більше однієї незалежної змінної, називається моделлю множинної регресії.
  • Метою алгоритму покрокової лінійної регресії є додавання та видалення потенційних кандидатів у моделі та збереження тих, хто має значний вплив на залежну змінну.
  • Вибір змінних є важливою частиною підбору моделі, а покрокова регресія виконує цей пошук автоматично.

Кожна функція, що використовується в цьому посібнику, перелічена нижче:

Library Мета функція Аргументи
база Обчисліть лінійну регресію lm() формула, дані
база Узагальніть модель резюме() відповідати
база Extract-коефіцієнти lm()$коефіцієнт
база Extract залишків lm()$залишки
база Extract-підібране значення lm()$fitted.values
olsrr Запустіть покрокову регресію ols_stepwise() fit, pent = 0.1, prem = 0.3, деталі = FALSE

Примітка:Пам'ятайте, що перед підбором моделі потрібно перетворити категоріальні змінні на фактори.

Поширені запитання

Коефіцієнт детермінації (R-квадрат) завжди зростає, коли ви додаєте предиктор, навіть якщо він марний. Скоригований R-квадрат послаблює кожен зайвий член, тому він може знизитися. Використовуйте скоригований R-квадрат під час порівняння моделей з різною кількістю предикторів.

Графік «Залишки проти важеля» позначає впливові точки на відстані Кука. Дослідіть їх, перш ніж видаляти щось: випадок може бути помилкою введення даних або найінформативнішим спостереженням у вибірці.

Ні. R створює фіктивні змінні автоматично, щойно стовпець стає фактором. Перший рівень стає референтною групою, а кожен інший коефіцієнт зчитується як різниця від цієї базової лінії.

Лінійна регресія швидка, повністю піддається аудиту та її важко переналаштувати, що робить її стандартною основою, перш ніж будь-яка команда зі штучного інтелекту почне використовувати градієнтне бустинг або нейронні мережі. Регульовані сектори часто вимагають такої прозорості.

Так. Помічники ШІ можуть пропонувати кандидатські специфікації, пояснювати покрокові результати та попереджати про мультиколінеарність. Розглядайте пропозиції як гіпотези та підтверджуйте кожну з них за допомогою власної діагностики та знань предметної області.

Підсумуйте цей пост за допомогою: