Een drieweg-anova uitvoeren in r


Een drieweg-ANOVA wordt gebruikt om te bepalen of er al dan niet een statistisch significant verschil bestaat tussen de gemiddelden van drie of meer onafhankelijke groepen die over drie factoren zijn verdeeld.

In het volgende voorbeeld ziet u hoe u een drieweg-ANOVA in R uitvoert.

Voorbeeld: Drieweg-ANOVA in R

Stel dat een onderzoeker wil bepalen of twee trainingsprogramma’s leiden tot verschillende gemiddelde verbeteringen in de spronghoogte onder universiteitsbasketbalspelers.

De onderzoeker vermoedt dat geslacht en divisie (Divisie I of II) ook van invloed kunnen zijn op de spronghoogte, daarom verzamelt hij ook gegevens over deze factoren.

Zijn doel is om een drieweg-ANOVA uit te voeren om te bepalen hoe trainingsprogramma, geslacht en divisie de spronghoogte beïnvloeden.

Volg de volgende stappen om deze drieweg-ANOVA in R uit te voeren:

Stap 1: Creëer de gegevens

Laten we eerst een dataframe maken om de gegevens in op te slaan:

 #create dataset
df <- data. frame (program=rep(c(1, 2), each= 20 ),
                 gender=rep(c(' M ', ' F '), each= 10 , times= 2 ),
                 division=rep(c(1, 2), each= 5 , times= 4 ),
                 height=c(7, 7, 8, 8, 7, 6, 6, 5, 6, 5,
                          5, 5, 4, 5, 4, 3, 3, 4, 3, 3,
                          6, 6, 5, 4, 5, 4, 5, 4, 4, 3,
                          2, 2, 1, 4, 4, 2, 1, 1, 2, 1)) 

#view first six rows of dataset
head(df)

  program gender division height
1 1 M 1 7
2 1 M 1 7
3 1 M 1 8
4 1 M 1 8
5 1 M 1 7
6 1 M 2 6

Stap 2: Beschrijvende statistieken bekijken

Voordat we de drieweg-ANOVA uitvoeren, kunnen we dplyr gebruiken om snel de gemiddelde toename van de spronghoogte samen te vatten, gegroepeerd op trainingsprogramma, geslacht en divisie:

 library (dplyr)

#calculate mean jumping height increase grouped by program, gender, and division
df %>%
  group_by(program, gender, division) %>%
  summarize(mean_height = mean(height))

# A tibble: 8 x 4
# Groups: program, gender [4]
  program gender division mean_height
                 
1 1 F 1 4.6
2 1 F 2 3.2
3 1 M 1 7.4
4 1 M 2 5.6
5 2 F 1 2.6
6 2 F 2 1.4
7 2 M 1 5.2
8 2 M 2 4  

Zo interpreteert u het resultaat:

  • De gemiddelde toename in spronghoogte voor vrouwen uit Divisie I die Trainingsprogramma 1 gebruikten, was 11,5 cm .
  • De gemiddelde toename in spronghoogte onder Divisie II-vrouwen die Trainingsprogramma 1 gebruikten, was 9,5 cm .
  • De gemiddelde toename in spronghoogte onder Divisie I-mannen die Trainingsprogramma 1 gebruikten, was 19,4 centimeter .

Enzovoort.

Stap 3: Voer de drieweg-ANOVA uit

Vervolgens kunnen we de functie aov() gebruiken om de drieweg-ANOVA uit te voeren:

 #perform three-way ANOVA
model <- aov(height ~ program * gender * division, data=df)

#view summary of three-way ANOVA
summary(model)

                        Df Sum Sq Mean Sq F value Pr(>F)    
program 1 36.1 36.10 65.636 2.98e-09 ***
gender 1 67.6 67.60 122.909 1.71e-12 ***
division 1 19.6 19.60 35.636 1.19e-06 ***
program:gender 1 0.0 0.00 0.000 1.000    
program:division 1 0.4 0.40 0.727 0.400    
gender:division 1 0.1 0.10 0.182 0.673    
program:gender:division 1 0.1 0.10 0.182 0.673    
Residuals 32 17.6 0.55                     
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

De kolom Pr(>F) toont de p-waarde voor elke individuele factor en de interacties tussen de factoren.

Uit de resultaten kunnen we opmaken dat geen van de interacties tussen de drie factoren statistisch significant was.

We kunnen ook zien dat elk van de drie factoren – programma, geslacht en verdeeldheid – statistisch significant was.

We kunnen nu dplyr opnieuw gebruiken om de gemiddelde spronghoogtetoename voor programma, geslacht en divisie afzonderlijk te vinden:

 library (dplyr)

#find mean jumping increase by program
df %>%
  group_by(program) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  program mean_height
           
1 1 5.2
2 2 3.3

#find mean jumping increase by gender
df %>%
  group_by(gender) %>%
  summarize(mean_height = mean(height))

# A tibble: 2 x 2
  gender mean_height
          
1 F 2.95
2M 5.55

#find mean jumping increase by division
df %>%
group_by(division) %>%
summarize(mean_height = mean(height))

# A tibble: 2 x 2
  division mean_height
            
1 1 4.95
2 2 3.55

Uit het resultaat kunnen we het volgende opmaken:

  • De gemiddelde toename in spronghoogte bij personen die trainingsprogramma 1 ( 5,2 inch ) gebruikten was groter dan de gemiddelde toename bij personen die trainingsprogramma 2 (3,3 inch ) gebruikten.
  • De gemiddelde toename in spronghoogte bij mannen ( 5,55 inch ) was groter dan de gemiddelde toename bij vrouwen (2,95 inch ).
  • De gemiddelde toename in spronghoogte onder spelers uit Divisie 1 ( 4,95 inch ) was groter dan de gemiddelde toename onder spelers uit Divisie 2 (3,55 inch ).

Concluderend zouden we kunnen zeggen dat trainingsprogramma, geslacht en divisie allemaal belangrijke indicatoren zijn voor de toegenomen spronghoogte bij spelers.

We zouden ook zeggen dat er geen significante interactie-effecten zijn tussen deze drie factoren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere ANOVA-modellen in R kunt passen:

Eenrichtings-ANOVA uitvoeren in R
Hoe tweeweg-ANOVA uit te voeren in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert