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.