使用R中的函数计算皮尔逊相关性cor.test(),我发现p值不一定对应CI:
# reproducible example
# generate the data
set.seed(123)
N <- 200
X <- rnorm(N)
a <- 0.2
b <- 0.8
sigma <- 4
eps <- rnorm(N, 0, sigma)
Y <- a + b * X + eps
Y[1] <- 23.70932 # change a bit
cor.test(X, Y)
结果 CI 表示相关性是显着的,而 p 值则相反:
t = 1.9717, df = 198, p-value = 0.05004
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.00002440203 0.27226422569
sample estimates:
cor
0.1387649
差异很小,但仍然很大,可以解释为数值误差。此检验确实会产生 CI 水平为 0.95 的双尾检验(对于 CI 和 p 值)。对应的单尾测试是这样的:
Y[1] <- 37.692
cor.test(X, Y, alternative = "greater")
有类似的问题。我尝试使用参数exact = TRUE,但这与皮尔逊相关系数的默认计算无关。
那么,这只是一个很大的不精确(可能是一个错误,因为 cor.test 函数不提供任何容差/epsilon 参数,它可能应该用这个相当大的不精确来指定?)。不精确是否是由于不使用皮尔逊系数的精确分布而导致的,而只是一些近似值,在计算 CI 和 p 值时会产生略微不同的结果?还是有其他一些主要问题?