A linha inferior
O coeficiente de correlação da amostra necessário para rejeitar a hipótese de que o coeficiente de correlação verdadeiro (Pearson) é zero se torna pequeno rapidamente, à medida que o tamanho da amostra aumenta. Portanto, em geral, não, você não pode ter simultaneamente um grande coeficiente de correlação (em magnitude) e um valor- simultaneamente grandep .
The Top Line (Detalhes)
O teste usado para o coeficiente de correlação de Pearson na função é uma versão ligeiramente modificada do método que discuto abaixo.Rcor.test
Suponha que sejam vetores aleatórios normais bivariados com sua correlação . Queremos testar a hipótese nula de que versus . Seja o coeficiente de correlação da amostra. Usando a teoria de regressão linear padrão, não é difícil mostrar que a estatística de teste,
possui distribuição sob a hipótese nula. Para grande , a distribuição aproxima do normal padrão. Portanto,ρ ρ = 0 ρ ≠ 0 r T = r √( X1, Y1) , ( X2, Y2) , … , ( Xn, Yn)ρρ = 0p ≠ 0r tn-2ntn-2T2T2∼F1,n-2χ21
T= r n - 2-----√( 1 - r2)------√
tn - 2ntn - 2T2é aproximadamente qui-quadrado distribuído com um grau de liberdade. (De acordo com as premissas que fizemos, na realidade, mas a aproximação torna mais claro o que está acontecendo, eu acho.)
T2∼ F1 , n - 2χ21
Então,
onde é o quantil de uma distribuição qui-quadrado com um grau de liberdade.q 1 - α ( 1 - α )
P ( r21 - r2( n - 2 ) ≥ q1 - α) ≈α,
q1 - α( 1 - α )
Agora, observe que está aumentando à medida que aumenta. Reorganizando a quantidade na declaração de probabilidade, temos isso para todos
receberemos uma rejeição da hipótese nula no nível . Claramente, o lado direito diminui com .r 2 | r | ≥ 1r2/ (1- r2)r2 αn
| r | ≥ 11 + ( n - 2 ) / q1 - α-------------√
αn
O enredo
Aqui está um gráfico da região de rejeição deem função do tamanho da amostra. Portanto, por exemplo, quando o tamanho da amostra excede 100, a correlação (absoluta) precisa ser apenas cerca de 0,2 para rejeitar o nulo no nível .α = 0,05| r |α = 0,05
Uma simulação
Podemos fazer uma simulação simples para gerar um par de vetores com média zero com um coeficiente de correlação exato . Abaixo está o código. A partir disso, podemos olhar para a saída 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)
Conforme solicitado nos comentários, eis o código para reproduzir o gráfico, que pode ser executado imediatamente após o código acima (e usa algumas das variáveis definidas aqui).
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()