Ein Team von Tierärztinnen der University of St. Meow möchte erforschen, welchen Einfluss das verabreichte Futter (Nassfutter vs. Trockenfutter) sowie die Haltungsweise (Freigänger vs. Stubentiger) auf das Körpergewicht von Katzen haben.
Die Forscherinnen haben 400 Katzen zufällig auf adoptionswillige Haushalte verteilt, sobald sie im abgabefähigen Alter waren (ca. 15 Wochen nach der Geburt, nach Ahola, Vapalahiti, & Lohi, 2017).
Die Haushalte erhielten die Anweisung, entweder ausschließlich Trockenfutter oder ausschließlich Nassfutter zu verabreichen. Weiterhin wurden sie angewiesen, die Katze entweder als Freigänger aufzuziehen oder sie ausschließlich im Haus zu halten. Die Einhaltung der Anweisungen wurde kontrolliert.
Nach einem Jahr wurden alle Katzen gewogen.
Die Tierärztinnen stellten folgende Hypothesen auf:
1. Die Fütterung von Nassfutter führt zu einem höheren Gewicht als die Fütterung von Trockenfutter.
2. Die Haltung als Stubentiger führt zu einem höheren Gewicht als die Haltung als Freigänger.
3. Bei Stubentigern hat das (Nass-) Futter einen stärkeren Einfluss auf das Gewicht als bei Freigängern.
(Referenzen: Ahola, M. K., Vapalahti, K., & Lohi, H. (2017). Early weaning increases aggression and stereotypic behaviour in cats. Scientific reports, 7(1), 10412.)
Stellen Sie die statistischen Hypothesen auf.
Erstellen Sie drei Diagramme mit Mittelwerten und 95% Konfidenzintervallen:
Berechnen Sie a) ein lineares Modell mit beiden Haupteffekten und Interaktion b) eine zweifaktorielle Varianzanalyse als schrittweisen Modellvergleich “per Hand” und c) direkt über den entsprechenden Befehl im Commander
Berechnen Sie die Effektgröße
Haupteffekt “Art der Fütterung”:
H1,1: QS(Modell mit Fütterung)/df(Modell mit Fütterung) > QS(Modell ohne Fütterung)/df(Modell ohne Fütterung)
H0,1: QS(Modell mit Fütterung)/df(Modell mit Fütterung) <= QS(Modell ohne Fütterung)/df(Modell ohne Fütterung)
Haupteffekt “Art der Haltung”:
H1,2: QS(Modell mit Haltung)/df(Modell mit Haltung) > QS(Modell ohne Haltung)/df(Modell ohne Haltung)
H0,2: QS(Modell mit Haltung)/df(Modell mit Haltung) <= QS(Modell ohne Haltung)/df(Modell ohne Haltung)
Interaktion “Art der Fütterung x Haltung”
H1,3: QS(Modell mit Fütterung x Haltung)/df(Modell mit Fütterung x Haltung) > QS(Modell ohne Fütterung x Haltung)/df(Modell ohne Fütterung x Haltung)
Die Richtung der Effekte lesen wir in diesem Fall aus den Graphen ab. In der nächsten Sitzung (Kontraste) werden wir sehen, wie man auch gerichtete Mittelwertshypothesen in mehrfaktoriellen Design testen kann.
library(Rcmdr)
## Loading required package: splines
## Loading required package: effects
## Registered S3 methods overwritten by 'lme4':
## method from
## cooks.distance.influence.merMod car
## influence.merMod car
## dfbeta.influence.merMod car
## dfbetas.influence.merMod car
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
## Das Commander GUI wird nur bei interaktiven Sessions gestartet
##
## Attaching package: 'Rcmdr'
## The following object is masked from 'package:base':
##
## errorCondition
with(cats_data, plotMeans(Gewicht, Futter, error.bars="conf.int", level=0.95, connect=TRUE))
Katzen, die mit Nassfutter gefüttert werden, scheinen ein höheres Gewicht zu haben als Katzen, die sich mit Trockenfutter begnügen müssen. Ein Tabelle mit deskriptiven Statistiken liefert die Mittelwerte.
with(cats_data, tapply(Gewicht, list(Futter), mean, na.rm=TRUE))
## Nassfutter Trockenfutter
## 4.771487 4.145290
with(cats_data, plotMeans(Gewicht, Haltung, error.bars="conf.int", level=0.95, connect=TRUE))
Stubentiger scheinen ein höheres Gewicht zu haben als Katzen, die sich draußen austoben dürfen. Ein Tabelle mit deskriptiven Statistiken liefert die Mittelwerte.
with(cats_data, tapply(Gewicht, list(Haltung), mean, na.rm=TRUE))
## Stubentiger Freigaenger
## 4.980095 3.936682
Kann man diese Aussagen so “nach außen” kommunizieren? Sind das sinnvolle Schlussfolgerungen?
Art der Haltung auf X-Achse:
with(cats_data, plotMeans(Gewicht, Futter, Haltung, error.bars="conf.int", level=0.95, connect=TRUE))
Art der Fütterung auf X-Achse:
with(cats_data, plotMeans(Gewicht, Haltung, Futter, error.bars="conf.int", level=0.95, connect=TRUE))
Die Interaktionsabbildungen offenbaren, dass der Haupteffekt für “Art der Fütterung” nicht global interpretierbar ist. Die Art der Fütterung macht nur für die Stubentiger einen Unterschied. Freigänger dagegen wiegen ungefähr dasselbe, egal was sie fressen.
Ob Haupteffekte “global” interpretiertbar sind oder nicht lässt sich am besten mit Hilfe von Abbildungen optisch prüfen.
Deskriptive Werte:
with(cats_data, tapply(Gewicht, list(Haltung,Futter), mean, na.rm=TRUE))
## Nassfutter Trockenfutter
## Stubentiger 5.563975 4.396215
## Freigaenger 3.978999 3.894365
Katzenmodell <- lm(Gewicht ~ Futter + Haltung + Futter*Haltung, data=cats_data)
summary(Katzenmodell)
##
## Call:
## lm(formula = Gewicht ~ Futter + Haltung + Futter * Haltung, data = cats_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.6808 -0.9177 -0.0367 0.9597 4.2277
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.5640 0.1478 37.647 < 2e-16 ***
## FutterTrockenfutter -1.1678 0.2090 -5.587 4.30e-08 ***
## HaltungFreigaenger -1.5850 0.2090 -7.583 2.42e-13 ***
## FutterTrockenfutter:HaltungFreigaenger 1.0831 0.2956 3.664 0.000282 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.478 on 396 degrees of freedom
## Multiple R-squared: 0.1702, Adjusted R-squared: 0.1639
## F-statistic: 27.07 on 3 and 396 DF, p-value: 6.012e-16
Intercept = Mittelwert der Referenzgruppe, das heißt der Mittelwert der Gruppe, die für beide binären Faktoren auf Level 1 ist (Stubentiger, die Nassfutter bekommen).
Futter[T.Trockenfutter] = Abstand der Referenzgruppe zur Gruppe die auf Faktor 1 (Art der Haltung) auf Level 1 ist (Stubentiger) aber bei Faktor 2 (Futter) auf Level 2 (Trockenfutter)
Haltung[Freigaenger] = Abstand der Referenzgruppe zur Gruppe die auf Faktor 2 (Futter) auf Level 1 ist (Nassfutter) aber bei Faktor 1 (Haltung) auf Level 2 (Freigänger)
Futter[T.Trockenfutter]:Haltung[T.Freigaenger] = Abstand der Level-2-Level-2 Gruppe (Trockenfutter, Freigänger) zu b0 + b1 + b2.
Anlegen und Vergleichen der benötigten Modelle für Haupteffekt Futter
#Modell mit Futter und Haltung
M1 <- lm(Gewicht ~ Futter + Haltung, data = cats_data)
#Modell nur mit Haltung
M2 <- lm(Gewicht ~ Haltung, data = cats_data)
#Vergleich
anova(M1,M2)
## Analysis of Variance Table
##
## Model 1: Gewicht ~ Futter + Haltung
## Model 2: Gewicht ~ Haltung
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 397 894.29
## 2 398 933.50 -1 -39.212 17.407 3.708e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Modell mit Futter ist besser als ohne, Faktor sollte drinbleiben
Anlegen und Vergleichen der benötigten Modelle für Haupteffekt Haltung
#Modell nur mit Futter
M3 <- lm(Gewicht ~ Futter, data = cats_data)
#Vergleich mit dem (oben bereits angelegten) Modell mit beiden Faktoren
anova(M1,M3)
## Analysis of Variance Table
##
## Model 1: Gewicht ~ Futter + Haltung
## Model 2: Gewicht ~ Futter
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 397 894.29
## 2 398 1003.16 -1 -108.87 48.331 1.487e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Modell mit Haltung ist besser als ohne, Faktor sollte drinbleiben
Anlegen und Vergleichen der benötigten Modelle für Test der Interaktion
#Modell mit Interaktion
M4 <- lm(Gewicht ~ Futter * Haltung, data = cats_data)
#Vergleich mit (oben bereits angelegtem) Modell ohne Interaktion:
anova(M1,M4)
## Analysis of Variance Table
##
## Model 1: Gewicht ~ Futter + Haltung
## Model 2: Gewicht ~ Futter * Haltung
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 397 894.29
## 2 396 864.96 1 29.329 13.428 0.0002817 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Modell mit Interaktion ist besser als ohne, Faktor sollte im Modell bleiben
Woran sieht man im anova-Output (Test für Modellvergleich, nicht verwechseln mit Anova-Befehl mit großem A, siehe weiter unten) welches das bessere Modell war, wenn der Test signifikant ist? Das Modell mit mehr Prädiktoren ist immer besser, wenn der Test signifikant ist. Wenn man mehr Prädiktoren ins Modell aufnimmt, können genau zwei Dinge passieren: entweder der neue Prädiktor erklärt noch Teile der Varianz, die vorher nicht erklärt werden konnten. Wenn dieser zusätzlich erklärte Teil groß genug ist, wird der Test signifikant. Die zweite Möglichkeit ist, dass der neue Prädiktor nichts zusätzliches erklären kann. Dann wird der Test nicht signifikant. Das Hinzunehmen eines neuen Prädiktors kann aber ja keine Varianzaufklärung der anderen Prädiktoren “rückgängig machen”, daher kann es nicht passieren, dass das Modell mit weniger Prädiktoren mehr Varianz aufklärt und der Test auf diese Weise signifikant wird. Sehen kann man es aber zusätzlich auch immer an der Höhe der Residual Sum of Squares: wenn diese höher ist, ist ja noch “mehr Fehler” im Modell, dieses Modell ist also schlechter. Im letzten Output sieht man, dass die RSS von Modell 1 (ohne Interaktion) höher ist als die von Modell 2 (mit Interaktion).
R kann das alles in einem Schritt über den “Anova()” Befehl für uns machen.
Anova(Katzenmodell)
## Anova Table (Type II tests)
##
## Response: Gewicht
## Sum Sq Df F value Pr(>F)
## Futter 39.21 1 17.952 2.820e-05 ***
## Haltung 108.87 1 49.844 7.513e-12 ***
## Futter:Haltung 29.33 1 13.428 0.0002817 ***
## Residuals 864.96 396
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
über R-Commander –> Mittelwerte vergleichen –> Mehrfaktorielle Varianzanalyse
AnovaModel.1 <- lm(Gewicht ~ Futter*Haltung, data=cats_data, contrasts=list(Futter ="contr.Sum", Haltung ="contr.Sum"))
Anova(AnovaModel.1)
## Anova Table (Type II tests)
##
## Response: Gewicht
## Sum Sq Df F value Pr(>F)
## Futter 39.21 1 17.952 2.820e-05 ***
## Haltung 108.87 1 49.844 7.513e-12 ***
## Futter:Haltung 29.33 1 13.428 0.0002817 ***
## Residuals 864.96 396
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Signifikante Interaktion zwischen Art der Fütterung sowie Art der Haltung. Der gefundene Effekt, dass Katzen, die Nassfutter bekommen, im Schnitt mehr wiegen als Katzen, die Trockenfutter bekommen, lässt sich vor allem dadurch erklären, dass Stubentiger mit Nassfutterdiät übermäßig viel mehr wiegen als alle anderen Katzen.
Implikation: Bei Stubentigern sollte entweder auf genügend Bewegung geachtet werden (üppiger Kratzbaum, Katzentunnel, Spielzeugmäuse, Katzenangel), oder auf eine Fütterung von Nassfutter zugunsten von Trockenfutter verzichtet werden.
library(lsr)
etaSquared(AnovaModel.1)
## eta.sq eta.sq.part
## Futter 0.03761823 0.04336806
## Haltung 0.10444538 0.11179657
## Futter:Haltung 0.02813682 0.03279593
oder Cohen’s f:
Effektgröße für Haupteffekt “Art der Fütterung”:
# Effektgröße für HE Futter
f_Futter <- sqrt(39.21/864.96)
f_Futter
## [1] 0.2129121
# Effektgröße für HE Haltung
f_Haltung <- sqrt(108.87/864.96)
f_Haltung
## [1] 0.3547775
# Effektgröße für Interkation "Futter" x "Haltung"
f_Interaktion <- sqrt(29.33/864.96)
f_Interaktion
## [1] 0.1841442
Mit diesen Effektgrößen könne wir für jeden der Effekte eine Post-hoc-Poweranalyse durchführen. (WICHTIG: G-Power benötigt f und nicht f^2.)
Für Haupteffekt “Futter”:
WICHTIGE ANMERKUNG: In der Übung 1 (Mo von 16 bis 18 Uhr) hatten wir überlegt, ob man bei Anzahl Gruppen für die Haupteffekte 2 oder 4 hineinschreibt. 4 ist korrekt, auch wenn in den Haupteffekt-Vergleich zwei Gruppenmittelwerte (für jeden Mittelwert im HE wird ja über die anderen beiden Gruppen gemittelt) eingehen. G-Power möchte hier aber trotzdem die Gesamtzahl der Gruppen haben.
Für Haupteffekt “Haltung”:
Für Interkationseffekt “Futter” x “Haltung”:
Wie würde man die Ergebnisse der durchgeführten Analyse z.B. in einer Bachelorarbeit oder in einem Journalartikel berichten?
Hier ein Beispiel, wie das in einer Bachelorarbeit aussehen könnte:
Ergebnisse und Interpretation:
Eine grafische Übersicht über die Gruppenmittelwerte ist in Abb. 1 dargestellt. Deskriptive Statistiken sind in Tab. 1 aufgeführt.
Tab. 1
Mittelwerte und Standardabweichungen
Fütterung | Stubentiger | Freigänger |
---|---|---|
Nassfutter | 5.56 (SD = 1.63) | 3.98 (SD = 1.49) |
Trockenfutter | 4.40 (SD = 1.44) | 3.89 (SD = 1.34) |
Es wurde eine 2 (Art der Fütterung: “Nassfutter” vs. “Trockenfutter”; between-subjects) x 2 (Art der Haltung: “Stubentiger” vs. “Freigänger”; between-subjects) Varianzanalyse durchgeführt. Diese Analyse ergab einen signifikanten Haupteffekt für den Faktor “Art der Fütterung”. Katzen, die mit Nassfutter gefüttert werden, wiegen mehr als Katzen, die Trockenfutter bekommen, F(1, 396) = 17.952, p < .001, f = .213. Außerdem zeigte sich ein signifikanter Haupteffekt für “Art der Haltung”. Stubentiger wiegen im Durchschnitt mehr als Freigänger, F(1, 396) = 49.844, p < .001, f = .354. Die Interaktion zwischen “Art der Haltung” und “Art der Fütterung” war ebenfalls signifikant, F(1, 396) = 13.428, p < .001, f = .184. Wie Abbildung XX zeigt, lässt sich der Haupteffekt für “Art der Fütterung” vor allem durch die Interkation beider Faktoren erklären. Es zeigt sich, dass die Fütterung mit Nassfutter nur bei Stubentigern mit einem höheren Gewicht assoziiert ist, während die Art der Fütterung bei Freigängern keine Gewichtsunterschiede erklärt. Der Haupteffekt für “Art der Haltung” ist hingegen global interpretierbar; Stubentiger wiegen, egal welches Futter sie bekommen, im Schnitt mehr als Freigänger. Allerdings ist der Unterschied nur sehr gering, wenn mit Trockenfutter gefüttert wird.