Hoe voer je een manova uit in r
Om MANOVA te begrijpen, is het eerst nuttig om ANOVA te begrijpen.
Een ANOVA (variantieanalyse) wordt gebruikt om te bepalen of er al dan niet een statistisch significant verschil bestaat tussen de gemiddelden van drie of meer onafhankelijke groepen.
Laten we bijvoorbeeld zeggen dat we willen weten of studietechniek al dan niet invloed heeft op de examenscores van een klas studenten. We verdeelden de klas willekeurig in drie groepen. Elke groep gebruikt een maand lang een andere studietechniek ter voorbereiding op een examen. Aan het einde van de maand leggen alle studenten hetzelfde examen af.
Om erachter te komen of het bestuderen van techniek invloed heeft op examenscores, kunnen we een one-way ANOVA uitvoeren, die ons vertelt of er een statistisch significant verschil is tussen de gemiddelde scores van de drie groepen.
Bij een ANOVA hebben we een responsvariabele. Bij een MANOVA (multivariate variantieanalyse) hebben we echter meerdere responsvariabelen.
Stel dat we bijvoorbeeld willen weten wat de impact is van het opleidingsniveau (dwz middelbare school, universitair diploma, bachelordiploma, masterdiploma, enz.) op zowel het jaarinkomen als de hoogte van de studieschuld. In dit geval hebben we één factor (opleidingsniveau) en twee responsvariabelen (jaarinkomen en studieschuld), zodat we een eenrichtings-MANOVA kunnen uitvoeren.
Gerelateerd: De verschillen tussen ANOVA, ANCOVA, MANOVA en MANCOVA begrijpen
Hoe voer je een MANOVA uit in R
In het volgende voorbeeld illustreren we hoe we een eenrichtings-MANOVA in R kunnen uitvoeren met behulp van de ingebouwde irisdataset , die informatie bevat over de lengte en breedte van verschillende bloemafmetingen voor drie verschillende soorten (“setosa”, “virginica” , “veelkleurig”):
#view first six rows of iris dataset
head(iris)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa
Stel dat we willen weten of soorten een effect hebben op de lengte en breedte van de kelkblaadjes. Door soorten als de onafhankelijke variabele te gebruiken, en de lengte en breedte van het kelkblad als de responsvariabelen, kunnen we een eenrichtings-MANOVA uitvoeren met behulp van de functie manova() in R.
De functie manova() gebruikt de volgende syntaxis:
manova (cbind (rv1, rv2, …) ~ iv, gegevens)
Goud:
- rv1, rv2 : responsvariabele 1, responsvariabele 2, enz.
- iv : onafhankelijke variabele
- data : naam van het dataframe
In ons voorbeeld met de irisgegevensset kunnen we een MANOVA fitten en de resultaten weergeven met behulp van de volgende syntaxis:
#fit the MANOVA model model <- manova(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris) #view the results summary(model) # Df Pillai approx F num Df den Df Pr(>F) #Species 2 0.94531 65.878 4,294 < 2.2e-16 *** #Residuals 147 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Uit het resultaat kunnen we zien dat de F-statistiek 65,878 is en dat de overeenkomstige p-waarde extreem klein is. Dit geeft aan dat er een statistisch significant verschil is in kelkbladmetingen, afhankelijk van de soort.
Technische opmerking: manova() gebruikt standaard de Pillai- teststatistiek. Omdat de verdeling van deze teststatistiek complex is, wordt ook een geschatte F-waarde gegeven voor eenvoudiger interpretatie.
Bovendien is het mogelijk om ‚Roy‘, ‚Hotelling-Lawley‘ of ‚Wilks‘ op te geven als de te gebruiken teststatistiek met behulp van de volgende syntaxis: summary(model, test = ‚Wilks‘)
Om precies te weten te komen hoe de lengte en breedte van de kelkblaadjes worden beïnvloed door soorten , kunnen we univariate ANOVA’s uitvoeren met behulp van summary.aov() zoals weergegeven in de volgende code:
summary.aov(model) # Response Sepal.Length: # Df Sum Sq Mean Sq F value Pr(>F) #Species 2 63.212 31.606 119.26 < 2.2e-16 *** #Residuals 147 38.956 0.265 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # Response Sepal.Width: # Df Sum Sq Mean Sq F value Pr(>F) #Species 2 11.345 5.6725 49.16 < 2.2e-16 *** #Residuals 147 16.962 0.1154 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Uit het resultaat kunnen we zien dat de p-waarden voor beide univariate ANOVA’s extreem laag zijn (<2,2e-16), wat aangeeft dat soorten een statistisch significant effect hebben op de breedte en lengte van de kelkblaadjes .
Visualiseer de hulpbronnen van de groep
Het kan ook nuttig zijn om de groepsgemiddelden voor elk niveau van onze onafhankelijke variabele soort te visualiseren om onze resultaten beter te begrijpen.
We kunnen bijvoorbeeld de gplots- bibliotheek en de plotmeans() -functie gebruiken om de gemiddelde lengte van kelkblaadjes per soort te visualiseren:
#load gplots library library(gplots) #visualize mean sepal length by species plotmeans(iris$Sepal.Length ~ iris$Species)
Uit de grafiek kunnen we zien dat de gemiddelde kelkbladlengte sterk varieert tussen soorten. Dit komt overeen met de resultaten van onze MANOVA, die ons vertelde dat er een statistisch significant verschil was in de kelkbladmetingen tussen soorten.
We kunnen ook de gemiddelde breedte van de kelkblaadjes per soort visualiseren:
plotmeans(iris$Sepal.Width ~ iris$Species)
Bekijk hier de volledige documentatie voor de functie manova() .