Коли використовувати aov() проти anova() у r


Функції aov() і anova() у R здаються схожими, але насправді ми використовуємо їх у двох різних сценаріях.

Ми використовуємо aov() , коли хочемо підібрати модель ANOVA та відобразити результати в підсумковій таблиці ANOVA.

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

Наступні приклади показують, як використовувати кожну функцію на практиці.

Приклад 1: як використовувати aov() у R

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

Ми набираємо 90 людей для участі в експерименті, у якому випадковим чином призначаємо 30 осіб, які будуть виконувати Програму A, B або C протягом місяця.

Наступний код показує, як використовувати функцію aov() у R для виконання цього одностороннього дисперсійного аналізу:

 #make this example reproducible
set. seeds (0)

#create data frame
df <- data. frame (program = rep(c("A", "B", "C"), each= 30 ),
                 weight_loss = c(runif(30, 0, 3),
                                 runif(30, 0, 5),
                                 runif(30, 1, 7)))

#fit one-way anova using aov()
fit <- aov(weight_loss ~ program, data=df)

#view results
summary(fit)

            Df Sum Sq Mean Sq F value Pr(>F)    
program 2 98.93 49.46 30.83 7.55e-11 ***
Residuals 87 139.57 1.60                     
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

З результатів моделі ми бачимо, що p-значення програми (0,0000000000755) менше 0,05, що означає, що існує статистично значуща різниця в середній втраті ваги між трьома програмами.

Приклад 2: як використовувати anova() у R

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

Повна модель: бал = β 0 + B 1 (годин) + B 2 (годин) 2

Скорочена модель: оцінка = β 0 + B 1 (годин)

У наведеному нижче коді показано, як використовувати функцію anova() у R для виконання тесту на відсутність відповідності, щоб визначити, чи забезпечує повна модель значно кращу відповідність, ніж зменшена модель:

 #make this example reproducible
set. seeds (1)

#create dataset
df <- data.frame(hours = runif(50, 5, 15), score=50)
df$score = df$score + df$hours^3/150 + df$hours*runif(50, 1, 2)

#view head of data
head(df)

      hours score
1 7.655087 64.30191
2 8.721239 70.65430
3 10.728534 73.66114
4 14.082078 86.14630
5 7.016819 59.81595
6 13.983897 83.60510

#fit full model
full <- lm(score ~ poly(hours,2), data=df)

#fit reduced model
reduced <- lm(score ~ hours, data=df)

#perform lack of fit test using anova()
anova(full, reduced)

Analysis of Variance Table

Model 1: score ~ poly(hours, 2)
Model 2: score ~ hours
  Res.Df RSS Df Sum of Sq F Pr(>F)   
1 47 368.48                                
2 48 451.22 -1 -82.744 10.554 0.002144 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Оскільки p-значення у вихідній таблиці (0,002144) менше 0,05, ми можемо відхилити нульову гіпотезу тесту та зробити висновок, що повна модель забезпечує статистично суттєво кращу відповідність, ніж скорочена модель.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в R:

Як виконати односторонній дисперсійний аналіз у R
Як виконати двосторонній дисперсійний аналіз у R
Як виконати повторний аналіз ANOVA у R

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

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