如何从R的cor()相关分析中计算P值和标准误差

nev*_*int 14 r correlation

我的数据包含每个条件(x和y)的54个样本.我通过以下方式计算了相关性:

> dat <- read.table("http://dpaste.com/1064360/plain/",header=TRUE)
> cor(dat$x,dat$y)
[1] 0.2870823
Run Code Online (Sandbox Code Playgroud)

是否存在一种本地方法来生成上述R的cor()函数中的相关性SE和来自T检验的p值?

如本网站所述(第14.6页)

A5C*_*2T1 22

我认为你正在寻找的只是cor.test()函数,它将返回你正在寻找的所有东西,除了相关的标准误差.但是,正如您所看到的,其公式非常简单,如果您使用cor.test,则可以获得计算所需的所有输入.

使用示例中的数据(因此您可以将自己与第14.6页的结果进行比较):

> cor.test(mydf$X, mydf$Y)

    Pearson's product-moment correlation

data:  mydf$X and mydf$Y
t = -5.0867, df = 10, p-value = 0.0004731
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9568189 -0.5371871
sample estimates:
       cor 
-0.8492663 
Run Code Online (Sandbox Code Playgroud)

如果您愿意,还可以创建如下所示的函数以包含相关系数的标准误差.

为方便起见,这里是等式:

在此输入图像描述

r =相关估计和n - 2 =自由度,这两者在上面的输出中都很容易获得.因此,一个简单的功能可能是:

cor.test.plus <- function(x) {
  list(x, 
       Standard.Error = unname(sqrt((1 - x$estimate^2)/x$parameter)))
}
Run Code Online (Sandbox Code Playgroud)

并使用如下:

cor.test.plus(cor.test(mydf$X, mydf$Y))
Run Code Online (Sandbox Code Playgroud)

这里,"mydf"定义为:

mydf <- structure(list(Neighborhood = c("Fair Oaks", "Strandwood", "Walnut Acres",
  "Discov. Bay", "Belshaw", "Kennedy", "Cassell", "Miner", "Sedgewick", 
  "Sakamoto", "Toyon", "Lietz"), X = c(50L, 11L, 2L, 19L, 26L, 
  73L, 81L, 51L, 11L, 2L, 19L, 25L), Y = c(22.1, 35.9, 57.9, 22.2, 
  42.4, 5.8, 3.6, 21.4, 55.2, 33.3, 32.4, 38.4)), .Names = c("Neighborhood", 
  "X", "Y"), class = "data.frame", row.names = c(NA, -12L))
Run Code Online (Sandbox Code Playgroud)

  • 该等式所需的引文不是(1 - r ^ 2)/ sqrt(自由度)吗?https://www.jstor.org/stable/2277400?seq=1#page_scan_tab_contents或https://www.tandfonline.com/doi/abs/10.1080/00220973.1956.11010555?journalCode=vjxe20 (2认同)