Daten importieren, Commander laden:

data <- read.csv("Glastonbury.csv",sep=";")

library(Rcmdr)

# "music" manuell als Faktor deklarieren
data$music <- factor(data$music, levels = c("Crusty", "Indie Kid", "Metaller", "No Musical Affiliation"))

Szenario und Hypothesen

(siehe Andy Field, Chapter 7.12)

Unterscheiden sich Festival-Besucher*innen des Glastonbury-Festivals, die unterschiedliche Musikgeschmäcker haben, bzgl. ihrer Körperhygiene?

Die Personen wurden am Einfang (Tag 1 des Festivals) nach ihrem Musikgeschmack/Style gefragt. Es ließen sich vier Gruppen bilden: “Crusties”, “Indie Kids”, “Metaller” und “No Musical Affiliation”. Für jede Person wurde dann das äußere Erscheinungsbild bzgl. der Hygiene bewertet (hohe Werte bedeuten mehr “Sauberkeit”). Am Ende des Festivals (Tag 3) wurden dieselben Personen erneut bewertet.

Hypothesen:

  1. An Tag 1 gibt es Unterschiede zwischen Gruppen hinsichtlich ihrer Körperhygiene.
  2. An Tag 3 gibt es keine Unterschiede zwischen Gruppen hinsichtlich ihrer Körperhygiene.

Statistische Hypothesen, über Mittelwerte formuliert – klassisches Anova-Vorgehen:

Die klassische Anova testet gegen die Nullhypothese, dass die Mittelwerte aller Gruppen gleich sind (alle aus derselben Population stammen). Die Alternativhypothese ist somit, dass nicht alle Mittelwerte aus derselben Population stammen, also mindestens einer der Mittelwerte aus einer anderen Population stammt als die anderen.

k steht hier für eine beliebige Ausprägung des Prädiktors, also jede beliebige der Musik-Gruppen (und k’ für eine beliebige andere Ausprägung).

Für AV “day1”: H1,1: mü(k) =/= mü(k’) für mindestens ein Paar k,k’ H0,1: mü(k) = mü(k’) für alle k,k’

Für AV “day3”: H0,2: mü(k) = mü(k’) für alle k,k’ H1,2: mü(k) =/= mü(k’) für mindestens ein Paar k,k’

Ergänzung nach der VL: Wenn der F-Test der Anova signifikant wird, muss das nicht zwingend heißen, dass bei nachträglichen post-hoc-Tests mindestens ein Paarvergleich der Gruppen signifikant wird (auch wenn es sehr häufig so sein wird). Man kann sich z.B. einen Fall vorstellen, in dem sehr viele Gruppen mit jeweils kleinem n getestet werden. Die Hälfte dieser Gruppen hat einen Mittelwert von 2, die andere Hälfte einen Mittelwert von 2.5. Bei kleinem n pro Gruppe und relativ kleiner Mittelwertsdifferenz würde keiner der einzelnen Paarvergleiche signifikant, obwohl die Anova über alle Gruppen hinweg detektieren könnte, dass dieses Muster in den Daten wahrscheinlich nicht aus nur einer Population stammt (sondern in diesem Fall vermutlich aus genau zwei Populationen).

Die Indizes k und k’ in den statistischen Hypothesen bedeuten also nicht zwingend, dass sich konkrete zwei Gruppen in unserem Design unterscheiden müssen - es könnten sich zb auch zwei Gruppen zusammengenommen von den restlichen zwei Gruppen unterscheiden. Die Anova testet also das Gesamtmuster: Ist das gefundene Muster an Mittelwerten wahrscheinlich, wenn eigentlich alle aus derselben Population kommen (in Wahrheit alle gleich sind)? Oder sollten wir davon ausgehen, dass es mindestens zwei Populationen gibt?

Analyse

Grafiken für Mittelwerte und 95% CI für Tag 1

Die üblichen Abbildungen, die man mit dem R-Commander erzeugen kann:

with(data, plotMeans(day1, music, error.bars="conf.int", level=0.95,
   connect=FALSE))

Etwas schönere Abbildungen - das Paket ggplot2 (Paket ggf. installieren, um den Code auszuführen):

