Przykład silnego współczynnika korelacji o wysokiej wartości p


21

Zastanawiałem się, czy można mieć bardzo silny współczynnik korelacji (powiedzmy .9 lub wyższy), z wysoką wartością p (powiedzmy .25 lub wyższy)?

Oto przykład niskiego współczynnika korelacji o wysokiej wartości p:

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

cor = 0,03908927, p = 0,6994

Wysoki współczynnik korelacji, niska wartość p:

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

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

Niski współczynnik korelacji, niska wartość p:

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

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

Wysoki współczynnik korelacji, wysoka wartość p: ???

Odpowiedzi:


36

Dolna linia

Współczynnik korelacji próbki potrzebny do odrzucenia hipotezy, że rzeczywisty (Pearsona) współczynnik korelacji wynosi zero, staje się niewielki dość szybko wraz ze wzrostem wielkości próby. Tak w ogóle, nie, nie można równocześnie mieć duży (co do wielkości) Współczynnik korelacji i jednocześnie dużą -valuep .

The Top Line (Szczegóły)

Test zastosowany dla współczynnika korelacji Pearsona w funkcji jest bardzo nieznacznie zmodyfikowaną wersją metody, którą omawiam poniżej.Rcor.test

Załóżmy, że są to dwuwymiarowe normalne losowe wektory z korelacją ρ . Chcemy przetestować hipotezę zerową, że ρ = 0 w porównaniu z ρ ≠ 0 . Niech r będzie współczynnikiem korelacji próbki. Stosując standardową teorię regresji liniowej, nietrudno wykazać, że statystyka testowa, T = r √(X1,Y1),(X2,Y2),…,(Xn,Yn)ρρ=0ρ≠0r marozkładtn-2pod hipotezą zerową. W przypadku dużychnThetn-2Rozkład zbliża rozkładu normalnego. StądT2jest w przybliżeniu chi-kwadrat rozmieszczone o jednym stopniu swobody. (Przy przyjętych przez nas założeniachT2∼F1,n-2w rzeczywistości, aleprzybliżenieχ21wyjaśnia, co się dzieje, jak sądzę.)

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

Tak więc gdzie q 1 - α jestkwantylem ( 1 - α ) rozkładu chi-kwadrat o jednym stopniu swobody.

P(r21−r2(n−2)≥q1−α)≈α,
q1−α(1−α)

Teraz zauważ, że rośnie wraz ze wzrostem r 2 . Zmieniając liczbę w rachunku prawdopodobieństwa, mamy to dla wszystkich | r | ≥ 1r2/(1−r2)r2 otrzymamy odrzucenie hipotezy zerowej na poziomieα. Najwyraźniej prawa strona maleje zn.

|r|≥11+(n−2)/q1−α
αn

Fabuła

Oto wykres regionu odrzucenia jako funkcja wielkości próby. Na przykład, gdy wielkość próbki przekracza 100, (absolutna) korelacja musi wynosić tylko około 0,2, aby odrzucić wartość zerową na poziomie α = 0,05 .|r|α=0.05

Symulacja

Możemy wykonać prostą symulację, aby wygenerować parę wektorów o zerowej średniej z dokładnym współczynnikiem korelacji. Poniżej znajduje się kod. Z tego możemy przyjrzeć się wynikowi 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)

Zgodnie z żądaniem w komentarzach, oto kod do odtworzenia wykresu, który można uruchomić natychmiast po powyższym kodzie (i wykorzystuje niektóre zmienne tam zdefiniowane).

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
Więc - jaki jest wynik końcowy? Myślę, że mówisz, że jeśli wielkość próby nie jest mała, wysoka wartość korelacji implikuje niską wartość p - ale myślę, że pomogłoby to wyraźnie to przeliterować.
— DW

p

@cardinal, czy możesz opublikować kod źródłowy wygenerowanego wykresu?
— aL3xa

@DW, podjąłem próbę rozwiązania twoich problemów. Jeśli zauważysz ulepszenia, które można wprowadzić, daj mi znać.
— kardynał

1
@ aL3xa: Dodałem kod wydruku, którego użyłem. Mam nadzieję że to pomoże.
— kardynał


11

Wysokie oszacowanie współczynnika korelacji przy wysokiej wartości p może wystąpić tylko przy bardzo małej wielkości próby. Chciałem przedstawić ilustrację, ale właśnie to zrobił Aaron!


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

Tak. Wartość p zależy od wielkości próbki, więc mała próbka może to dać.

Powiedzmy, że prawdziwy rozmiar efektu był bardzo mały, a ty narysujesz małą próbkę. Na szczęście dostajesz kilka punktów danych o bardzo wysokiej korelacji. Wartość p będzie odpowiednio wysoka. Korelacja jest wysoka, ale nie jest to wynik bardzo niezawodny.

Przykładowa korelacja z cor's R () powie ci najlepsze oszacowanie korelacji (biorąc pod uwagę próbkę). Wartość p NIE mierzy siły korelacji. Mierzy prawdopodobieństwo, że mogło powstać w przypadku, gdy faktycznie nie wystąpił żaden efekt, biorąc pod uwagę wielkość próbki.

Inny sposób na zobaczenie tego: jeśli masz ten sam rozmiar efektu, ale otrzymujesz więcej próbek, wartość p zawsze spada do zera.

(Jeśli chcesz ściślej zintegrować pojęcia szacowanej wielkości efektu i pewności co do oszacowania, lepiej zastosować przedziały ufności; lub zastosować techniki bayesowskie.)


„mała próbka” tutaj jest w zasadzie tak mała, że ​​jest bezcelowa, w zasadzie każda próbka większa niż 4 odrzuci zero α=0,05korelacji większy od 0,9: x <- seq(0,4); y <- seq(0,4) + rnorm(5); cor.test(x,y).
— naught101
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.