Beispiel eines starken Korrelationskoeffizienten mit einem hohen p-Wert

21

Ich habe mich gefragt, ob es möglich ist, einen sehr starken Korrelationskoeffizienten (z. B. 0,9 oder höher) mit einem hohen p-Wert (z. B. 0,25 oder höher) zu haben.

Hier ist ein Beispiel für einen niedrigen Korrelationskoeffizienten mit einem hohen p-Wert:

set.seed(10)
y <- rnorm(100)
x <- rnorm(100)+.1*y
cor.test(x,y)

cor = 0,03908927, p = 0,6994

Hoher Korrelationskoeffizient, niedriger p-Wert:

y <- rnorm(100)
x <- rnorm(100)+2*y
cor.test(x,y)

cor = 0,8807809, p = 2,2e-16

Niedriger Korrelationskoeffizient, niedriger p-Wert:

y <- rnorm(100000)
x <- rnorm(100000)+.1*y
cor.test(x,y)

cor = 0,1035018, p = 2,2e-16

Hoher Korrelationskoeffizient, hoher p-Wert:

Zach
quelle

Antworten:

36

Die Quintessenz

Der Stichprobenkorrelationskoeffizient, der erforderlich ist, um die Hypothese zu verwerfen, dass der wahre (Pearson) -Korrelationskoeffizient Null ist, wird mit zunehmender Stichprobengröße recht schnell klein. Im Allgemeinen können Sie also nicht gleichzeitig einen großen (betragsmäßigen) Korrelationskoeffizienten und einen gleichzeitig großen Wert habenp .

Die Top Line (Details)

Der für den Pearson-Korrelationskoeffizienten in der Funktion verwendete Test ist eine sehr geringfügig modifizierte Version der unten diskutierten Methode.Rcor.test

Angenommen, sind bivariate normale Zufallsvektoren mit Korrelation . Wir wollen die Nullhypothese testen, dass gegen . Sei der Probenkorrelationskoeffizient. Unter Verwendung der Standardtheorie der linearen Regression ist es nicht schwer zu zeigen, dass die Teststatistik ein Verteilung unter der Nullhypothese. Für große , die Verteilung nähert sich den Standard normal. Daher& rgr; & rgr; = 0 & rgr; & ne; 0 r T = r (X1,Y.1),(X2,Y.2),,(Xn,Y.n)ρρ=0ρ0r tn-2ntn-2T2T2F1,n-221

T=rn-2(1-r2)
tn-2ntn-2T2ist ungefähr im Chi-Quadrat verteilt mit einem Freiheitsgrad. (Unter den Annahmen, die wir getroffen haben, ist , aber die Annäherung macht klarer, was los ist, denke ich.)T2F1,n-2χ12

Also wobei ist das Quantil einer Chi-Quadrat-Verteilung mit einem Freiheitsgrad.q 1 - α ( 1 - α )

P(r21-r2(n-2)q1-α)α,
q1-α(1-α)

Beachten Sie nun, dass zunimmt, wenn zunimmt. Wenn wir die Menge in der Wahrscheinlichkeitsrechnung neu ordnen, gilt das für alle Wir erhalten eine Ablehnung der Nullhypothese auf Stufe . Klarerweise nimmt die rechte Seite mit .r2/(1-r2)r2

|r|11+(n-2)/q1-α
αn

Eine Handlung

Hier ist eine Darstellung der Zurückweisungsregion vonals Funktion der Stichprobengröße. Wenn die Stichprobengröße beispielsweise 100 überschreitet, muss die (absolute) Korrelation nur etwa 0,2 betragen, um die Null auf dem Niveau von abzulehnen .|r|α=0,05

Eine Simulation

Wir können eine einfache Simulation durchführen, um ein Paar von Vektoren mit einem exakten Korrelationskoeffizienten zu erzeugen . Unten ist der Code. Daraus können wir die Ausgabe von betrachten cor.test.

k <- 100
n <- 4*k

# Correlation that gives an approximate p-value of 0.05
# Change 0.05 to some other desired p-value to get a different curve
pval <- 0.05
qval <- qchisq(pval,1,lower.tail=F)
rho  <- 1/sqrt(1+(n-2)/qval)

# Zero-mean orthogonal basis vectors
b1 <- rep(c(1,-1),n/2)
b2 <- rep(c(1,1,-1,-1),n/4)

