对相关表(Pairwise Correlation Table)

2019-08-03 00:39发布

我是新来的R,所以我道歉,如果这是一个简单的问题,但是我已经做了搜索这个晚上颇有几分似乎无法弄清楚。 我有与变量整体转换的数据帧,以及我想要做的就是创建的这些子集之间的相关性的表,在Stata“pwcorr”,或“关联”的基本相当于SPSS。 的一个关键就在这是,不仅做我想做的R,但我也想与该值相关联的意义。

有任何想法吗? 这似乎是它应该是很简单,但我似乎无法想出一个好办法。

Answer 1:

比尔·维纳布尔斯提供了这种解决方案这个答案从与我做了一些细微的修改将R邮件列表:

cor.prob <- function(X, dfr = nrow(X) - 2) {
  R <- cor(X)
  above <- row(R) < col(R)
  r2 <- R[above]^2
  Fstat <- r2 * dfr / (1 - r2)
  R[above] <- 1 - pf(Fstat, 1, dfr)

  cor.mat <- t(R)
  cor.mat[upper.tri(cor.mat)] <- NA
  cor.mat
}

因此,让我们测试一下:

set.seed(123)
data <- matrix(rnorm(100), 20, 5)
cor.prob(data)

          [,1]      [,2]      [,3]      [,4] [,5]
[1,] 1.0000000        NA        NA        NA   NA
[2,] 0.7005361 1.0000000        NA        NA   NA
[3,] 0.5990483 0.6816955 1.0000000        NA   NA
[4,] 0.6098357 0.3287116 0.5325167 1.0000000   NA
[5,] 0.3364028 0.1121927 0.1329906 0.5962835    1

是否与cor.test该行吗?

cor.test(data[,2], data[,3])

 Pearson's product-moment correlation
data:  data[, 2] and data[, 3] 
t = 0.4169, df = 18, p-value = 0.6817
alternative hypothesis: true correlation is not equal to 0 
95 percent confidence interval:
 -0.3603246  0.5178982 
sample estimates:
       cor 
0.09778865 

似乎工作正常。



Answer 2:

这里是什么,我只是做了,我无意中发现这个职位,因为我一直在寻找一种方式,采取每对变量,并得到一个整齐NX3数据帧。 第1列是一个变量,第2列是一个变量,且将列3和图4是其绝对值和真正的相关。 只要传递函数数字和整数值的数据帧。

  pairwiseCor <- function(dataframe){
  pairs <- combn(names(dataframe), 2, simplify=FALSE)
  df <- data.frame(Vairable1=rep(0,length(pairs)), Variable2=rep(0,length(pairs)), 
                   AbsCor=rep(0,length(pairs)), Cor=rep(0,length(pairs)))
  for(i in 1:length(pairs)){
    df[i,1] <- pairs[[i]][1]
    df[i,2] <- pairs[[i]][2]
    df[i,3] <- round(abs(cor(dataframe[,pairs[[i]][1]], dataframe[,pairs[[i]][2]])),4)
    df[i,4] <- round(cor(dataframe[,pairs[[i]][1]], dataframe[,pairs[[i]][2]]),4)
  }
  pairwiseCorDF <- df
  pairwiseCorDF <- pairwiseCorDF[order(pairwiseCorDF$AbsCor, decreasing=TRUE),]
  row.names(pairwiseCorDF) <- 1:length(pairs)
  pairwiseCorDF <<- pairwiseCorDF
  pairwiseCorDF
  }

这是输出是什么:

 > head(pairwiseCorDF)
             Vairable1        Variable2 AbsCor     Cor
    1        roll_belt     accel_belt_z 0.9920 -0.9920
    2 gyros_dumbbell_x gyros_dumbbell_z 0.9839 -0.9839
    3        roll_belt total_accel_belt 0.9811  0.9811
    4 total_accel_belt     accel_belt_z 0.9752 -0.9752
    5       pitch_belt     accel_belt_x 0.9658 -0.9658
    6 gyros_dumbbell_z  gyros_forearm_z 0.9491  0.9491


Answer 3:

我发现,将R包激情似火做了很好的工作处理,你有问题。 您可以轻松地将数据集传送到cor.table功能,并得到相关性和p值的表为所有的变量。 您可以指定皮尔森在功能R或斯皮尔曼。 请参阅此链接帮助: http://www.inside-r.org/packages/cran/picante/docs/cor.table

还记得,去掉你的数据集的任何非数字列运行函数之前。 下面是代码的示例片:

install.packages("picante")
library(picante)
#Insert the name of your dataset in the code below
cor.table(dataset, cor.method="pearson")


Answer 4:

您可以使用sjt.corr的功能sjPlot包 ,它给你一个很好的格式化相关表,就可以使用您的Office应用程序。

最简单的函数调用只是通过数据帧:

sjt.corr(df)

见这里的例子 。



Answer 5:

除了大cor.prob()的Funktion 塞巴斯蒂安-C援引上述,我需要一个破折号,使用此代码来完成,以取代自相关:

cor.tbl <- round(cor.prob(data), 3)
cor.tbl[cor.tbl == 1] <- "-"


文章来源: Pairwise Correlation Table