Ich möchte beobachtete bivariate (Pearson's und Spearman's ) Korrelationskoeffizienten mit dem vergleichen, was von zufälligen Daten erwartet wird.
Angenommen, wir messen beispielsweise 36 Fälle über sehr viele Variablen (1000). (Ich weiß, dass dies seltsam ist, es wird Q-Methodik genannt . Nehmen wir weiter an, dass jede der Variablen (streng) normal über die Fälle verteilt ist . (Wieder sehr seltsam, aber wahr, weil Personen als Personenvariablen die Reihenfolge der Artikelfälle unter a ordnen Normalverteilung.)
Also, wenn die Menschen zufällig sortiert , sollten wir erhalten:
m <- sapply(X = 1:1000, FUN = function(x) rnorm(36))
Nun - da dies eine Q-Methode ist - korrelieren wir alle Personenvariablen :
cors <- cor(x = m, method = "pearson")
Dann versuchen wir, dies aufzuzeichnen und die Verteilung des Pearson-Korrelationskoeffizienten in Zufallsdaten zu überlagern , die eigentlich den beobachteten Korrelationen in unseren gefälschten Daten ziemlich nahe kommen sollten:
library(ggplot2)
cor.data <- cors[upper.tri(cors, diag = FALSE)] # we're only interested in one of the off-diagonals, otherwise there'd be duplicates
cor.data <- as.data.frame(cor.data) # that's how ggplot likes it
colnames(cor.data) <- "pearson"
g <- ggplot(data = cor.data, mapping = aes(x = pearson))
g <- g + xlim(-1,1) # actual limits of pearsons r
g <- g + geom_histogram(mapping = aes(y = ..density..))
g <- g + stat_function(fun = dt, colour = "red", args = list(df = 36-1))
g
Das gibt:
Die überlagerte Kurve ist eindeutig falsch. (Beachten Sie auch, dass die Dichten der y-Achse zwar ungerade sind, aber tatsächlich korrekt sind : Da die x-Werte so klein sind, summiert sich die Fläche auf eins).
Ich erinnere mich (vage), dass die T-Verteilung in diesem Zusammenhang relevant ist, aber ich kann mich nicht darum kümmern, wie man sie richtig parametrisiert. Sind die Freiheitsgrade insbesondere durch die Anzahl der Korrelationen (1000 ^ 2 / 2-500) oder die Anzahl der Beobachtungen, auf denen diese Korrelationen beruhen, gegeben (36)?
In beiden Fällen ist die oben überlagerte Kurve eindeutig falsch.
Ich bin auch verwirrt, weil die Wahrscheinlichkeitsverteilung von Pearsons r begrenzt werden müsste (es gibt keine Werte über (-) 1 hinaus) - aber die t-Verteilung ist nicht begrenzt.
Welche Distribution beschreibt Pearson's in diesem Fall?
Bonus:
Die obigen Daten sind tatsächlich idealisiert: In meiner realen Q-Studie haben Personenvariablen tatsächlich nur sehr wenige Spalten unter einer Normalverteilung, in die ihre Artikelfälle wie folgt sortiert werden können:
Tatsächlich handelt es sich bei Personenvariablen tatsächlich um Rangfolge von Artikelfällen , sodass Pearson's nicht anwendbar ist. Als grobe Lösung habe ich mich stattdessen für Spearman's entschieden. Ist die Wahrscheinlichkeitsverteilung für Spearman's ?
Update : Wenn jemand interessiert ist, ist hier der R-Code, um die fantastische Antwort von @ amoeba unten zu implementieren:
library(ggplot2)
cor.data <- cors[upper.tri(cors, diag = FALSE)] # we're only interested in one of the off-diagonals, otherwise there'd be duplicates
cor.data <- as.data.frame(cor.data) # that's how ggplot likes it
summary(cor.data)
colnames(cor.data) <- "pearson"
pearson.p <- function(r, n) {
pofr <- ((1-r^2)^((n-4)/2))/beta(a = 1/2, b = (n-2)/2)
return(pofr)
}
g <- NULL
g <- ggplot(data = cor.data, mapping = aes(x = pearson))
g <- g + xlim(-1,1) # actual limits of pearsons r
g <- g + geom_histogram(mapping = aes(y = ..density..))
g <- g + stat_function(fun = pearson.p, colour = "red", args = list(n = nrow(m)))
g
Entscheidend sind die pearson.p
Funktion und die letzte Ergänzung von ggplot2.
Hier ist das Ergebnis; passt perfekt, wie man erwarten würde: