10 min read

t-Test

Table of Content

  • 1 Introduction
  • 2 Preparation
  • 3 Essential requirements
  • 3.1 Normal distribution
  • 3.2 Sampling size
  • 3.3 Homogeneity of variance
  • 4 t-Test with variance homogeneity
  • 5 t-Test with variance inequality
  • 6 Directed hypothesis
  • 7 Adjust confidence interval
  • 8 Effect size
  • 9 Power
  • 10 Conclusion

1 Introduction

Ein t-Test kann verwendet werden, um Mittelwertsunterschiede zu überprüfen.

Wenn man den Stichprobenmittelwert von einer Variablen mit einem bekannten Populationsmittelwert vergleichen möchte, so wird ein t-Test für eine Stichprobe verwendet.

Möchte man bei beispielsweise Längsschnittstudien (bei denen jede Person zweimal untersucht und somit Wertepaare gebildet werden) zwei Mittelwerte miteinander vergleichen, so verwendet man t-Tests für abhängige Stichproben.

Im Folgenden wird die Verwendung des t-Tests für unabhängigen Stichproben behandelt. Dabei vergleicht man zwei Gruppen in Bezug auf den jeweiligen Mittelwert auf der abhängigen Variablen.

Für diesen Post wurde der Datensatz countries of the world von der Statsistik Plattform Kaggle https://www.kaggle.com verwendet. Eine Kopie des Datensatzes ist unter https://drive.google.com/open?id=1QO_t4hySiqVsSDsVOsKZEOHOkLlWO006 abrufbar.

library(tidyverse)
library(psych)
library(MBESS)
library(nortest)
library(car)
library(pwr)
countries <- read_csv("countries of the world.csv")

2 Preparation

Für die exemplarische Durchführung der nachfolgenden t-Tests wird der Datensatz countries of the world auf die beiden Regionen “LATIN AMER. & CARIB” und “SUB-SAHARAN AFRICA” reduziert.

table(countries$Region)
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##                   28                    3                   12 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##                   12                   45                   16 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##                    6                    5                   21 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##                   51                   28
limitation<- countries %>% filter(Region == "LATIN AMER. & CARIB" | Region == "SUB-SAHARAN AFRICA") %>%
  select(Country, Region, `Coastline (coast/area ratio)`, Population)

Im Nachfolgenden soll untersucht werden, ob sich diese beiden Regionen hinsichtlich den Variablen “Population” und “Coastline” signifikant voneinander unterscheiden. Dafür werden sie im Zuge der Vorbereitung in eine nummerische Variable umgewandelt.

limitation$Population.num <- as.numeric(limitation$Population)
limitation$Coastline.new <- str_replace(limitation$`Coastline (coast/area ratio)`, ",", ".")
limitation$Coastline.num <- as.numeric(limitation$Coastline.new)

summary(limitation)
##    Country             Region          Coastline (coast/area ratio)
##  Length:96          Length:96          Length:96                   
##  Class :character   Class :character   Class :character            
##  Mode  :character   Mode  :character   Mode  :character            
##                                                                    
##                                                                    
##                                                                    
##    Population        Population.num      Coastline.new     
##  Min.   :     7502   Min.   :     7502   Length:96         
##  1st Qu.:   438370   1st Qu.:   438370   Class :character  
##  Median :  4189308   Median :  4189308   Mode  :character  
##  Mean   : 13658975   Mean   : 13658975                     
##  3rd Qu.: 12351432   3rd Qu.: 12351432                     
##  Max.   :188078227   Max.   :188078227                     
##  Coastline.num    
##  Min.   :  0.000  
##  1st Qu.:  0.090  
##  Median :  0.495  
##  Mean   : 10.200  
##  3rd Qu.:  9.435  
##  Max.   :107.910

3 Essential requirements

Bevor man einen t-Test für unabhängige Stichproben durchführen kann, müssen folgende Voraussetzungen überprüft werden:

  • Die abhängige Variable ist metrisch skaliert.
  • Normalverteilung der abhängigen Variablen in beiden Populationen wenn N1 < 30 & N2 < 30.
  • Varianzhomogenität der abhängigen Variablen in beiden Populationen.

Sowohl “Population” als auch “Coastline” sind metrisch skalierte Variablen. Damit ist die erste Voraussetzung erfüllt.

