Zum Inhalt springen

GNU R: Varianzanalysen

Aus Wikibooks

Einleitung

[Bearbeiten]

Varianzanalysen werden in manchen Fachgebieten wie z.B. Psychologie sehr häufig eingesetzt. Zur erleichterten und flexibleren Berechnung in R ist die Funktion ezANOVA aus dem Zusatzpacket „ez“ sehr zu empfehlen. Sie bietet einen intuitiven Zugang um gezielt Zwischen- und Innersubjektfaktoren anzugeben, Varianzanalysen mit Messwiederholung durchzuführen und den Quadratsummentyp anzupassen. In der Grundeinstellung berechnet R Typ-I-Quadratsummen, während die Software SPSS bspw. Typ-III-Quadratsummen verwendet. Manchmal kommt es vor, dass man den Typ anpassen möchte oder muss. Die Funktion kann im Falle einer Messwiederholung auf einem mindestens dreistufigen Faktor einen Mauchly-Test durchführen um die Sphärizität zu prüfen und korrigierte p-Werte gemäß Greenhouse-Geisser sowie Huynh-Feldt mit den jeweiligen Epsilon-Werten ausgeben. Bei einem reinen Zwischensubjekt-Design wird die Varianzhomogenität mit dem Levene-Test geprüft.

Berechnung

[Bearbeiten]

Das Paket muss zunächst mit einigen Abhängigkeiten installiert und geladen werden: install.packages("ez",dep=T) library("ez") Wegen der vielen Abhängigkeiten kann das Aktivieren einen kurzen Moment dauern.

Der Aufruf der Funktion lautet: ezANOVA(

data=…, #Name des Datensatzes
dv=.(…), #Name der Variable im Datensatz, welche die abhängige Variable darstellt und numerische Messwerte enthalten muss
wid=.(…), #Name der Variable im Datensatz, in der die Labels der Subjekte (z.B. Versuchpersonen-IDs) als Faktor abgelegt sind
between=.(…) #Namen der Datensatzvariablen, in denen die Zwischensubjektfaktoren abgelegt sind
within=.(…), #Namen der Datensatzvariablen, welche die Innersubjektfaktoren enthalten
type=… # Wahl des Quadratsummentyps, numerischer Wert von 1 bis 3 (bei Bedarf)

)

Falls keine Inner- oder Zwischensubjektfaktoren vorhanden sind, muss man das jeweilige Argument nicht angeben. Eines von beidem, sowie data, dv und wid sind jedoch zwingend. Bei gemischtem Design sind beide anzugeben. Type steht standardmäßig auf 2, was sich bei balancierten Daten wie 1 verhält und andernfalls versucht, die Unbalanciertheit auszugleichen, mit 3 kann man Quadratsummen wie in SPSS oder SAS erhalten.

Beispiele

[Bearbeiten]

Es folgen ein paar Beispiele zur Verdeutlichung.

einfaktoriell ohne Messwiederholung

[Bearbeiten]

Der datensatz chickwts aus dem Paket datasets enthält die Gewichtsangaben von 71 Hühnern und deren jeweilige Nahrung. data("chickwts") chickwts

Dieser Datensatz hat noch keine Variable mit den Subjektlabels, die man aber schnell erzeugen kann. id<-c(1:nrow(chickwts)) chickwts<-cbind(id,chickwts) Jetzt kann man die ANoVA rechnen: ezANOVA(

data=chickwts,
wid=.(id),
dv=.(weight),
between=.(feed)

) Es gibt nur einen Zwischensubjektfaktor und type wird nicht verändert. Die Konsole zeigt eine Tabelle mit der F-Statistik an (Freiheitsgrade für effekt und fehler, F- und p-Wert, Signifikanz) und eine Tabelle mit den ergebnissen des Levene-Tests zur Prüfung der Homogenität.

einfaktoriell mit Innersubjekt-Faktor (reine Messwiederholung)

[Bearbeiten]

Jede Versuchsperson bekommt auf einem Bildschirm wortpaare (Tiernamen) gezeigt und muss per Tastendruck mitteilen, ob der linke oder der rechte Tiername das größere Tier bezeichnet. Die Tiernamen sind so gewählt, dass es vier Größenunterschiede gibt: 1:2, 1:4, 1:8, 1:16. Gemessen wird die Reaktionszeit, also wie schnell die Versuchsperson die Taste drückt. Jeder Person werden alle vier Größenunterschiede dargeboten, daher handelt es sich um eine komplette messwiederholung. Die ANOVA soll die Frage beantworten, ob die Variation des größenunterschiedes die Reaktionszeit beeinflusst.

Zunächst wird ein Datensatz erzeugt, der je Versuchsperson und Größenunterschied die mittlere Reaktionszeit enthält: Data_Messwiederholung<-data.frame(

Vp=factor(rep(0:7,4)),
Größe=factor(rep(1:4,each=8)),
Rz=c(738.8298, 905.5615, 945.9506, 694.2250, 745.8411, 830.0245, 666.9504, 765.9651, 738.0186, 820.4848, 846.3116, 700.0331, 699.9919, 835.6668, 566.5338, 784.8430, 725.2652, 778.1677, 772.7731, 598.2907, 655.1092, 721.8874, 544.1797, 707.9639, 495.0317, 678.1838, 548.7975, 539.4929, 596.7639, 564.2650, 461.5280, 623.2655)

) Data_Messwiederholung

Nun kann die ANOVA gerechnet werden: ezANOVA(

data=Data_Messwiederholung,
dv=.(Rz),
wid=.(Vp),
within=.(Größe),

)

In der R-Konsole erscheint die Tabelle mit den ANOVA-Ergebnissen, eine mit den Ergebnissen des mauchly-Tests (Sphärizität) und die korrigierten p-Werte. Da der mauchly-Test aber diesmal nicht signifikant ist, ist diese Sphärizitätskorrektur nicht unbedingt nötig.