【问题标题】:loop for pearson correlation in rr中的皮尔逊相关循环
【发布时间】:2018-04-13 13:00:27
【问题描述】:
res <- cor.test(my_data$G.1, my_data$G.2, method = "pearson")
if(res$estimate < 0.05) {
    my_data <- my_data[,-2]
}

如何为第一列与 R 中的其余列编写 pearson 相关性?我们编写了比较 G.1G.2 的代码。

【问题讨论】:

  • 为什么里面有一个python标签?
  • 查看 r 包 psych 。它与每个变量特征(包括测试)都有相关性。
  • 您可以使用函数cor 代替cor.test 并不仅传递向量,还传递完整的矩阵或data.frame。因此,您可以将单列作为一个参数传递,将 data.frame 的其余部分作为第二个参数传递。
  • 感谢您的回复,PoGibas。我是 R 新手。请您为您的答案编写示例 R 代码。

标签: r


【解决方案1】:

我向您发送了一个基​​本 mtcar 的示例,希望它对您有所帮助

data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]

如果您不想获得相关矩阵,而只想获得第一列而不是其余列

cor(my_data)[-1,1]
      disp         hp       drat         wt       qsec 
-0.8475514 -0.7761684  0.6811719 -0.8676594  0.4186840 

现在如果你想得到cor.test的p值,你可以创建这个循环

rho <- pval <- NULL
for(i in 2:ncol(my_data)){
   rho[i-1]  <- cor.test(my_data[,1],my_data[,i], method = "pearson")$estimate
   pval[i-1] <- cor.test(my_data[,1],my_data[,i], method = "pearson")$p.value
 }
res <- cbind(rho,pval)
rownames(res) <- paste(colnames(my_data)[1],"vs",colnames(my_data)[2:ncol(my_data)])
res
                   rho         pval
mpg vs disp -0.8475514 9.380327e-10
mpg vs hp   -0.7761684 1.787835e-07
mpg vs drat  0.6811719 1.776240e-05
mpg vs wt   -0.8676594 1.293959e-10
mpg vs qsec  0.4186840 1.708199e-02

【讨论】:

  • for(i in 2:ncol(my_data)){ rho[i-1] rownames<-(*tmp*, 值中的错误= c("X1 vs X2", "X1 vs X3", "X1 vs X4", : 'dimnames' 的长度 [1] 不等于数组范围
猜你喜欢
  • 2016-08-12
  • 2011-09-13
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 2011-08-20
  • 1970-01-01
  • 2014-11-13
相关资源
最近更新 更多