3.1 Normal distribution

Der Lilliefors-Test prüft die Nullhypothese, dass die Verteilung der Variable einer Normalverteilung entspricht. Dies bedeutet, dass wir von einer Normalverteilung ausgehen, wenn das Ergebnis nicht signifikant ist.

lillie.test(limitation$Population.num)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  limitation$Population.num
## D = 0.311, p-value < 2.2e-16

Der Test zeigt ein signifikantes Ergebnis. Dies bedeutet, dass die Variable “Population” nicht normalverteilt ist. In Folge dessen, wird die Stichprobengröße untersucht. Falls diese in beiden Gruppen größer 30 ist, greift hier der zentrale Grenzwertsatz, sodass das Ergebnis des t-Tests durch diese Abweichung nicht betroffen ist.

3.2 Sampling size

Die Größe der Stichprobe kann mit der describeBy Funktion ermittelt werden.

description <- describeBy(limitation$Population.num, limitation$Region, mat = TRUE)
description
##     item              group1 vars  n     mean       sd  median trimmed
## X11    1 LATIN AMER. & CARIB    1 45 12484991 32353969 1065842 4938238
## X12    2  SUB-SAHARAN AFRICA    1 51 14694843 23091893 8090068 9605123
##         mad  min       max     range     skew kurtosis      se
## X11 1566223 9439 188078227 188068788 4.120954 17.97317 4823045
## X12 9856383 7502 131859731 131852229 3.103686 11.42630 3233512
sum(description$n)
## [1] 96
describeBy(limitation$Population.num, limitation$Region, mat = TRUE)$n
## [1] 45 51

Da N1 & N2 < 30 greift der zentrale Grenzwertsatz.

3.3 Homogeneity of variance

Der verwendete leveneTest hat zwei Argumente. Das Erste ist die abhängige Variable das Zweite die unabhängige Variable. Die Nullhypothese besagt Varianzhomogenität.

leveneTest(limitation$Population.num, limitation$Region)
## Warning in leveneTest.default(limitation$Population.num, limitation
## $Region): limitation$Region coerced to factor.
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  1   6e-04 0.9812
##       94

Da p > .05 ist, wird die Nullhypothese beibehalten und wir nehmen Varianzhomogenität an.

4 t-Test with variance homogeneity

