Kiedy używać aov() kontra anova() w r


Funkcje aov() i anova() w R wydają się podobne, ale w rzeczywistości używamy ich w dwóch różnych scenariuszach.

Używamy aov() , gdy chcemy dopasować model ANOVA i wyświetlić wyniki w tabeli podsumowującej ANOVA.

Z funkcji anova() korzystamy, gdy chcemy porównać dopasowanie zagnieżdżonych modeli regresji w celu ustalenia, czy model regresji z określonym zestawem współczynników zapewnia znacznie lepsze dopasowanie niż model zawierający tylko podzbiór współczynników.

Poniższe przykłady pokazują, jak wykorzystać każdą funkcję w praktyce.

Przykład 1: Jak używać aov() w R

Załóżmy, że chcemy przeprowadzić jednoczynnikową analizę ANOVA , aby ustalić, czy trzy różne programy ćwiczeń mają różny wpływ na utratę wagi.

Rekrutujemy 90 osób do udziału w eksperymencie, w ramach którego losowo przydzielamy 30 osób do udziału w Programie A, Programie B lub Programie C przez miesiąc.

Poniższy kod pokazuje, jak użyć funkcji aov() w R, aby wykonać jednokierunkową analizę ANOVA:

 #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

Z wyników modelu wynika, że wartość p programu (0,0000000000755) jest mniejsza niż 0,05, co oznacza, że istnieje statystycznie istotna różnica w średniej utracie masy ciała pomiędzy trzema programami.

Przykład 2: Jak używać anova() w R

Załóżmy, że chcemy wykorzystać liczbę przepracowanych godzin do przewidywania wyników egzaminów studentów określonej uczelni. Możemy zdecydować się na dostosowanie następujących dwóch modeli regresji:

Model pełny: wynik = β 0 + B 1 (godziny) + B 2 (godziny) 2

Model zredukowany: wynik = β 0 + B 1 (godziny)

Poniższy kod pokazuje, jak używać funkcji anova() w języku R do przeprowadzenia testu braku dopasowania w celu ustalenia, czy pełny model zapewnia znacznie lepsze dopasowanie niż model zredukowany:

 #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

Ponieważ wartość p w tabeli wyjściowej (0,002144) jest mniejsza niż 0,05, możemy odrzucić hipotezę zerową testu i stwierdzić, że model pełny zapewnia statystycznie istotnie lepsze dopasowanie niż model zredukowany.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Jak wykonać jednokierunkową ANOVA w R
Jak wykonać dwukierunkową ANOVA w R
Jak wykonać powtarzane pomiary ANOVA w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *