Keywords: Levene Test, statistischer Test, Statistik Beratung, Data Science
Im folgenden geht es um den Levene-Test. Der Levene-Test ist ein sogenannter verteilungsfreier Test zum Vergleich von zwei oder mehreren Varianzen beliebig verteilter Grundgesamtheiten auf Gleichheit. Die Nullhypotheses beim Levene-Test geht davon aus dass alle betrachteten Varianzen gleich sind: \[H_0\colon \sigma^2_1=\sigma^2_2=\ldots=\sigma^2_k\] Die Alternativhypothese lautet, dass mindestens zwei betrachtete Varianzen ungleich sind: \(H_1\colon \sigma^2_i\neq\sigma^2_j\) für mindestens ein Gruppenpaar \(i,j\) mit \(i \neq j\)
Die Teststatistik \(W\), ist wie folgt definiert:
\[W = \frac{(N-k)}{(k-1)} \frac{\sum_{i=1}^k N_i (Z_{i\cdot}-Z_{\cdot\cdot})^2} {\sum_{i=1}^k \sum_{j=1}^{N_i} (Z_{ij}-Z_{i\cdot})^2},\]
wobei
Wir erzeugen uns in R zwei Gruppen die unterschiedlich verteilt sind aber alle die gleiche Varianz von \(25\) haben:
gr1 <- rnorm(20, mean=30, sd=5)
gr2 <- rpois(200, lambda=5^2)
Nun berechnen wir die Teststatistik anhand der Hilfsvaraiablen wie oben angegeben:
k <- 2
N <- length(gr1)+length(gr2)
N1 <- length(gr1)
N2 <- length(gr2)
dY1 <- sum(gr1)/N1
dY2 <- sum(gr2)/N2
Z1 <- abs(gr1-dY1)
Z2 <- abs(gr2-dY2)
Z <- (sum(Z1)+sum(Z2))/N
dZ1 <- sum(Z1)/N1
dZ2 <- sum(Z2)/N2
W <- (N-k)/(k-1)*(N1*(dZ1-Z)^2+N2*(dZ2-Z)^2)/(sum((Z1-dZ1)^2)+sum((Z2-dZ2)^2))
print(W)
## [1] 0.211133
Der p-Wert zu dieser Teststatistik \(W\) ist dann gegeben durch:
1-pf(q=W,df1=k-1,df2=N-k)
## [1] 0.6463387
Wir berechnen die Teststatistik mit der eingebauten Funktion leveneTest in R, um zu vergleichen
library(car)
g1 <- data.frame(gr1,c(1))
names(g1) <- c("Y","Gruppe")
g2 <- data.frame(gr2,c(2))
names(g2) <- c("Y","Gruppe")
g <- rbind(g1,g2)
leveneTest(Y~factor(Gruppe), data=g,center="mean")
## Levene's Test for Homogeneity of Variance (center = "mean")
## Df F value Pr(>F)
## group 1 0.2111 0.6463
## 218
Wie man sieht stimmen sowohl die Teststatistik als auch der p-Wert überein. Die Interpretation des Tests lautet wie folgt: Wir können auf dem Signifikanzniveau \(\alpha\)=0.05 die Nullhypothese, dass die Varianzen gleich sind, nicht verwerfen, da der p-Wert des Tests \(>0.05\) ist.
Wir erzeugen uns in R zwei Gruppen die unterschiedlich verteilt sind und ungleiche Varianz haben:
gr1 <- rnorm(20, mean=30, sd=5)
gr2 <- rpois(200, lambda=20^2)
Nun berechnen wir die Teststatistik anhand der Hilfsvaraiablen wie oben angegeben:
k <- 2
N <- length(gr1)+length(gr2)
N1 <- length(gr1)
N2 <- length(gr2)
dY1 <- sum(gr1)/N1
dY2 <- sum(gr2)/N2
Z1 <- abs(gr1-dY1)
Z2 <- abs(gr2-dY2)
Z <- (sum(Z1)+sum(Z2))/N
dZ1 <- sum(Z1)/N1
dZ2 <- sum(Z2)/N2
W <- (N-k)/(k-1)*(N1*(dZ1-Z)^2+N2*(dZ2-Z)^2)/(sum((Z1-dZ1)^2)+sum((Z2-dZ2)^2))
print(W)
## [1] 20.77427
Der p-Wert zu dieser Teststatistik \(W\) ist dann gegeben durch:
1-pf(q=W,df1=k-1,df2=N-k)
## [1] 8.607176e-06
Wir berechnen die Teststatistik mit der eingebauten Funktion leveneTest in R, um zu vergleichen
library(car)
g1 <- data.frame(gr1,c(1))
names(g1) <- c("Y","Gruppe")
g2 <- data.frame(gr2,c(2))
names(g2) <- c("Y","Gruppe")
g <- rbind(g1,g2)
leveneTest(Y~factor(Gruppe), data=g,center="mean")
## Levene's Test for Homogeneity of Variance (center = "mean")
## Df F value Pr(>F)
## group 1 20.774 8.607e-06 ***
## 218
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Wie man sieht stimmen sowohl die Teststatistik als auch der p-Wert überein. Die Interpretation des Tests lautet wie folgt: Wir können auf dem Signifikanzniveau \(\alpha\)=0.05 die Nullhypothese, dass die Varianzen gleich sind, verwerfen, da der p-Wert des Tests \(<0.05\) ist.