ANOVA, einfaktoriell ohne MW

Statistik: Übungen

Author
Affiliation

Prof. Dr. Armin Eichinger

TH Deggendorf

Published

10.02.2025

1 Aufgabe: ANOVA

Vollziehen Sie das Welpen-Beispiel aus der Vorlesung nach. Die Daten finden Sie hier.

  1. Lesen Sie Daten mit read.csv() ein und weisen Sie sie einer Variablen zu.

  2. Verwenden Sie die Funktion aov(), um eine ANOVA durchzuführen. Rufen Sie die Funktion mit den benannten Parametern formula und data auf. formula verwendet eine Formulierung, die wir schon aus der Regressionsanalyse kennen (für die Funktion lm()). Wir formulieren das Glücksempfinden in Abhängigkeit der Dosis: formula = happiness ~ dose. data erhält die Datenvariable.

  3. Weisen Sie das Ergebnis des Funktionsaufrufs der Variablen aov_result. Übergeben Sie die Variable der Funktion summary() als Parameter. Das Ergebnis sollte so aussehen (also identisch mit der ANOVA-Tabelle, die aov() erzeugt hat):

            Df Sum Sq Mean Sq F value Pr(>F)  
dose         2  20.13  10.067   5.119 0.0247 *
Residuals   12  23.60   1.967                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. Verwenden Sie nun die Funktion anova(). Diese erwartet als Parameter ein Modell-Objekt, wie es beispielsweise die Funktion lm() erzeugt1. Dieses Objekt müssen wir erst erzeugen und einer Variablen zuweisen: anova_lm <- lm(happiness ~ dose, data_puppies_orig). Das ist nicht wirklich neu; happiness in Abhängigkeit von dose. Wenn Sie neugierig sind – und das sollten Sie natürlich immer sein – lassen Sie sich die Variable ausgeben.

    Achtung: Die Funktion aov() oben erhält als Parameter formula = happiness ~ dose; die Funktion anova() erhält als Parameter das Ergebnis des Aufrufs der Funktion lm() (also ein Objekt). Die Funktion aov() ist näher an den Daten; sie passt ein Modell den Daten an. Die Funktion anova() bewegt sich auf Ebene der Modelle. Mit ihr können wir auch verschiedene Modelle miteinander vergleichen. Das machen wir später noch.

Hier also erstmal das Objekt für das lineare Modell mit lm() (die Zuweisung zu einer Variablen ist in diesem Output nicht zu sehen):


Call:
lm(formula = happiness ~ dose, data = data_puppies_orig)

Coefficients:
(Intercept)  dose30 mins  doseControl  
        3.2          1.8         -1.0  

Das Ergebnis zeigt ein Modell mit zwei Prädiktoren. Warum nicht drei – wir haben doch drei Abstufungen unseres Faktors? Weil wir über den Intercept auf den dritten schließen können, wenn die beiden anderen Parameter den Wert 0 haben.

Das Ergebnis ist so zu interpretieren: “15 Minuten” ist die Referenzkategorie. Ausgangspunkt ist der MW der Referenzkategorie: 3.2. “30 Minuten” erhöht den Wert der AV um 1.8 auf 5. Prüfen wir nach: Der MW für die Bedingung “30 Minuten” beträgt 5. “Control” reduziert 3.2 um 1 auf 2.2.

  1. Die neue Modell-Variable wird im zweiten Schritt der einzige Parameter der Funktion anova(). Weisen Sie das Ergebnis der Variablen anova_result zu und geben Sie diese aus. Das Ergebnis – wieder die klassische ANOVA-Tabelle – sollte so aussehen:
Analysis of Variance Table

Response: happiness
          Df Sum Sq Mean Sq F value  Pr(>F)  
dose       2 20.133 10.0667  5.1186 0.02469 *
Residuals 12 23.600  1.9667                  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2 Aufgabe: Post-hoc-Tests

