1 Zahnwachstumsrate bei Meerschweinchen (Datensatz “ToothGrowth”)

Es gab drei Dosis-Bedingungen. Außerdem wurde noch variiert, in welcher Weise das Vitamin C verabreicht wurde (Orangensaft vs. Askorbinsäure [wahrscheinlich aufgelöst in Wasser]). Gemessen (Kriterium bzw. AV) wurde die Länge der Odontoblasten (die Zellen, die für Zahnlänge verantwortlich sind).

2 Einfaktorielle ANOVA: Der Einfluss der Art der Verabreichung

Letzte Woche hatten Sie bereits den Einfluss des Faktors “Dosierung” geprüft. Heute können Sie den Einfluss des Faktors “Supplement” prüfen, also die Art, wie das Vitamin C verabreicht wurde (Orangensaft versus Ascorbinsäure).

2.1 Aufgaben

Testen Sie die folgenden Hypothesen:

  • Hypothese 1: Die Art der Dosierung hat einen Effekt auf die Odontoblastenlänge.

  • Hypothese 2: Orangensaft ist “effektiver” als reine Ascorbinsäure.

Beginnen Sie die statistische Auswertung mit einer grafischen Veranschaulichung der Daten.

Erstellen Sie aussagekräftige Abbildungen.

Testen Sie die Hypothesen mit angemessenen Verfahren.

Zusatz:

Erstellen Sie ein lineares Modell mit Kriterium Odontoblastenlänge und Prädiktr Supplement. Vergleichen Sie den Output mit dem der Varianzanalyse und dem der Post-hoc Tests für Mittelwertsunterschiede.

2.2 Datensatz laden

data("ToothGrowth") # "Einlesen" der Daten (hier besser gesagt "aktivieren" der Daten)
  
head(ToothGrowth) # Anzeige der ersten 10 Einträge
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5

2.3 Grafiken

2.3.1 Plot für Mittelwerte

library(Rcmdr)
with(ToothGrowth, plotMeans(len, supp, error.bars="conf.int", level=0.95, xlab="Dosierung", 
  ylab="Odontoblastenlänge", main="Mittlere Odontoblastenlänge (Fehler = 95% KI)", connect=FALSE))

2.3.2 Boxplot

Boxplot(len~supp, data=ToothGrowth, id=list(method="y"))

2.3.3 Strip-Chart

stripchart(len ~ supp, vertical=TRUE, method="jitter", jitter = 0.1, ylab="Odontoblastenlänge", 
           xlab = "Suppelement", col = "blue", data=ToothGrowth)

2.3.4 Density Plot

densityPlot(len~supp, data=ToothGrowth, bw=bw.SJ, adjust=1, kernel=dnorm, method="adaptive", 
  xlab="Supplement", ylab="Odontoblastenlänge", main = "Verteilung der Odontoblastenlängen")

2.4 Test auf Varianzhomogenität

Der nötige Test heißt “Levene-Test”. ACHTUNG: der R-Commander lädt dazu einige Pakete.

library(mvtnorm, pos=17)
library(survival, pos=17)
library(MASS, pos=17)
library(TH.data, pos=17)
## 
## Attaching package: 'TH.data'
## The following object is masked from 'package:MASS':
## 
##     geyser
library(multcomp, pos=17)
library(abind, pos=22)
Tapply(len ~ supp, var, na.action=na.omit, data=ToothGrowth) # variances by group
##       OJ       VC 
## 43.63344 68.32723
leveneTest(len ~ supp, data=ToothGrowth, center="mean") # Test auf Var-Homog.
## Levene's Test for Homogeneity of Variance (center = "mean")
##       Df F value Pr(>F)
## group  1  1.0973 0.2992
##       58

Der Levene-Test ist nicht signifikant. Das Kriterium der Varianzhomogenität kann als erfüllt betrachtet werden.

2.5 Statistische Hypothesentests

2.5.1 Einfaktorielle ANOVA

Zur Prüfung der Hypothese, dass Supplement einen Einfluss hat.

Im R-Commander-Menü dazu kann bereits der paarweise Vergleich der Mittelwerte aktiviert werden (Post-hoc-Tests). Hier aber zunächst nur der Output der Code und Output der ANOVA.

AnovaModel.1 <- aov(len ~ supp, data=ToothGrowth) # Erstellt das ANOVA-Modell
summary(AnovaModel.1) # Gibt den Output aus
##             Df Sum Sq Mean Sq F value Pr(>F)  
## supp         1    205  205.35   3.668 0.0604 .
## Residuals   58   3247   55.98                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Die einfaktorielle ANOVA ist nicht signifikant, \(F(1,58)~= 3.668\), \(p~= .0604\). Die Hypothese, Art der Verabreichung mit einer veränderten Odontoblastenlänge einhergeht, kann nicht als bestätigt betrachtet werden.

Die vom R-Commander genutzte Funktion der Einfaktoriellen ANOVA liefert keine Effektgrößen. Ein alternatives Paket, das das tut, ist das Paket “afex()”. Das müssen Sie ggf. installieren. Um damit eine ANOVA durchzuführen muss allerdings eine ID-Spalte in den Daten sein, die die einzelnen Beobachtungen kennzeichnet. In unserem Fall müssen wir diese zunächst den Daten hinzufügen.

2.5.2 Test für zweite Hypothese

t.test(len~supp, alternative='greater', conf.level=.95, var.equal=TRUE, data=ToothGrowth)
## 
##  Two Sample t-test
## 
## data:  len by supp
## t = 1.9153, df = 58, p-value = 0.0302
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
##  0.4708204       Inf
## sample estimates:
## mean in group OJ mean in group VC 
##         20.66333         16.96333

Die Hypothese kann angenommen werden, \(t(58)~= 1.92\), \(p~= .03\).

2.6 Zusatz

Anpassung eines linearen Modells (Regressionsanalyse)

LinearModel.2 <- lm(len ~ supp, data=ToothGrowth)
summary(LinearModel.2)
## 
## Call:
## lm(formula = len ~ supp, data = ToothGrowth)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -12.7633  -5.7633   0.4367   5.5867  16.9367 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   20.663      1.366  15.127   <2e-16 ***
## suppVC        -3.700      1.932  -1.915   0.0604 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.482 on 58 degrees of freedom
## Multiple R-squared:  0.05948,    Adjusted R-squared:  0.04327 
## F-statistic: 3.668 on 1 and 58 DF,  p-value: 0.06039

man sieht hier, dass der T-Test oben dem Test des Regressionskoeffizienten entspricht.