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, Y1) , ( X2, Y2) , … , ( Xn, Yn)ρρ = 0ρ ≠ 0r tn-2ntn-2T2T2≤F1,n-2≤21
T= r n - 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.)
T2∼ F1 , n - 2χ21
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()