Führen Sie die Einzelvergleiche nach Bonferroni durch.

  1. Verwenden Sie die Daten aus der vorigen Aufgabe.

  2. Führen Sie für jeden der drei Einzelvergleiche einen klassischen t-Test durch; verwenden Sie dazu die Funktion t.test(); testen Sie zweiseitig (alternative = "two.sided"). Da die Spalte dose unseres DataFrames nicht nur zwei, sondern drei Abstufungen hat, müssen wir für den t-Test jeweils die beiden relevanten auswählen. Das machen wir über den Parameter subset, dem wir sagen, welche zwei Stufen wir brauchen. Die Stufen müssen wir vorher mit der Funktion c() in Vektor-Form bringen. Für den Einzelvergleich “Control” vs. “15 mins” sieht das dann so aus: subset = dose %in% c("Control", "15 mins"). In Worten heißt das: Beschränke die Fälle auf Dosen, die in dem Vektor “Control”, “15 mins” zu finden sind.

    Bei mir sieht der erste der drei Aufrufe wir folgt aus:

t.test(happiness ~ dose, data = data_puppies_orig, 
  var.equal = TRUE, 
  alternative = "two.sided",
  subset = dose %in% c("Control", "15 mins"))
  1. Weisen Sie das Ergebnis der Tests entsprechenden Variablen zu und geben Sie diese aus. Das Ergebnis sollte so aussehen:

    Two Sample t-test

data:  happiness by dose
t = 1.2127, df = 8, p-value = 0.2598
alternative hypothesis: true difference in means between group 15 mins and group Control is not equal to 0
95 percent confidence interval:
 -0.9015797  2.9015797
sample estimates:
mean in group 15 mins mean in group Control 
                  3.2                   2.2 

    Two Sample t-test

data:  happiness by dose
t = 3.0551, df = 8, p-value = 0.0157
alternative hypothesis: true difference in means between group 30 mins and group Control is not equal to 0
95 percent confidence interval:
 0.6865123 4.9134877
sample estimates:
mean in group 30 mins mean in group Control 
                  5.0                   2.2 

    Two Sample t-test

data:  happiness by dose
t = -1.964, df = 8, p-value = 0.08514
alternative hypothesis: true difference in means between group 15 mins and group 30 mins is not equal to 0
95 percent confidence interval:
 -3.9134877  0.3134877
sample estimates:
mean in group 15 mins mean in group 30 mins 
                  3.2                   5.0 
  1. Verwenden Sie nun die Funktion pairwise.t.test() zum gleichen Zweck. Der erste Parameter ist die AV (bei mir: data_puppies_orig$happiness), der zweite Parameter ist die Dosis (nach dem selben Schema). Der dritte Parameter legt die Art des Post-hoc-Tests fest. Wir verwenden den Ansatz von Bonferroni: p.adjust.method = "bonferroni". Der letzte Parameter – pool.sd = FALSE ist eher technischer Natur und legt fest, dass die für den Test verwendete SD nicht über alle drei, sondern nur über die zwei beteiligten Bedingungen hinweg berechnet wird.

    Das Ergebnis ist eine Matrix der p-Werte. Warum entsprechen die nicht den Werten von eben? Weil die Werte oben quasi die gedrittelten p-Werte sind. Für diese Werte wurde die Korrektur “geteilt durch drei” schon durchgeführt. Wir interpretieren daher wieder ganz klassisch: Wenn kleiner 0.05, dann signifikant.

    Pairwise comparisons using t tests with non-pooled SD 

data:  data_puppies_orig$happiness and data_puppies_orig$dose 

        15 mins 30 mins
30 mins 0.259   -      
Control 0.780   0.049  

P value adjustment method: bonferroni 

3 Aufgabe: Effektstärke

Bestimmen und interpretieren Sie das Effektstärkemaß \(\eta^2\). Die relevanten Werte entnehmen Sie der folgenden ANOVA-Tabelle (die Sie oben selbst schon erzeugt haben):

            Df Sum Sq Mean Sq F value Pr(>F)  
dose         2  20.13  10.067   5.119 0.0247 *
Residuals   12  23.60   1.967                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Zur Kontrolle Ihrer Rechnung können Sie die Funktion etaSquared() verwenden. Dazu benötigen Sie die Bibliothek lsr, die Sie ggf. installieren und einbinden müssen. Die Funktion erwartet als Parameter das Ergebnis eines Aufrufs der Funktion aov().

        eta.sq eta.sq.part