(die Details des Codes müssen an dieser Stelle nicht nachvollzogen werden, das wäre nochmal eine eigene Sitzung)

Prüfen von Varianzhomogenität (Homoskedastizität)

Ist die Varianz innerhalb der Gruppen (= auf den 4 verschiedenen Levels des Prädiktors) gleich?

Commander: Statistik -> Varianzen -> Levene-Test

#day1
with(data, tapply(day1, music, var, na.rm=TRUE))
##                 Crusty              Indie Kid               Metaller 
##              0.5123535              0.3935712              0.4116004 
## No Musical Affiliation 
##              0.4820252
leveneTest(day1 ~ music, data=data, center="median")
## Levene's Test for Homogeneity of Variance (center = "median")
##        Df F value Pr(>F)
## group   3  1.0578 0.3663
##       806

Test ist nicht signifikant, daher kann von Varianzhomogenität ausgegangen werden.

Varianzanalyse

Commander: Statistik -> Mittelwerte vergleichen -> Einfaktorielle Varianzanalyse

AnovaModel.1 <- aov(day1 ~ music, data=data)
summary(AnovaModel.1)
##              Df Sum Sq Mean Sq F value  Pr(>F)    
## music         3   16.1   5.369    11.6 1.9e-07 ***
## Residuals   806  373.0   0.463                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Der F-Test ist signifikant. Unsere (ungerichtete) Hypothese für Tag 1 hat sich bestätigt (wir lehnen die H0,1 ab).

Die Körperhygiene der Festivalgäste an Tag 1 unterscheidet sich in Abhängigkeit von ihrem Musik/Kleidungs-Stil.

Woher wissen wir, wo die Unterschiede liegen? Blick in den Graphen (Mittelwerte und 95% CIs betrachten) oder post-hoc-Tests (zb. mit Bonferroni-Korrektur).

Bonferroni-post-hoc-Test für einfaktorielle Anova:

pairwise.t.test(data$day1,data$music, p.adj="bonf")
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  data$day1 and data$music 
## 
##                        Crusty  Indie Kid Metaller
## Indie Kid              1.00000 -         -       
## Metaller               1.00000 0.36998   -       
## No Musical Affiliation 0.00012 6.6e-06   0.00328 
## 
## P value adjustment method: bonferroni

Die p-Werte sind bereits adjustiert und können direkt interpretiert werden. Die “No Musical Affiliation”-Gruppe unterscheidet sich offenbar von allen anderen Gruppen. Die Richtung des Unterschieds verrät der Test uns nicht, allerdings können wir es im Graphen sehen.

Statistische Hypothesen über lineares Modell formuliert

Eigentlich ist die Varianzanalyse nichts anderes als ein lineares Modell / Modellvergleich, nur dass wir diesmal nicht mehr kontinuierliche Prädiktoren haben, sondern eine kategoriale Variable mit mehr als zwei Ausprägungen.

Statistische Hypothesen über Modellvergleiche

Bei einer linearen Regression mit einem mehrstufigen kategorialen Prädiktor müssen wir sogenannte Dummy-Variablen als eigentliche Prädiktoren erstellen (oder R erstellt sie automatisch für uns, Details siehe weiter unten). Wir testen dann die Hypothese, dass ein Modell mit diesen Dummy-Variablen die Varianz im Kriterium besser erklärt als das Nullmodell:

Für AV “day1” (über R-squared formuliert):

Oder (über mean squares):

Zur Erinnerung:

R-squared = QS(Modell)/QS(Total)

MS(Modell) = QS(Modell)/df(Modell) mit df(Modell) = Anzahl Prädiktoren

Varianzanalyse für Tag 1 als Modellvergleich

Dummy-Kodierung per Hand (normalerweise nicht nötig, nur zur Illustration):

Faktor “music” hat 4 Ausprägungen, daher benötigen wir 4-1 = 3 Dummy-Variablen.

