Як виконати квадратичну регресію в r


Коли дві змінні мають лінійний зв’язок, ми часто можемо використовувати просту лінійну регресію , щоб кількісно визначити їхній зв’язок.

Приклад лінійної залежності

Однак, коли дві змінні мають квадратичний зв’язок, ми можемо використати квадратичну регресію , щоб кількісно визначити їхній зв’язок.

Приклад квадратичної залежності

У цьому посібнику пояснюється, як виконати квадратичну регресію в R.

Приклад: квадратична регресія в R

Припустімо, ми хочемо зрозуміти зв’язок між кількістю відпрацьованих годин і заявленим щастям. У нас є такі дані про кількість відпрацьованих годин на тиждень і рівень щастя (за шкалою від 0 до 100) для 11 різних людей:

Виконайте наступні кроки, щоб підібрати модель квадратичної регресії в R.

Крок 1: Введіть дані.

Спочатку ми створимо фрейм даних, що містить наші дані:

 #createdata
data <- data.frame(hours=c(6, 9, 12, 14, 30, 35, 40, 47, 51, 55, 60),
                   happiness=c(14, 28, 50, 70, 89, 94, 90, 75, 59, 44, 27))

#viewdata 
data

   hours happiness
1 6 14
2 9 28
3 12 50
4 14 70
5 30 89
6 35 94
7 40 90
8 47 75
9 51 59
10 55 44
11 60 27

Крок 2: Візуалізуйте дані.

Далі ми створимо просту діаграму розсіювання для візуалізації даних.

 #create scatterplot
plot(data$hours, data$happiness, pch=16) 

Діаграма розсіювання в R

Ми чітко бачимо, що дані не дотримуються лінійної моделі.

Крок 3. Підберіть просту модель лінійної регресії.

Далі ми підберемо просту модель лінійної регресії, щоб побачити, наскільки добре вона відповідає даним:

 #fit linear model
linearModel <- lm(happiness ~ hours, data=data)

#view model summary
summary(linearModel)

Call:
lm(formula = happiness ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-39.34 -21.99 -2.03 23.50 35.11 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept) 48.4531 17.3288 2.796 0.0208 *
hours 0.2981 0.4599 0.648 0.5331  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 28.72 on 9 degrees of freedom
Multiple R-squared: 0.0446, Adjusted R-squared: -0.06156 
F-statistic: 0.4201 on 1 and 9 DF, p-value: 0.5331

Загальна дисперсія рівня щастя, пояснена моделлю, становить лише 4,46% , як показує кратне значення R-квадрат.

Крок 4. Підберіть модель квадратичної регресії.

Далі ми підберемо модель квадратичної регресії.

 #create a new variable for hours 2
data$hours2 <- data$hours^2

#fit quadratic regression model
quadraticModel <- lm(happiness ~ hours + hours2, data=data)

#view model summary
summary(quadraticModel)

Call:
lm(formula = happiness ~ hours + hours2, data = data)

Residuals:
    Min 1Q Median 3Q Max 
-6.2484 -3.7429 -0.1812 1.1464 13.6678 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -18.25364 6.18507 -2.951 0.0184 *  
hours 6.74436 0.48551 13.891 6.98e-07 ***
hours2 -0.10120 0.00746 -13.565 8.38e-07 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 6.218 on 8 degrees of freedom
Multiple R-squared: 0.9602, Adjusted R-squared: 0.9502 
F-statistic: 96.49 on 2 and 8 DF, p-value: 2.51e-06

Загальна дисперсія рівня щастя, пояснена моделлю, зросла до 96,02% .

Ми можемо використати наступний код, щоб візуалізувати, наскільки добре модель відповідає даним:

 #create sequence of hour values
hourValues <- seq(0, 60, 0.1)

#create list of predicted happiness levels using quadratic model
happinessPredict <- predict(quadraticModel, list(hours=hourValues, hours2=hourValues^2))

#create scatterplot of original data values
plot(data$hours, data$happiness, pch=16)
#add predicted lines based on quadratic regression model
lines(hourValues, happinessPredict, col='blue')

Діаграма розсіювання квадратичної регресії в R

Ми бачимо, що лінія квадратичної регресії досить добре відповідає значенням даних.

Крок 5: Інтерпретація моделі квадратичної регресії.

На попередньому кроці ми побачили, що результат моделі квадратичної регресії:

 Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -18.25364 6.18507 -2.951 0.0184 *  
hours 6.74436 0.48551 13.891 6.98e-07 ***
hours2 -0.10120 0.00746 -13.565 8.38e-07 ***

На основі наведених тут коефіцієнтів скоригована квадратична регресія буде:

Щастя = -0,1012 (годин) 2 + 6,7444 (годин) – 18,2536

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

Наприклад, людина, яка працює 60 годин на тиждень, матиме рівень щастя 22,09 :

Щастя = -0,1012(60) 2 + 6,7444(60) – 18,2536 = 22,09

І навпаки, людина, яка працює 30 годин на тиждень, повинна мати рівень щастя 92,99 :

Щастя = -0,1012(30) 2 + 6,7444(30) – 18,2536 = 92,99

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *