Bekanntlich testet der Befehl cor.test() in R immer die Nullhypothese, dass in der Grundgesamtheit:
D.h. für den unter H0 unterstellten Korrelationskoeffizienten \(\rho_0\) gilt immer \(\rho_0 = 0\). Doch wie kann man Hypothesen testen, in denen \(\rho_0\neq 0\) ist, z.B. weil man testen möchte, ob zwischen zwei Merkmalen ein starker gleichsinniger Zusammenhang besteht oder nicht (H0: \(\rho\leq 0.6\) vs. H1: \(\rho>0.6\))?
Für einen solchen allgemeinen Hypothesentest für Korrelationskoeffizienten gibt es im Buch von Fahrmeir et al. (2016) auf Seite 432 folgende Teststatistik:
\[\tau = \frac{1}{2}\left( \ln{\frac{1 + \hat{\rho}}{1 - \hat{\rho}}} - \ln{\frac{1 + \rho_0}{1 - \rho_0}} \right) \sqrt{n - 3}\]
Wobei \(\hat{\rho}\) der Stichprobenkorrelationskoeffizient ist und \(\rho_0\) der unter H0 unterstellte Wert. Ab ca. 30 Beobachtungen kann \(\tau\) als annähernd standardnormalverteilt angenommen werden, sodass wir die Teststatistik mit den Quantilen der Standardnormalverteilung vergleichen können. Um den Test in R zu implementieren brauchen wir lediglich die Funktion log(), mit der man den natürlichen Logarithmus berechnet.
Betrachten wir dazu ein Beispiel. Wir verwenden die Daten zu durchschnittlichen LTE-Internetgeschwindigkeit und -abdeckung aus lte.RData. Wir möchten testen, ob man behaupten kann, dass der Korrelationskoeffizient zwischen Geschwindigkeit und Netzabdeckung \(\rho\neq 0.4\) ist (H1) gegen die H0, dass \(\rho=0.4\) ist (zweiseitiger Hypothesentest; für einseitige Hypothesentests siehe nächster Abschnitt).
load("lte.RData")
Hier ein Streudiagramm der beiden Variablen:
Wir legen zuerst den Wert unter Gültigkeit der Nullhypothese \(\rho_0 = 0.4\) unter dem Namen rho_0 fest und speichern die Anzahl der Zeilen im Datensatz lte als Anzahl der Beobachtungen unter dem Variablennamen n, nachdem wir uns versichert haben, dass beide Merkmale keine fehlenden Werte (NA) aufweisen. Der Stichprobenkorrelationskoeffizient \(\hat{\rho}\) wird unter dem Namen rho_dach abgespeichert:
rho_0 <- 0.4
anyNA(lte$speed, lte$coverage)
## [1] FALSE
n <- nrow(lte)
rho_dach <- cor(lte$speed, lte$coverage)
rho_dach
## [1] 0.4224722
Der Stichprobenkorrelationskoeffizient beträgt \(\hat{\rho} = 0.422\). Nun berechnen wir die Teststatistik:
tau <- 1/2 * (log((1 + rho_dach) / (1 - rho_dach)) -
log((1 + rho_0) / (1 - rho_0))) * sqrt(n - 3)
tau
## [1] 0.2279153
\(\tau\) nimmt also einen Wert von 0.228 an. Diesen vergleichen wir mit dem kritischen Wert, dem \((1 - \alpha/2)\)-Quantil der Standardnormalverteilung. Für \(\alpha = 0.05\) liegt dieser bei:
alpha <- 0.05
z_krit <- qnorm(1 - alpha/2)
z_krit
## [1] 1.959964
Die Entscheidungsregel lautet: Lehne H0 ab, wenn der Absolutwert (Betrag) der Teststatistik größer ist als der kritische Wert:
abs(tau) > z_krit
## [1] FALSE
Dies ist nicht der Fall, wir behalten H0 daher bei: Man kann nicht behaupten, dass sich der Korrelationskoeffizient \(\rho\) in der Grundgesamtheit von 0.4 unterscheidet.
Testen wir nun die Nullhypothese, dass der Korrelationskoeffizient 0.6 ist gegen die Alternativhypothese, dass der Korrelationskoeffizient ungleich 0.6 ist, erhalten wir folgende Teststatistik:
rho_0 <- 0.6
tau <- 1/2 * (log((1 + rho_dach) / (1 - rho_dach)) -
log((1 + rho_0) / (1 - rho_0))) * sqrt(n - 3)
tau
## [1] -2.042917
Der Vergleich des Absolutwerts von \(\tau\) mit dem kritischen Wert liefert diesmal genügend Evidenz gegen H0:
z_krit <- qnorm(1 - alpha/2)
abs(tau) > z_krit
## [1] TRUE
Wir entscheiden uns daher für die Alternativhypothese: Man kann behaupten, dass der wahre Korrelationskoeffizient in der Grundgesamtheit \(\rho\neq 0.6\) ist.
Selbstverständlich können wir auch einseitige Hypothesen testen. Die Entscheidungsregeln für die einseitigen Hypothesenpaare entnehmen wir ebenfalls S. 432 im Buch von Fahrmeir. et al. Wir testen zuerst, ob man behaupten kann, dass der Korrelationskoeffizient in der Grundgesamtheit kleiner als 0.6 ist (H1) gegen die Nullhypothese, dass der Korrelationskoeffizient in der Grundgesamtheit größer oder gleich 0.6 ist:
rho_0 <- 0.6
tau <- 1/2 * (log((1 + rho_dach) / (1 - rho_dach)) -
log((1 + rho_0) / (1 - rho_0))) * sqrt(n - 3)
alpha <- 0.05
z_krit <- qnorm(1 - alpha)
tau < -z_krit
## [1] TRUE
Die Entscheidungsregel zeigt uns, dass wir H0 verwerfen können: Wir können behaupten, dass der Korrelationskoeffizient kleiner als 0.6 ist.
Zum Abschluss testen wir noch, ob man behaupten kann, dass der Korrelationskoeffizient in der Grundgesamtheit größer als 0.2 ist (H1) gegen die Nullhypothese, dass der Korrelationskoeffizient in der Grundgesamtheit kleiner oder gleich 0.2 ist:
rho_0 <- 0.2
tau <- 1/2 * (log((1 + rho_dach) / (1 - rho_dach)) -
log((1 + rho_0) / (1 - rho_0))) * sqrt(n - 3)
alpha <- 0.05
z_krit <- qnorm(1 - alpha)
tau > z_krit
## [1] TRUE
Auch hier lehnen wir H0 ab und entscheiden uns für H1: man kann behaupten, dass der Korrelationskoeffizient größer als 0.2 ist. Zusammen lässt sich dies als Evidenz für einen mittelstarken Zusammenhang interpretieren.