dose 0.4603659   0.4603659

Anhang

F-Verteilung

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 40 50 100 Inf
1 161.45 199.50 215.71 224.58 230.16 233.99 236.77 238.88 240.54 241.88 242.98 243.91 244.69 245.36 245.95 246.46 246.92 247.32 247.69 248.01 248.31 248.58 248.83 249.05 249.26 249.45 249.63 249.80 249.95 250.10 251.14 251.77 253.04 254.31
2 18.51 19.00 19.16 19.25 19.30 19.33 19.35 19.37 19.38 19.40 19.40 19.41 19.42 19.42 19.43 19.43 19.44 19.44 19.44 19.45 19.45 19.45 19.45 19.45 19.46 19.46 19.46 19.46 19.46 19.46 19.47 19.48 19.49 19.50
3 10.13 9.55 9.28 9.12 9.01 8.94 8.89 8.85 8.81 8.79 8.76 8.74 8.73 8.71 8.70 8.69 8.68 8.67 8.67 8.66 8.65 8.65 8.64 8.64 8.63 8.63 8.63 8.62 8.62 8.62 8.59 8.58 8.55 8.53
4 7.71 6.94 6.59 6.39 6.26 6.16 6.09 6.04 6.00 5.96 5.94 5.91 5.89 5.87 5.86 5.84 5.83 5.82 5.81 5.80 5.79 5.79 5.78 5.77 5.77 5.76 5.76 5.75 5.75 5.75 5.72 5.70 5.66 5.63
5 6.61 5.79 5.41 5.19 5.05 4.95 4.88 4.82 4.77 4.74 4.70 4.68 4.66 4.64 4.62 4.60 4.59 4.58 4.57 4.56 4.55 4.54 4.53 4.53 4.52 4.52 4.51 4.50 4.50 4.50 4.46 4.44 4.41 4.36
6 5.99 5.14 4.76 4.53 4.39 4.28 4.21 4.15 4.10 4.06 4.03 4.00 3.98 3.96 3.94 3.92 3.91 3.90 3.88 3.87 3.86 3.86 3.85 3.84 3.83 3.83 3.82 3.82 3.81 3.81 3.77 3.75 3.71 3.67
7 5.59 4.74 4.35 4.12 3.97 3.87 3.79 3.73 3.68 3.64 3.60 3.57 3.55 3.53 3.51 3.49 3.48 3.47 3.46 3.44 3.43 3.43 3.42 3.41 3.40 3.40 3.39 3.39 3.38 3.38 3.34 3.32 3.27 3.23
8 5.32 4.46 4.07 3.84 3.69 3.58 3.50 3.44 3.39 3.35 3.31 3.28 3.26 3.24 3.22 3.20 3.19 3.17 3.16 3.15 3.14 3.13 3.12 3.12 3.11 3.10 3.10 3.09 3.08 3.08 3.04 3.02 2.97 2.93
9 5.12 4.26 3.86 3.63 3.48 3.37 3.29 3.23 3.18 3.14 3.10 3.07 3.05 3.03 3.01 2.99 2.97 2.96 2.95 2.94 2.93 2.92 2.91 2.90 2.89 2.89 2.88 2.87 2.87 2.86 2.83 2.80 2.76 2.71
10 4.96 4.10 3.71 3.48 3.33 3.22 3.14 3.07 3.02 2.98 2.94 2.91 2.89 2.86 2.85 2.83 2.81 2.80 2.79 2.77 2.76 2.75 2.75 2.74 2.73 2.72 2.72 2.71 2.70 2.70 2.66 2.64 2.59 2.54
11 4.84 3.98 3.59 3.36 3.20 3.09 3.01 2.95 2.90 2.85 2.82 2.79 2.76 2.74 2.72 2.70 2.69 2.67 2.66 2.65 2.64 2.63 2.62 2.61 2.60 2.59 2.59 2.58 2.58 2.57 2.53 2.51 2.46 2.40
12 4.75 3.89 3.49 3.26 3.11 3.00 2.91 2.85 2.80 2.75 2.72 2.69 2.66 2.64 2.62 2.60 2.58 2.57 2.56 2.54 2.53 2.52 2.51 2.51 2.50 2.49 2.48 2.48 2.47 2.47 2.43 2.40 2.35 2.30
13 4.67 3.81 3.41 3.18 3.03 2.92 2.83 2.77 2.71 2.67 2.63 2.60 2.58 2.55 2.53 2.51 2.50 2.48 2.47 2.46 2.45 2.44 2.43 2.42 2.41 2.41 2.40 2.39 2.39 2.38 2.34 2.31 2.26 2.21
14 4.60 3.74 3.34 3.11 2.96 2.85 2.76 2.70 2.65 2.60 2.57 2.53 2.51 2.48 2.46 2.44 2.43 2.41 2.40 2.39 2.38 2.37 2.36 2.35 2.34 2.33 2.33 2.32 2.31 2.31 2.27 2.24 2.19 2.13
15 4.54 3.68 3.29 3.06 2.90 2.79 2.71 2.64 2.59 2.54 2.51 2.48 2.45 2.42 2.40 2.38 2.37 2.35 2.34 2.33 2.32 2.31 2.30 2.29 2.28 2.27 2.27 2.26 2.25 2.25 2.20 2.18 2.12 2.07
16 4.49 3.63 3.24 3.01 2.85 2.74 2.66 2.59 2.54 2.49 2.46 2.42 2.40 2.37 2.35 2.33 2.32 2.30 2.29 2.28 2.26 2.25 2.24 2.24 2.23 2.22 2.21 2.21 2.20 2.19 2.15 2.12 2.07 2.01
17 4.45 3.59 3.20 2.96 2.81 2.70 2.61 2.55 2.49 2.45 2.41 2.38 2.35 2.33 2.31 2.29 2.27 2.26 2.24 2.23 2.22 2.21 2.20 2.19 2.18 2.17 2.17 2.16 2.15 2.15 2.10 2.08 2.02 1.96
18 4.41 3.55 3.16 2.93 2.77 2.66 2.58 2.51 2.46 2.41 2.37 2.34 2.31 2.29 2.27 2.25 2.23 2.22 2.20 2.19 2.18 2.17 2.16 2.15 2.14 2.13 2.13 2.12 2.11 2.11 2.06 2.04 1.98 1.92
19 4.38 3.52 3.13 2.90 2.74 2.63 2.54 2.48 2.42 2.38 2.34 2.31 2.28 2.26 2.23 2.21 2.20 2.18 2.17 2.16 2.14 2.13 2.12 2.11 2.11 2.10 2.09 2.08 2.08 2.07 2.03 2.00 1.94 1.88
20 4.35 3.49 3.10 2.87 2.71 2.60 2.51 2.45 2.39 2.35 2.31 2.28 2.25 2.22 2.20 2.18 2.17 2.15 2.14 2.12 2.11 2.10 2.09 2.08 2.07 2.07 2.06 2.05 2.05 2.04 1.99 1.97 1.91 1.84
21 4.32 3.47 3.07 2.84 2.68 2.57 2.49 2.42 2.37 2.32 2.28 2.25 2.22 2.20 2.18 2.16 2.14 2.12 2.11 2.10 2.08 2.07 2.06 2.05 2.05 2.04 2.03 2.02 2.02 2.01 1.96 1.94 1.88 1.81
22 4.30 3.44 3.05 2.82 2.66 2.55 2.46 2.40 2.34 2.30 2.26 2.23 2.20 2.17 2.15 2.13 2.11 2.10 2.08 2.07 2.06 2.05 2.04 2.03 2.02 2.01 2.00 2.00 1.99 1.98 1.94 1.91 1.85 1.78
23 4.28 3.42 3.03 2.80 2.64 2.53 2.44 2.37 2.32 2.27 2.24 2.20 2.18 2.15 2.13 2.11 2.09 2.08 2.06 2.05 2.04 2.02 2.01 2.01 2.00 1.99 1.98 1.97 1.97 1.96 1.91 1.88 1.82 1.76
24 4.26 3.40 3.01 2.78 2.62 2.51 2.42 2.36 2.30 2.25 2.22 2.18 2.15 2.13 2.11 2.09 2.07 2.05 2.04 2.03 2.01 2.00 1.99 1.98 1.97 1.97 1.96 1.95 1.95 1.94 1.89 1.86 1.80 1.73
25 4.24 3.39 2.99 2.76 2.60 2.49 2.40 2.34 2.28 2.24 2.20 2.16 2.14 2.11 2.09 2.07 2.05 2.04 2.02 2.01 2.00 1.98 1.97 1.96 1.96 1.95 1.94 1.93 1.93 1.92 1.87 1.84 1.78 1.71
26 4.23 3.37 2.98 2.74 2.59 2.47 2.39 2.32 2.27 2.22 2.18 2.15 2.12 2.09 2.07 2.05 2.03 2.02 2.00 1.99 1.98 1.97 1.96 1.95 1.94 1.93 1.92 1.91 1.91 1.90 1.85 1.82 1.76 1.69
27 4.21 3.35 2.96 2.73 2.57 2.46 2.37 2.31 2.25 2.20 2.17 2.13 2.10 2.08 2.06 2.04 2.02 2.00 1.99 1.97 1.96 1.95 1.94 1.93 1.92 1.91 1.90 1.90 1.89 1.88 1.84 1.81 1.74 1.67
28 4.20 3.34 2.95 2.71 2.56 2.45 2.36 2.29 2.24 2.19 2.15 2.12 2.09 2.06 2.04 2.02 2.00 1.99 1.97 1.96 1.95 1.93 1.92 1.91 1.91 1.90 1.89 1.88 1.88 1.87 1.82 1.79 1.73 1.65
29 4.18 3.33 2.93 2.70 2.55 2.43 2.35 2.28 2.22 2.18 2.14 2.10 2.08 2.05 2.03 2.01 1.99 1.97 1.96 1.94 1.93 1.92 1.91 1.90 1.89 1.88 1.88 1.87 1.86 1.85 1.81 1.77 1.71 1.64
30 4.17 3.32 2.92 2.69 2.53 2.42 2.33 2.27 2.21 2.16 2.13 2.09 2.06 2.04 2.01 1.99 1.98 1.96 1.95 1.93 1.92 1.91 1.90 1.89 1.88 1.87 1.86 1.85 1.85 1.84 1.79 1.76 1.70 1.62
40 4.08 3.23 2.84 2.61 2.45 2.34 2.25 2.18 2.12 2.08 2.04 2.00 1.97 1.95 1.92 1.90 1.89 1.87 1.85 1.84 1.83 1.81 1.80 1.79 1.78 1.77 1.77 1.76 1.75 1.74 1.69 1.66 1.59 1.51
50 4.03 3.18 2.79 2.56 2.40 2.29 2.20 2.13 2.07 2.03 1.99 1.95 1.92 1.89 1.87 1.85 1.83 1.81 1.80 1.78 1.77 1.76 1.75 1.74 1.73 1.72 1.71 1.70 1.69 1.69 1.63 1.60 1.52 1.44
100 3.94 3.09 2.70 2.46 2.31 2.19 2.10 2.03 1.97 1.93 1.89 1.85 1.82 1.79 1.77 1.75 1.73 1.71 1.69 1.68 1.66 1.65 1.64 1.63 1.62 1.61 1.60 1.59 1.58 1.57 1.52 1.48 1.39 1.28
Inf 3.84 3.00 2.60 2.37 2.21 2.10 2.01 1.94 1.88 1.83 1.79 1.75 1.72 1.69 1.67 1.64 1.62 1.60 1.59 1.57 1.56 1.54 1.53 1.52 1.51 1.50 1.49 1.48 1.47 1.46 1.39 1.35 1.24 1.00

Footnotes

  1. Wir sehen auch hier wieder die große Nähe von ANOVA und linearer Regressionsanalyse. Auch die ANOVA untersucht im Kern ein lineares Modell.↩︎