Esempio di forte coefficiente di correlazione con un alto valore p


21

Mi chiedevo, è possibile avere un coefficiente di correlazione molto forte (diciamo .9 o superiore), con un valore di p elevato (diciamo .25 o superiore)?

Ecco un esempio di un basso coefficiente di correlazione, con un valore p elevato:

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

cor = 0,03908927, p = 0,6994

Alto coefficiente di correlazione, basso valore p:

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

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

Basso coefficiente di correlazione, basso valore p:

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

cor = 0.1035018, p = 2.2e-16

Alto coefficiente di correlazione, alto valore p: ???

Risposte:


36

La linea di fondo

Il coefficiente di correlazione del campione necessario per respingere l'ipotesi che il vero coefficiente di correlazione (Pearson) sia zero diventa piccolo abbastanza velocemente all'aumentare della dimensione del campione. Quindi, in generale, no, non si può avere contemporaneamente una grande (grandezza) coefficiente di correlazione e allo stesso tempo grande -valorep .

The Top Line (Dettagli)

Il test utilizzato per il coefficiente di correlazione di Pearson nella funzione è una versione leggermente modificata del metodo che discuterò di seguito.Rcor.test

Supponiamo che siano vettori casuali normali bivariati con correlazione ρ . Vogliamo testare l'ipotesi nulla che ρ = 0 contro ρ 0 . Sia r il coefficiente di correlazione del campione. Utilizzando la teoria della regressione lineare standard, non è difficile dimostrare che la statistica del test, T = r (X1,Y1),(X2,Y2),...,(Xn,Yn)ρρ=0ρ0r ha una distribuzionetn-2sotto l'ipotesi nulla. Perngrandi, la distribuzionetn-2 siavvicina allo standard normale. QuindiT2è approssimativamente distribuito al chi quadrato con un grado di libertà. (Sotto le ipotesi che abbiamo fatto,T2F1,n-2in realtà, ma l'approssimazioneχ21rende più chiaro quello che sta succedendo, penso.)

T=rn-2(1-r2)
tn-2ntn-2T2T2~F1,n-2χ12

Quindi, dove q 1 - α è ilquantile ( 1 - α ) di una distribuzione chi-quadrato con un grado di libertà.

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

Ora, nota che aumenta all'aumentare di r 2 . Riorganizzando la quantità nella dichiarazione di probabilità, abbiamo quella per tutti | r | 1r2/(1-r2)r2 otterremo un rifiuto dell'ipotesi nulla a livelloα. Chiaramente il lato destro diminuisce conn.

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

Una trama

Ecco un diagramma della regione di rifiuto di in funzione della dimensione del campione. Quindi, ad esempio, quando la dimensione del campione supera 100, la correlazione (assoluta) deve essere solo di circa 0,2 per rifiutare il valore nullo a livello α = 0,05 .|r|α=0.05

Una simulazione

Possiamo fare una semplice simulazione per generare una coppia di vettori a media zero con un coefficiente di correlazione esatto . Di seguito è riportato il codice. Da questo possiamo vedere l'output di 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)

Come richiesto nei commenti, ecco il codice per riprodurre il grafico, che può essere eseguito immediatamente seguendo il codice sopra (e utilizza alcune delle variabili ivi definite).

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()

1
Quindi - qual è la linea di fondo? Penso che tu stia dicendo che, a meno che la dimensione del campione non sia piccola, un alto valore di correlazione implica un basso valore p - ma penso che aiuterebbe a spiegarlo esplicitamente.
DW,

p

@cardinal, puoi, per favore, pubblicare il codice sorgente per il grafico che hai generato?
aL3xa,

@DW, ho tentato di rispondere alle tue preoccupazioni. Se vedi miglioramenti che possono essere fatti, per favore fatemelo sapere.
cardinale il

1
@ aL3xa: ho aggiunto il codice di stampa che ho usato. Spero che sia di aiuto.
cardinale il


11

Una stima elevata del coefficiente di correlazione con un valore p elevato potrebbe verificarsi solo con una dimensione del campione molto piccola. Stavo per fornire un'illustrazione, ma Aaron l'ha appena fatto!


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ρ^.


1

Sì. Un valore p dipende dalla dimensione del campione, quindi un piccolo campione può dare questo.

Supponiamo che la dimensione dell'effetto reale sia molto piccola e si disegna un piccolo campione. Per fortuna, ottieni alcuni punti dati con correlazione molto alta. Il valore p sarà alto, come dovrebbe essere. La correlazione è alta ma non è un risultato molto affidabile.

La correlazione del campione da R (cor) ti dirà la migliore stima della correlazione (dato il campione). Il valore p NON misura la forza della correlazione. Misura la probabilità che si sia verificata nel caso in cui non ci fosse effettivamente alcun effetto, considerando la dimensione del campione.

Un altro modo per vedere questo: se hai la stessa dimensione di effetto, ma ottieni più campioni, il valore p va sempre a zero.

(Se si desidera integrare più da vicino le nozioni di dimensione dell'effetto stimata e fiducia sulla stima, potrebbe essere meglio usare gli intervalli di confidenza; oppure, utilizzare le tecniche bayesiane.)


"piccolo campione" qui è sostanzialmente così piccolo da essere inutile, praticamente qualsiasi dimensione del campione maggiore di 4 rifiuterà il valore nullo in α=0.05le correlazioni superiore a 0,9: x <- seq(0,4); y <- seq(0,4) + rnorm(5); cor.test(x,y).
naught101
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.