Wir müssen eine Ausprägung unserer music-Variable als Referenzkategorie bestimmen. Diese wird immer mit 0 codiert und alle anderen Ausprägungen werden später gegen diese Kategorie verglichen. Die Referenzkategorie kann beliebig gewählt werden. Manchmal gibt es inhaltliche Gründe, eine bestimmte Kategorie zu wählen (bei Medikamenten-Studie zb. die Placebo-Gruppe). Wenn wir die Dummy-Kodierung nicht manuell machen, nimmt R die alphabetisch erste Kategorie des Faktors (hier: “crusty”) als Referenzkategorie. Zur besseren Vergleichbarkeit mit der späteren, automatischen Kodierung wählen wir diese hier ebenfalls.

Unsere drei Dummy-Variablen werden also:

  • D1: “Metaller statt Crusty”: 1 wenn music=“Metaller”", sonst 0
  • D2: “Indie Kid statt Crusty”: 1 wenn music=“Indie Kid”, sonst 0
  • D3: “No Musical Affiliation statt Crusty”: 1 wenn music=“No Musical Affiliation”, sonst 0

Anlegen der drei Dummy-Variablen mit “ifelse”-Funktion (sehr ähnlich wie “wenn”-Funktion in Excel):

data$D1 <- ifelse(data$music=="Metaller",1,0)

data$D2 <- ifelse(data$music=="Indie Kid",1,0)

data$D3 <- ifelse(data$music=="No Musical Affiliation",1,0)

Erstellen eines linearen Modells mit den drei Dummy-Variablen als Prädiktoren:

RegModel.1 <- lm(day1~D1+D2+D3, data=data)
summary(RegModel.1)
## 
## Call:
## lm(formula = day1 ~ D1 + D2 + D3, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82536 -0.46906  0.00884  0.45797  2.07715 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.87536    0.04884  38.395  < 2e-16 ***
## D1          -0.04333    0.07071  -0.613    0.540    
## D2           0.11493    0.08321   1.381    0.168    
## D3          -0.26251    0.06131  -4.282 2.08e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6803 on 806 degrees of freedom
## Multiple R-squared:  0.04139,    Adjusted R-squared:  0.03782 
## F-statistic:  11.6 on 3 and 806 DF,  p-value: 1.896e-07

Interpretation:

F-Test signifikant: Verbesserung durch Modell im Verhältnis zu seinem Fehler ist groß genug - das Modell ist besser als das Nullmodell.

R^2 von .04: 4% der Varianz in Hygiene wird durch Musik-Stil erklärt.

Signifikanter Prädiktor D3: Wenn jemand “No Musical Affiliation” ist statt “Crusty”, hat die Person ca. 0.26 Punkte weniger auf der Körperhygiene-Ratingskala.

Schnelleres Vorgehen: Wir geben direkt “music” als Prädiktor für Hygiene an Tag 1 an, R führt die Dummy-Kodierung im Hintergrund aus (ohne sichtbares Anlegen der Variablen im dataframe). Wir erhalten dasselbe Ergebnis wie oben:

Reg.Model.1_1 <- lm(day1 ~ music,data=data)
summary(Reg.Model.1_1)
## 
## Call:
## lm(formula = day1 ~ music, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82536 -0.46906  0.00884  0.45797  2.07715 
## 
## Coefficients:
##                             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  1.87536    0.04884  38.395  < 2e-16 ***
## musicIndie Kid               0.11493    0.08321   1.381    0.168    
## musicMetaller               -0.04333    0.07071  -0.613    0.540    
## musicNo Musical Affiliation -0.26251    0.06131  -4.282 2.08e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6803 on 806 degrees of freedom
## Multiple R-squared:  0.04139,    Adjusted R-squared:  0.03782 
## F-statistic:  11.6 on 3 and 806 DF,  p-value: 1.896e-07

Was, wenn wir die Referenzkategorie ändern wollen? Wir müssen die Levels des Faktors “music” neu anordnen und die gewünschte Referenzkategorie an die erste Stelle setzen.

Im Commander: Datenmanagement -> Variablen bearbeiten -> Neuanordnung der Faktorstufen.

Beispiel: “No Musical Affiliation” als Referenzkategorie, Modell erneut rechnen:

data$music <- with(data, 
  factor(music, levels=c('No Musical Affiliation','Crusty','Indie Kid','Metaller')))