t.test(limitation$Population.num ~ limitation$Region, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  limitation$Population.num by limitation$Region
## t = -0.38847, df = 94, p-value = 0.6985
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -13504755   9085051
## sample estimates:
## mean in group LATIN AMER. & CARIB  mean in group SUB-SAHARAN AFRICA 
##                          12484991                          14694843

Die Bestandteile des Tests sind wie folgt:

two sample t-test. Der durchgeführte Test, in diesem Fall der t-Test für unabhängige Stichproben.

t = -0.38847, df = 94, p-value = 0.6985. Die empirische Prüfgröße t, die Freiheitsgrade df und der p-Wert p-value.

true difference in means is not equal to 0. Die ausformulierte Alternativhypothese des Tests.

95 percent confidence interval. Das Konfidenzintervall für den Stichprobenmittelwert.

sample estimates Der beobachtete Stichprobenmittelwert für die beiden Ausprägungen der unabhängigen Variablen.

Der durchgeführte t-Test zeigt ein nicht signifikantes Ergebnis (p > .05). Die Alternativhypothese (Es gibt einen Unterschied zwischen den beiden Regionen “LATIN AMER. & CARIB” und “SUB-SAHARAN AFRICA” hinsichtlich dem Populationswertes) kann somit verworfen werden.

5 t-Test with variance inequality

Es kann natürlich vorkommen, dass die Varianzen der abhängigen Variablen in beiden Populationen nicht gleich sind. Wir wollen eine Mittelwertsvergleich für die beiden Regionen “LATIN AMER. & CARIB” und “SUB-SAHARAN AFRICA” mittels der abhängigen Variablen Coastline durchführen.

Überprüfung der Normalverteilung

lillie.test(limitation$Coastline.num)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  limitation$Coastline.num
## D = 0.32731, p-value < 2.2e-16

Wir sehen, dass die Variable Coastline nicht normalverteilt ist. Nun wird erneut die Stichprobengröße der beiden Gruppen betrachtet.

Stichprobengröße

description2 <- describeBy(limitation$Coastline.num, limitation$Region, mat = TRUE)
description2
##     item              group1 vars  n      mean       sd median   trimmed
## X11    1 LATIN AMER. & CARIB    1 45 15.972222 21.52437   3.37 12.293243
## X12    2  SUB-SAHARAN AFRICA    1 51  5.106078 16.96183   0.13  1.036585
##          mad min    max  range     skew  kurtosis       se
## X11 4.862928   0  90.47  90.47 1.447746  1.582381 3.208663
## X12 0.192738   0 107.91 107.91 4.748483 24.436128 2.375132

Da N1 & N2 < 30 greift erneut der zentrale Grenzwertsatz.

Überprüfung der Varianzhomogenität

leveneTest(limitation$Coastline.num, limitation$Region)
## Warning in leveneTest.default(limitation$Coastline.num, limitation$Region):
## limitation$Region coerced to factor.
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value   Pr(>F)   
## group  1  7.1668 0.008764 **
##       94                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Wir erhalten ein signifikantes Ergebnis. Dies bedeutet, dass Varianzungleichheit vorliegt. Anstelle des t-Tests für unabhängige Stichproben wird daher der Welch Test durchgeführt.

Welch-Test bei Varianzungleichheit

t.test(limitation$Coastline.num ~ limitation$Region)
## 
##  Welch Two Sample t-test
## 
## data:  limitation$Coastline.num by limitation$Region
## t = 2.7219, df = 83.395, p-value = 0.0079
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##   2.926597 18.805691
## sample estimates:
## mean in group LATIN AMER. & CARIB  mean in group SUB-SAHARAN AFRICA 
##                         15.972222                          5.106078

Das Ergebnis ist signifikant. Es gibt also einen Unterschied zwischen beiden Regionen hinsichtlich ihres Küstenanteils.

6 Directed hypothesis

Bei dem durchgeführten t-Test für unabhängige Stichproben sowie dem Welch-Test handelte es sich um ungerichtete Hypothesen: \[\begin{equation*} H_0:\mu=\mu_0 \quad \text{gegen} \quad H_1:\mu\neq\mu_0 \end{equation*}\] Man behauptet, es gebe einen Mittelwertsunterschied zwischen zwei Gruppen. Die Nullhypothese besagt demnach, dass die Mittelwerte gleich sind.

Entgegen ungerichteter Hypothesen besteht die Möglichkeit, diese auch gerichtet zu testen: \[\begin{equation*} H_0:\mu=\mu_0 \quad \text{gegen} \quad H_1:\mu\geq\mu_0 \end{equation*}\]

Zuvor sollte mittels der levels Funktion überprüft werden, welche “Gruppe” innerhalb der unabhängigen Variablen zuerst genannt wird.

levels(as.factor(limitation$Region))
## [1] "LATIN AMER. & CARIB" "SUB-SAHARAN AFRICA"

Für eine gerichtete Hypothese muss die Syntax des t-Tests um das Argument alternative = “greater” oder “less” ergänzt werden. Möchte man prüfen, ob die Region “SUB-SAHARAN AFRICA” einen höhere Küstenanteil hat als die Region “LATIN AMER. & CARIB”, muss man den t-Test folgendermaßen anfordern.

t.test(limitation$Coastline.num ~ limitation$Region, alternative = "less")
## 
##  Welch Two Sample t-test
## 
## data:  limitation$Coastline.num by limitation$Region
## t = 2.7219, df = 83.395, p-value = 0.996
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
##      -Inf 17.50631
## sample estimates:
## mean in group LATIN AMER. & CARIB  mean in group SUB-SAHARAN AFRICA 
##                         15.972222                          5.106078

Mit p = .996 ist das Ergebnis nicht signifikant. “SUB-SAHARAN AFRICA” hat demnach keinen höheren Küstenanteil als “LATIN AMER. & CARIB”.

7 Adjust confidence interval

Standardgemäß wird in R immer 95% Konfidenzintervall ausgegeben. Allerdings kann man mit dem Zusatzargument conf.level = das Konfidenzintervall anpassen. Im folgenden Beispiel wird der Welch-Test aus Punkt 4 t-Test with variance inequality mit einem 99% Konfidenzintervall angefordert.

t.test(limitation$Coastline.num ~ limitation$Region, conf.level = 0.99)
## 
##  Welch Two Sample t-test
## 
## data:  limitation$Coastline.num by limitation$Region
## t = 2.7219, df = 83.395, p-value = 0.0079
## alternative hypothesis: true difference in means is not equal to 0
## 99 percent confidence interval:
##   0.3426961 21.3895914
## sample estimates:
## mean in group LATIN AMER. & CARIB  mean in group SUB-SAHARAN AFRICA 
##                         15.972222                          5.106078

8 Effect size

Als standardisierte Effektgröße (SMD: Standardized Mean Difference) für zwei Mittelwerte wird üblicherweise Cohens d angefordert. Cohens d wird berechnet, indem man die Mittelwertsdifferenz durch die gepoolte Standardabweichung teilt. Im folgenden Beispiel wird die Effektgröße für den Vergleich von “SUB-SAHARAN AFRICA” und “LATIN AMER. & CARIB” bezüglich ihres Küstenanteils ermittelt.

ci.smd(ncp = t.test(limitation$Coastline.num ~ limitation$Region)$statistic, n.1 = description2$n[1], n.2 = description2$n[2])
## $Lower.Conf.Limit.smd
## [1] 0.1466113
## 
## $smd
##         t 
## 0.5566979 
## 
## $Upper.Conf.Limit.smd
## [1] 0.9639339

Die ci.smd Funktion enthält folgende Argumente:

ncp = ist der Nonzentralitätsparameter. Dieser Wert kann mit Hilfe des Dollar Zeichens direkt aus der Ausgabe des t-Tests herausgelesen werden.

n.1 Die Stichprobengröße der ersten Gruppe. Diese Angabe kann ebenfalls direkt aus der Tabelle mit den deskriptiven Statistiken (4. t-Test with variance inequality/Stichprobengröße) entnommen werden.

n.2 Die Stichprobengröße der zweiten Gruppe.

Wir erhalten ein Cohens d von 0,56 ($smd).

9 Power

Im folgenden Beispiel soll die Teststärke für den Welch-Test (4. t-Test with variance inequality/Welch-Test bei Varianzungleichheit) berechnet werden. Folgende Parameter werden daher in den Befehl pwr.t.test eingefügt:

  • d = Cohens d
  • sig. level = Signifikanzniveau
  • n = Gruppengröße (der kleineren Gruppe)
  • type = Art des t-Tests
  • alternative = Art der Alternativhypothese

Für das Beispiel mit dem Welch-Test ergibt sich folgende Syntax.

pwr.t.test(d=0.5566979, sig.level = 0.0079, n=45, type="two.sample", alternative="two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 45
##               d = 0.5566979
##       sig.level = 0.0079
##           power = 0.4726751
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Der Welch-Test besitzt eine Teststärke von 0,47. Gewünscht wäre eine Stärke von 0,8. Im Nachgang wird nun berechnet, wie viele Personen man pro Gruppe für den Welch-Test bräuchte, um folgende Werte zu erhalten:

  • d = 0,5
  • sig.level = 0,05
  • power = 0,8
  • type = “two.sample”
  • alternative =“two.sided”
pwr.t.test(d=0.5, sig.level = 0.05, power=0.8, type="two.sample", alternative="two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 63.76561
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

Um eine Teststärke von 0,8 bei einem Signifikanzlevel von 0,05 und einer Effektgröße von 0,5 zu bekommen (bei einem t-Test für unabhängige Stichproben und ungerichteter Hypothese), bedarf es einer Gruppengröße von mindestens 64 in beiden Gruppen.

10 Conclusion

Der Vergleich von Mittelwerten zweier Gruppen kommt in der Statistik sehr häufig vor. In diesem Post wurde gezeigt, wie ein t-Test oder Welch-Test für unabhängige Stichproben durchgeführt wird. Es wurde auf die Voraussetzungen des t-Tests eingegangen sowie die Berechnung der Effekt- und der Teststärke. War die Teststärke nicht ausreichend, wurde im Nachgang die erforderte Gruppengröße berechnet.

Source

Luhmann, M. (2011). R für Einsteiger.