The Bottom Line
Le coefficient de corrélation de l'échantillon nécessaire pour rejeter l'hypothèse selon laquelle le véritable coefficient de corrélation (Pearson) est nul devient petit assez rapidement à mesure que la taille de l'échantillon augmente. Donc, en général, non, vous ne pouvez pas avoir en même temps un grand (en amplitude) coefficient de corrélation et simultanément grande -valuep .
The Top Line (Détails)
Le test utilisé pour le coefficient de corrélation de Pearson dans la fonction est une version très légèrement modifiée de la méthode décrite ci-dessous.Rcor.test
Supposons que sont des vecteurs aléatoires normaux bivariés iid avec corrélation ρ . Nous voulons tester l'hypothèse nulle que ρ = 0 contre ρ ≠ 0 . Soit r le coefficient de corrélation de l'échantillon. En utilisant la théorie standard de régression linéaire, il n'est pas difficile de montrer que la statistique de test,
T = r √(X1,Y1),(X2,Y2),…,(Xn,Yn)ρρ=0ρ≠0r
a unedistributiontn-2sous l'hypothèse nulle. Pour les grandsn, ladistributiontn-2s'approche de la normale standard. Par conséquent,T2est approximativement khi carré distribué avec un degré de liberté. (Selon les hypothèses que nous avons faites,T2∼F1,n-2en réalité, mais l'approximationχ21rend plus clair ce qui se passe, je pense.)
T=rn−2−−−−−√(1−r2)−−−−−−√
tn−2ntn−2T2T2∼F1,n−2χ21
Donc,
où q 1 - α est lequantile ( 1 - α ) d'une distribution chi carré avec un degré de liberté.
P(r21−r2(n−2)≥q1−α)≈α,
q1 - α( 1 - α )
Maintenant, notez que augmente à mesure que r 2 augmente. Réorganiser la quantité dans l'énoncé de probabilité, nous avons cela pour tous
| r | ≥ 1r2/ (1- r2)r2
nous obtiendrons un rejet de l'hypothèse nulle au niveauα. Clairement, le côté droit diminue avecn.
| r | ≥ 11 + ( n - 2 ) / q1 - α-------------√
αn
Un terrain
Voici un tracé de la région de rejet de en fonction de la taille de l'échantillon. Ainsi, par exemple, lorsque la taille de l'échantillon dépasse 100, la corrélation (absolue) ne doit être que d'environ 0,2 pour rejeter le zéro au niveau α = 0,05 .|r|α=0.05
Une simulation
Nous pouvons faire une simulation simple pour générer une paire de vecteurs à moyenne nulle avec un coefficient de corrélation exact . Voici le code. De cela, nous pouvons regarder la sortie de 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)
Comme demandé dans les commentaires, voici le code pour reproduire le tracé, qui peut être exécuté immédiatement après le code ci-dessus (et utilise certaines des variables définies ici).
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()