Reg.Model.1_2 <- lm(day1 ~ music,data=data)
summary(Reg.Model.1_2)
## 
## Call:
## lm(formula = day1 ~ music, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82536 -0.46906  0.00884  0.45797  2.07715 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.61285    0.03706  43.521  < 2e-16 ***
## musicCrusty     0.26251    0.06131   4.282 2.08e-05 ***
## musicIndie Kid  0.37745    0.07688   4.909 1.11e-06 ***
## musicMetaller   0.21919    0.06315   3.471 0.000547 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6803 on 806 degrees of freedom
## Multiple R-squared:  0.04139,    Adjusted R-squared:  0.03782 
## F-statistic:  11.6 on 3 and 806 DF,  p-value: 1.896e-07

Der untere Teil des Outputs bleibt gleich, weil das Modell ja identisch ist.

Die Werte der Prädiktoren ändern sich, weil sie andere Mittelwertsvergleiche beinhalten: Jede Gruppe scheint sich von “No Musical Affiliation” zu unterscheiden, alle haben höhere Hygienewerte an Tag 1 des Festivals. Das entspricht dem Ergebnis, das wir weiter oben mit der klassischen Varianzanalyse und dem Bonferroni-Test ebenfalls erhalten haben.

###Effektgrößen

Tag 1:

R-Squared ist die relevante Effektgröße beim Modellvergleich (Modell mit allen Dummy-Variablen gegen Nullmodell).

R^2 hier: 0.04139

Typische Effektgröße der klassischen Varianzanalyse: eta-squared oder auch Cohen’s f/f^2.

eta-squared berechnen mit Paket lsr (gg.f installieren):

#install.packages("lsr",dependencies=TRUE)
library(lsr)

etaSquared(AnovaModel.1)
##           eta.sq eta.sq.part
## music 0.04138932  0.04138932

(generalized) eta-squared = R^2 = QS(Modell)/QS(Total).

Es gibt generalised eta squared (im Output links) und partial eta squared (im Output rechts).

Partial eta-squared berechnet sich aus QS(Modell)/(QS(Modell) + QS(Fehler)).

Bei einer einfaktoriellen Varianzanalyse sind die beiden Werte identisch (QS-Total ist in diesem Fall nichts anderes als die QS des Modells plus die QS des Fehlers, daher ist der Nenner beider Brüche gleich).

Zusätzliche Berechnung von Cohen’s f^2:

f^2 = QS(Modell)/QS(Residuen) = R^2 / (1-R^2)

0.04139/(1-0.04139)
## [1] 0.0431771

Wurzel aus f (für G-Power benötigt):

sqrt(0.0431771)
## [1] 0.207791

Kleiner Effekt (nach Konventionen von Cohen)

###Teststärke

Teststärke ist in G-Power über Lineares Modell oder Anova berechenbar (selbes Ergebnis).

Achtung bei linear model: number of predictors = 3, wegen der drei Dummy-Variablen

Achtung: Linear model braucht f^2 als input, Anova braucht f unquadriert (deshalb haben wir beides berechnet)

knitr::include_graphics("GPower_LM.png")

knitr::include_graphics("GPower_Anova.png")

Teststärke = 0.99, also PV eingetreten

Tag 3

Für AV “day3”: H0,2: mü(k) = mü(k’) für alle k,k’ H1,2: mü(k) =/= mü(k’) für mindestens ein Paar k,k’

Analyse

Grafiken für Mittelwerte und 95% CI für Tag 1

Die üblichen Abbildungen, die man mit dem R-Commander erzeugen kann:

with(data, plotMeans(day3, music, error.bars="conf.int", level=0.95,
   connect=FALSE))

Etwas schönere Abbildungen - das Paket ggplot2 (Paket ggf. installieren, um den Code auszuführen):

(die Details des Codes müssen an dieser Stelle nicht nachvollzogen werden, das wäre nochmal eine eigene Sitzung)

###Sample size für Anova zum Tag 3

Es fällt auf, dass viel weniger Punkte im Graphen zu sehen sind als vorher. Wie viele Personen haben wir zu Tag 3 überhaupt noch testen können?

