如何从 r 和 n 反算 P 值
How to backcalculate P value from r and n
所以我有一些相关性的 r 和 n 值。我想反算 p 值。我知道网上有大量计算器可以轻松完成此操作,但我正在寻找一种在 R 中完成此操作的方法。
想要获得给定 r 和 n 的 p 值以进行简单相关。
- 输入
r = -0.088227
,n = 237
- 输出
p = 0.175832
我猜相关性是指 Pearson 积矩相关性。如果是这样,您可以为此编写一个函数
rn_to_p <- function(rval, n){
# calculate r to t
tval <- rval/(sqrt((1-rval**2)/(n-2)))
# look up p value for t
pval <- 2*pt(abs(tval), n-2, lower=FALSE)
return(pval)}
这是一个例子
# make it reproducible
set.seed(1)
# generate data
df <- data.frame(matrix(rnorm(200), ncol= 2))
# apply the function
rn_to_p(rval=cor.test(df$X1, df$X2)$estimate, n= nrow(df))
# 0.9921663
# see results of cor.test
cor.test(df$X1, df$X2)
# ... p-value = 0.9922 ...
举个例子...
> rn_to_p(-0.088227, n = 237)
[1] 0.1758329
可以找到将皮尔逊系数 r 转换为 t 值的公式 here,例如。
所以我有一些相关性的 r 和 n 值。我想反算 p 值。我知道网上有大量计算器可以轻松完成此操作,但我正在寻找一种在 R 中完成此操作的方法。
想要获得给定 r 和 n 的 p 值以进行简单相关。
- 输入
r = -0.088227
,n = 237
- 输出
p = 0.175832
我猜相关性是指 Pearson 积矩相关性。如果是这样,您可以为此编写一个函数
rn_to_p <- function(rval, n){
# calculate r to t
tval <- rval/(sqrt((1-rval**2)/(n-2)))
# look up p value for t
pval <- 2*pt(abs(tval), n-2, lower=FALSE)
return(pval)}
这是一个例子
# make it reproducible
set.seed(1)
# generate data
df <- data.frame(matrix(rnorm(200), ncol= 2))
# apply the function
rn_to_p(rval=cor.test(df$X1, df$X2)$estimate, n= nrow(df))
# 0.9921663
# see results of cor.test
cor.test(df$X1, df$X2)
# ... p-value = 0.9922 ...
举个例子...
> rn_to_p(-0.088227, n = 237)
[1] 0.1758329
可以找到将皮尔逊系数 r 转换为 t 值的公式 here,例如。