底线
随着样本量的增加,拒绝真实(皮尔逊)相关系数为零的假设所需的样本相关系数变得非常小。因此,总的来说,不,您不能同时具有较大的(相关性)相关系数和较大的值p。
顶线 (详细信息)
函数中用于Pearson相关系数的检验是我下面讨论的方法的非常细微修改的版本。Rcor.test
假设是具有相关性ρ的同构双变量正态随机向量。我们要检验ρ = 0相对于ρ ≠ 0的零假设。令r为样本相关系数。使用标准线性回归理论,这是不难证明检验统计量,
Ť = - [R √(X1,Y1),(X2,Y2),…,(Xn,Yn)ρρ=0ρ≠0r在原假设下
具有tn-2分布。对于大n,tn-2分布接近标准正态。因此,T2近似为具有一个自由度的卡方分布。(根据假设,我们已经取得了,牛逼2〜˚F1,ñ-2在现实中,但χ21近似使得清晰的是怎么回事,我想。)
T=rn−2−−−−−√(1−r2)−−−−−−√
tn−2ntn−2T2T2∼F1,n−2χ21
因此,
其中 q 1 - α是(1 - α
P(r21−r2(n−2)≥q1−α)≈α,
q1−α具有一个自由度的卡方分布
)分位数。
(1−α)
现在,注意随着r 2的增加而增加。在概率陈述中重新排列数量,我们所有
| r | ≥ 1r2/(1−r2)r2
我们将拒绝水平α的原假设。显然,右侧随n减小。
|r|≥11+(n−2)/q1−α−−−−−−−−−−−−−√
αn
剧情
这是的拒绝区域的图。r | 作为样本量的函数。因此,例如,当样本大小超过100时,(绝对)相关仅需要大约0.2即可拒绝α = 0.05级别的零值。|r|α=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()