Wir können über den Commander (Statistik, Deskriptive Statistik, Zusammenfassung numerischer Variablen) nachschauen:

#diese library-Befehle hat der Commander generiert, daher sind sie hier mit eingefügt - vielleicht geht es auch ohne.
library(abind, pos=18)
library(e1071, pos=19)

numSummary(data[,"day3", drop=FALSE], statistics=c("mean", "sd", "IQR", 
  "quantiles"), quantiles=c(0,.25,.5,.75,1))
##       mean       sd   IQR   0%  25%  50%   75% 100%   n  NA
##  0.9765041 0.710277 1.085 0.02 0.44 0.76 1.525 3.41 123 687

Von den über 800 Leuten, die wir am Anfang getestet haben, sind nur noch 123 übrig.

###Exkurs: Poweranalyse vor Durchführung der Anova für Tag 3

Nehmen wir an, der wahre Effekt von Musikpräferenz/Style auf Hygiene wäre so groß wie an Tag 1 gefunden (Cohen’s f unquadriert = 0.207791). Wie viele Leute sollten wir dann an Tag 3 wieder auftreiben können, um eine Chance von 80% zu haben, diesen Effekt nochmal zu finden?

Zu diesem Zweck können wir eine a priori Poweranalyse durchführen.

knitr::include_graphics("day3_power1.png")

Wir bräuchten also ungefährt doppelt so viele Leute wie wir haben.

Wir könnten uns auch fragen, was wir mit der anfallenden Stichprobengröße überhaupt anfangen können. Wenn der wahre Effekt mindestens so groß wie der an Tag 1 gefundene ist, wie viel Power haben wir mit der verfügbaren Stichprobengröße von 123, ihn erneut zu finden?

Zu diesem Zweck könnten wir eine post hoc-Poweranalyse durchführen, in der wir den Effekt aus Tag 1 einsetzen und schauen, welche power dafür mit der Stichprobengröße von Tag 3 erreichen können.

(Das ist ein leicht anderes Vorgehen als wir es sonst bei der Post-hoc-Analyse machen. Normalerweise bezieht sie sich ja komplett auf eine bereits durchgeführte Analyse inkl. der dort gefundenen Effektstärke - deshalb post hoc. Wir nutzen sie jetzt für eine noch nicht durchgeführte Analyse. Von Tag 1 haben wir eine Schätzung der Effektstärke, die auf einer sehr großen Stichprobe basiert, für Tag 3 wissen wir nur, wie groß die noch verfügbare Stichprobe sein wird. Diese beiden Informationen kombinieren wir, um zu ermitteln, wie viel Power wir an Tag 3 erreichen können, wenn der wahre Effekt ungefähr der ist, der an Tag 1 beobachtet wurde.)

knitr::include_graphics("day3_power2.png")

Wir sehen, dass wir eine sehr geringe Teststärke erreichen, wenn der wahre Effekt der an Tag 1 beobachtete ist.

Allerdings könnte es ja auch sein, dass an Tag 3 eine andere Effektstärke die “wahre” ist als an Tag 1. Wir haben ja ursprünglich vermutet, dass sich die Gruppen im Laufe des Festivals angleichen. Dann wäre an Tag 3 die “wahre” Effektstärke kleiner als an Tag 1. Alternativ könnte es aber ja auch sein, dass sich die Gruppen im Laufe des Festivals unterschiedlich verhalten und die wahren Unterschiede an Tag 3 größer sind als zu Beginn. Man kann sich in G-Power natürlich auch ausgeben lassen, wie groß ein Effekt mindestens sein müsste, damit man ihn mit einer festgelegten Power und Stichprobengröße finden kann. Wer mag, kann das für diesen Fall ja mal suchen und ausprobieren.

Prüfen von Varianzhomogenität (Homoskedastizität)

Ist die Varianz innerhalb der Gruppen (= auf den 4 verschiedenen Levels des Prädiktors) gleich?

Commander: Statistik -> Varianzen -> Levene-Test

