Exemplo de forte coeficiente de correlação com alto valor de p

21

Eu queria saber, é possível ter um coeficiente de correlação muito forte (digamos 0,9 ou superior), com um valor de p alto (digamos 0,25 ou mais)?

Aqui está um exemplo de um baixo coeficiente de correlação, com um alto valor de p:

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

cor = 0,03908927, p = 0,6994

Alto coeficiente de correlação, baixo valor de p:

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

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

Baixo coeficiente de correlação, baixo valor de p:

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

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

Alto coeficiente de correlação, alto valor de p: ???

Zach
fonte

Respostas:

36

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)ρρ=0ρ0r tn-2ntn-2T2T2F1,n-2χ21

T=rn2(1r2)
tn2ntn2T2é 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.)T2F1,n2χ12

Então, onde é o quantil de uma distribuição qui-quadrado com um grau de liberdade.q 1 - α ( 1 - α )

P(r21r2(n2)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/(1r2)r2 αn

|r|11+(n2)/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()
cardeal
fonte
1
Então - qual é o resultado final? Acho que você está dizendo que, a menos que o tamanho da amostra seja pequeno, um alto valor de correlação implica um valor p baixo - mas acho que ajudaria a explicitar isso explicitamente.
DW
@ DW: Muito obrigado pelos seus comentários! Eu esperava que a linha de fundo estivesse clara na imagem e a equação de exibição mostrando que a correlação ao quadrado necessária para manter qualquer valor fixo estava diminuindo monotonicamente em função do tamanho da amostra. Vou descobrir como fazer uma declaração mais explícita para esse efeito e colocá-la em um local apropriado. Obrigado, novamente pelo feedback construtivo. p
cardinal
@ cardinal, você pode postar o código fonte do gráfico que você gerou?
aL3xa
@DW, fiz uma tentativa de abordar suas preocupações. Se vir melhorias que podem ser feitas, entre em contato.
cardeal
1
@ aL3xa: adicionei o código de plotagem que usei. Espero que isto ajude.
cardeal
17
cor.test(c(1,2,3),c(1,2,2))

cor = 0,866, p = 0,333

Aaron - Restabelecer Monica
fonte
6
@Zach: Fique à vontade para reconsiderar seu cheque agora que o cardeal e o pobre gastaram tempo para dar respostas completas.
Aaron - Restabelece Monica
11

Uma estimativa alta do coeficiente de correlação com um alto valor de p só poderia ocorrer com um tamanho de amostra muito pequeno. Eu estava prestes a fornecer uma ilustração, mas Aaron acabou de fazer isso!

uma parada
fonte
9

Acredito que, pela transformação Fisher RZ , o arcano hiperbólico da correlação da amostra, sob o nulo, é aproximadamente normal com zero médio e erro padrão . Portanto, para obter, por exemplo, uma amostra de correlação com um valor p fixo, , você precisaria de que é o CDF do padrão normal e você está executando um teste de dois lados para o nulo .ρ >0pp=2-2Φ ( atanh( ρ )1/n3ρ^>0pΦH0:ρ=0

p=22Φ(atanh(ρ^)n3),
ΦH0:ρ=0

Você pode transformar isso em uma função que fornece o necessário para um fixo e . Em R:ρ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
 }

A execução deste para e dá:p=0,2ρ^=0.5p=0.2

print(n.size(0.5,0.2))

[1] 8,443062

Portanto, seu tamanho de amostra deve ser em torno de 8. Brincar com esta função deve fornecer uma idéia da relação entre e .ρn,pρ^

shabbychef
fonte
1

Sim. Um valor p depende do tamanho da amostra, portanto, uma amostra pequena pode fornecer isso.

Digamos que o tamanho real do efeito foi muito pequeno e você desenhou uma pequena amostra. Por sorte, você obtém alguns pontos de dados com correlação muito alta. O valor p será alto, como deveria ser. A correlação é alta, mas não é um resultado muito confiável.

A correlação da amostra de R () mostrará a melhor estimativa da correlação (dada a amostra). O valor p NÃO mede a força da correlação. Ele mede a probabilidade de surgir caso não houvesse efeito, considerando o tamanho da amostra.

Outra maneira de ver isso: se você tem o mesmo tamanho de efeito, mas obtém mais amostras, o valor p sempre é zero.

(Se você deseja integrar mais de perto as noções de tamanho de efeito estimado e confiança sobre a estimativa, pode ser melhor usar intervalos de confiança; ou, usar técnicas bayesianas.)

Brendan OConnor
fonte
"pequena amostra" aqui é basicamente tão pequeno como para ser inútil, basicamente, qualquer amostra de maior tamanho do que 4 rejeitará o nulo em para as correlações maiores do que 0,9: . α=0.05x <- seq(0,4); y <- seq(0,4) + rnorm(5); cor.test(x,y)
Naught101