Суть
Коэффициент корреляции выборки, необходимый для того, чтобы опровергнуть гипотезу о том, что истинный коэффициент корреляции (Пирсона) равен нулю, становится достаточно малым по мере увеличения размера выборки. Так что, в общем, нет, вы не можете одновременно иметь большой (по величине) коэффициент корреляции и одновременно большое значениеp .
Верхняя линия (детали)
Тест, используемый для коэффициента корреляции Пирсона в функции, является очень немного измененной версией метода, который я обсуждаю ниже.Rcor.test
Предположим, что являются двумерными нормальными случайными векторами с корреляцией ρ . Мы хотим проверить нулевую гипотезу, что ρ = 0 против ρ ≠ 0 . Пусть r - выборочный коэффициент корреляции. Используя стандартную теорию линейной регрессии, нетрудно показать, что тестовая статистика,
T = r √(X1,Y1),(X2,Y2),…,(Xn,Yn)ρρ=0ρ≠0r
имеетраспределениеtn-2при нулевой гипотезе. Для большогоп, тотп-2распределения приближается к стандартному нормальному. Следовательно,Т2приблизительно хи-квадрат распределен с одной степенью свободы. (В предположениях мы сделали,T2~F1,п-2в действительности, ноχ21приближение делает более яснымчто происходит, я думаю.)
T=rn−2−−−−−√(1−r2)−−−−−−√
tn−2ntn−2T2T2∼F1,n−2χ21
Итак,
Где Q 1 - α является ( 1 - α ) квантиль распределения хи-квадрат с одной степенью свободы.
P ( r21 - р2( n - 2 ) ≥ q1 - α) ≈α,
Q1 - α( 1 - α )
Теперь обратите внимание, что увеличивается с увеличением r 2 . Переставляя количество в утверждении вероятности, мы имеем это для всех
| г | ≥ 1р2/ (1- р2)р2
мы получим отказ от нулевой гипотезы на уровнеα. Очевидно, что правая часть уменьшается сn.
| г | ≥ 11 + ( n - 2 ) / q1 - α-------------√
αN
Участок
Вот график области отклонения как функция размера выборки. Так, например, когда размер выборки превышает 100, (абсолютная) корреляция должна быть только около 0,2, чтобы отклонить ноль на уровне α = 0,05 .| г |α = 0,05
Симуляция
Мы можем выполнить простое моделирование для генерации пары векторов с нулевым средним с точным коэффициентом корреляции. Ниже приведен код. Из этого мы можем посмотреть на вывод 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)
Как и было запрошено в комментариях, здесь приведен код для воспроизведения графика, который можно запустить сразу же после кода выше (и использовать некоторые из указанных здесь переменных).
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()