#day1
with(data, tapply(day3, music, var, na.rm=TRUE))
## No Musical Affiliation                 Crusty              Indie Kid 
##              0.4380623              0.5864232              0.3612989 
##               Metaller 
##              0.6506969
leveneTest(day3 ~ music, data=data, center="median")
## Levene's Test for Homogeneity of Variance (center = "median")
##        Df F value Pr(>F)
## group   3  0.4975 0.6847
##       119

Test ist nicht signifikant, daher kann von Varianzhomogenität ausgegangen werden.

Varianzanalyse

Commander: Statistik -> Mittelwerte vergleichen -> Einfaktorielle Varianzanalyse

AnovaModel.1 <- aov(day3 ~ music, data=data)
summary(AnovaModel.1)
##              Df Sum Sq Mean Sq F value Pr(>F)
## music         3   1.48  0.4920   0.975  0.407
## Residuals   119  60.07  0.5048               
## 687 observations deleted due to missingness

Der F-Test ist nciht mehr signifikant.

Bonferroni-post-hoc-Test für einfaktorielle Anova:

pairwise.t.test(data$day3,data$music, p.adj="bonf")
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  data$day3 and data$music 
## 
##           No Musical Affiliation Crusty Indie Kid
## Crusty    1.00                   -      -        
## Indie Kid 1.00                   1.00   -        
## Metaller  0.85                   1.00   0.89     
## 
## P value adjustment method: bonferroni

Die p-Werte sind bereits adjustiert und können direkt interpretiert werden.

Varianzanalyse für Tag 3 als Modellvergleich

Reg.Model.1_1 <- lm(day3 ~ music,data=data)
summary(Reg.Model.1_1)
## 
## Call:
## lm(formula = day3 ~ music, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.1426 -0.5331 -0.2179  0.5045  2.2474 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     0.91793    0.09329   9.839   <2e-16 ***
## musicCrusty     0.08040    0.17245   0.466    0.642    
## musicIndie Kid -0.09507    0.21157  -0.449    0.654    
## musicMetaller   0.24466    0.16553   1.478    0.142    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7105 on 119 degrees of freedom
##   (687 observations deleted due to missingness)
## Multiple R-squared:  0.02398,    Adjusted R-squared:  -0.0006259 
## F-statistic: 0.9746 on 3 and 119 DF,  p-value: 0.4072

###Effektgrößen

Tag 3:

R-Squared ist die relevante Effektgröße beim Modellvergleich (Modell mit allen Dummy-Variablen gegen Nullmodell).

R^2 hier: 0.02398

Typische Effektgröße der klassischen Varianzanalyse: eta-squared oder auch Cohen’s f/f^2.

eta-squared berechnen mit Paket lsr (gg.f installieren):

#install.packages("lsr",dependencies=TRUE)
library(lsr)

etaSquared(AnovaModel.1)
##          eta.sq eta.sq.part
## music 0.0239797   0.0239797

(generalized) eta-squared = R^2 = QS(Modell)/QS(Total).

Zusätzliche Berechnung von Cohen’s f^2:

f^2 = QS(Modell)/QS(Residuen) = R^2 / (1-R^2)

0.02398/(1-0.02398)
## [1] 0.02456917

Wurzel aus f (für G-Power benötigt):

sqrt(0.02456917)
## [1] 0.1567456

###Fazit Tag 3

An Tag 3 konnten keine statistisch signifikanten Unterschiede zwischen den Gruppen mehr beobachtet werden. Allerdings war die Stichprobengröße an Tag 3 auch sehr klein. Wenn der wahre Effekt von Musik auf Hygiene mindestens so groß ist wie an Tag 1 gefunden, hatten wir an Tag 3 schon nicht mehr die nötige Power, um ihn erneut beobachten zu können. Es lässt sich also keine fundierte Aussage über Hygiene nach Musikpräferenz/Stil an Tag 3 treffen. Um einigermaßen sicher sagen zu können, dass der an Tag 1 beobachtete Effekt an Tag 3 nicht mehr existiert, müssten wir ja zumindest genug Power haben, um ihn erneut beobachten zu können.

Im nächsten Jahr sollte man sich daher bemühen, eine größere Stichprobe an Tag 3 zu erzielen.