# Construct x and y vectors with mean zero and an empirical
# correlation of *exactly* rho
x <- b1
y <- rho * b1 + sqrt(1-rho^2) * b2

# Do test
ctst <- cor.test(x,y)

Wie in den Kommentaren angefordert, ist hier der Code zum Reproduzieren des Plots, der unmittelbar nach dem obigen Code ausgeführt werden kann (und einige der dort definierten Variablen verwendet).

png("cortest.png", height=600, width=600)
m  <- 3:1000
yy <- 1/sqrt(1+(m-2)/qval)
plot(m, yy, type="l", lwd=3, ylim=c(0,1),
     xlab="sample size", ylab="correlation")
polygon( c(m[1],m,rev(m)[1]), c(1,yy,1), col="lightblue2", border=NA)
lines(m,yy,lwd=2)
text(500, 0.5, "p < 0.05", cex=1.5 )
dev.off()
Kardinal
quelle
1
Also - was ist das Endergebnis? Ich denke, Sie sagen, dass ein hoher Korrelationswert, sofern die Stichprobengröße nicht klein ist, einen niedrigen p-Wert impliziert - aber ich denke, es wäre hilfreich, dies explizit zu formulieren.
DW
p
@cardinal, können Sie bitte den Quellcode für das von Ihnen generierte Diagramm veröffentlichen?
aL3xa
@ DW, ich habe versucht, auf Ihre Bedenken einzugehen. Wenn Sie Verbesserungsvorschläge sehen, lassen Sie es mich bitte wissen.
Kardinal
1
@ aL3xa: Ich habe den verwendeten Zeichencode hinzugefügt. Hoffe das hilft.
Kardinal
17
cor.test(c(1,2,3),c(1,2,2))

cor = 0,866, p = 0,333

Aaron - Setzen Sie Monica wieder ein
quelle
6
@Zach: Bitte überdenken Sie Ihren Scheck noch einmal, da sich Kardinal und Shabbychef die Zeit genommen haben, vollständige Antworten zu geben.
Aaron - Reinstate Monica
11

Eine hohe Schätzung des Korrelationskoeffizienten mit einem hohen p-Wert konnte nur mit einer sehr kleinen Stichprobengröße erfolgen. Ich wollte gerade eine Illustration liefern, aber Aaron hat das gerade getan!

ein Stop
quelle
9

1/n-3ρ^>0p

p=2-2Φ(atanh(ρ^)n-3),
ΦH0:ρ=0

nρ^p

 #get n for sample correlation and p-value, 2-sided test of 0 correlation
 n.size <- function(rho.hat,p.val) {
   n <- 3 + ((qnorm(1 - 0.5 * p.val)) / atanh(rho.hat))^2
 }

ρ^=0,5p=0,2

print(n.size(0.5,0.2))

[1] 8.443062

n,pρ^

shabbychef
quelle
1

Ja. Ein p-Wert hängt von der Stichprobengröße ab, daher kann eine kleine Stichprobe dies ergeben.

Angenommen, die wahre Effektgröße war sehr klein, und Sie zeichnen ein kleines Beispiel. Glücklicherweise erhalten Sie einige Datenpunkte mit sehr hoher Korrelation. Der p-Wert wird hoch sein, wie es sein sollte. Die Korrelation ist hoch, aber kein sehr zuverlässiges Ergebnis.

Die Stichprobenkorrelation von Rs cor () gibt Ihnen die beste Schätzung der Korrelation (unter Berücksichtigung der Stichprobe). Der p-Wert misst NICHT die Stärke der Korrelation. Sie misst, wie wahrscheinlich es wäre, wenn tatsächlich keine Auswirkung aufgetreten wäre, wenn man die Größe der Stichprobe berücksichtigt.

Eine andere Möglichkeit, dies zu sehen: Wenn Sie dieselbe Effektgröße haben, aber mehr Samples erhalten, geht der p-Wert immer auf Null.

(Wenn Sie die Begriffe der geschätzten Effektgröße und des geschätzten Vertrauens näher integrieren möchten, ist es möglicherweise besser, Konfidenzintervalle zu verwenden oder Bayes'sche Techniken zu verwenden.)

Brendan OConnor
quelle
α=0,05x <- seq(0,4); y <- seq(0,4) + rnorm(5); cor.test(x,y)