根据p值的截止值匹配相关矩阵中的信息

用户名

我已经使用Hmisc库的rcorr函数来计算相关性和p值。然后将p值提取到Pval矩阵,并将相关系数提取到corr矩阵。

Rvalue<-structure(c(1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 
1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 
1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1), .Dim = c(10L, 
10L), .Dimnames = list(c("41699", "41700", "41701", "41702", 
"41703", "41704", "41705", "41707", "41708", "41709"), c("41699", 
"41700", "41701", "41702", "41703", "41704", "41705", "41707", 
"41708", "41709")))

> Pvalue<-structure(c(NA, 0, 0, 0, 0.0258814351024321, 0, 0, 0, 0, 0, 0, 
NA, 6.70574706873595e-14, 0, 0, 2.1673942640632e-09, 1.08217552696743e-07, 
0.0105345133269157, 0, 0, 0, 6.70574706873595e-14, NA, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, NA, 2.22044604925031e-15, 0, 0, 0, 0, 
0, 0.0258814351024321, 0, 0, 2.22044604925031e-15, NA, 0, 0, 
0, 0.000322310440723728, 0.00298460759118657, 0, 2.1673942640632e-09, 
0, 0, 0, NA, 0, 0, 0, 0, 0, 1.08217552696743e-07, 0, 0, 0, 0, 
NA, 0, 0, 0, 0, 0.0105345133269157, 0, 0, 0, 0, 0, NA, 0, 0, 
0, 0, 0, 0, 0.000322310440723728, 0, 0, 0, NA, 0, 0, 0, 0, 0, 
0.00298460759118657, 0, 0, 0, 0, NA), .Dim = c(10L, 10L), .Dimnames = list(
c("41699", "41700", "41701", "41702", "41703", "41704", "41705", 
"41707", "41708", "41709"), c("41699", "41700", "41701", 
"41702", "41703", "41704", "41705", "41707", "41708", "41709"
)))

然后,我将corr矩阵转换为布尔矩阵(0,1),该数字表示良好的相关性。然后我要对具有重要p值的良好相关性进行数学运算。我需要一个包含p值的边列表。我实现了以下代码:

n=1
m=list()
for(i in 1:nrow(Rvalue))
  {
  for (j in 1:nrow(Rvalue))
    {
if (i<j & Pvalue[i,j]<0.05 & Rvalue[i,j]==1)
      {
      m[[n]]<-c(rownames(Rvalue)[i], colnames(Rvalue)[j], signif(Pvalue[i,j], digits = 4))
        n=n+1  
             }
      }
      print(i)
  }

然后,输出为:

> m
[[1]]
[1] "41699" "41700" "0"    

[[2]]
[2] "41699" "41701" "0"    

[[3]]
[3] "41699" "41702" "0"    

[[4]]
[4] "41699" "41704" "0" 
...

结果还可以,但是由于矩阵很大,因此需要很多时间。如何加快此过程?请注意,我需要节点名称有相关功能吗?我也找到了两个类似的问题,但并不是我真正需要的(++)。提前致谢。

阿克伦

你可以试试

indx <- which(Rvalue==1 & Pvalue < 0.05 & !is.na(Pvalue), arr.ind=TRUE)
d1 <- data.frame(rN=row.names(Rvalue)[indx[,1]], 
               cN=colnames(Rvalue)[indx[,2]], Pval=signif(Pvalue[indx],
                                                                digits=4))

head(d1,2)
#     rN    cN Pval
#1 41700 41699    0
#2 41701 41699    0

更新

不知道same更改时为什么会得到结果cutoff有可能的是,P values可能是太小了,这将是TRUEcutoffs你尝试。这是一个示例,表明它确实返回了不同的值。假设我从上面的代码创建了一个函数,

 f1 <- function(Rmat, Pmat, cutoff){
   indx <- which(Rmat==1 & Pmat < cutoff & !is.na(Pmat), arr.ind=TRUE)
    d1 <- data.frame(rN=row.names(Rmat)[indx[,1]], 
              cN=colnames(Rmat)[indx[,2]], Pval=signif(Pmat[indx],
                                                            digits=4))
 d1}

 f1(R1, P1, 0.05)
 #  rN cN  Pval
 #1  B  A 0.021
 #2  C  A 0.018
 #3  D  A 0.001
 #4  A  B 0.021
 #5  A  C 0.018
 #6  E  C 0.034
 #7  A  D 0.001
 #8  C  E 0.034

 f1(R1, P1, 0.01)
 #  rN cN  Pval
 #1  D  A 0.001
 #2  A  D 0.001

 f1(R1, P1, 0.001)
 #[1] rN   cN   Pval
 #<0 rows> (or 0-length row.names)

数据

set.seed(24)
R1 <- matrix(sample(c(0,1), 5*5, replace=TRUE), 5,5, 
            dimnames=list(LETTERS[1:5], LETTERS[1:5]))
R1[lower.tri(R1)] <- 0
R1 <- R1+t(R1)
diag(R1) <- 1


set.seed(49)
P1 <- matrix(sample(seq(0,0.07, by=0.001), 5*5, replace=TRUE), 5, 5,
       dimnames=list(LETTERS[1:5], LETTERS[1:5]))

P1[lower.tri(P1)] <- 0
P1 <- P1+t(P1)
diag(P1) <- NA

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到R中相关矩阵的p值?

来自分类Dev

如何从dunns测试的输出创建p值的相关矩阵?

来自分类Dev

通过p值对相关矩阵进行阈值处理

来自分类Dev

从R中的相关矩阵返回值

来自分类Dev

从相关矩阵值中查找行/列名称

来自分类Dev

相关矩阵和p值按列和行组合在一个矩阵中

来自分类Dev

两个 Pandas 数据框的相关矩阵,具有 P 值

来自分类Dev

rcorr 在 cor 完美工作的地方给出错误(需要相关矩阵的 p 值)

来自分类Dev

如何有效地获取具有NaN值的数据帧的相关矩阵(具有p值)?

来自分类Dev

如何有效地获取具有NaN值的数据帧的相关矩阵(具有p值)?

来自分类Dev

相关矩阵:提取具有高R值的变量

来自分类Dev

如何在相关矩阵中找到高值?

来自分类Dev

创建具有不同相关值的大型相关矩阵

来自分类Dev

创建具有不同相关值的大型相关矩阵

来自分类Dev

去除相关矩阵中的NA

来自分类Dev

在R中创建相关矩阵

来自分类Dev

去除相关矩阵中的NA

来自分类Dev

分组相关矩阵

来自分类Dev

分组相关矩阵

来自分类Dev

熊猫:如何从相关矩阵中删除自相关

来自分类Dev

如何从R中的glm模型中检索相关矩阵

来自分类Dev

在R中的相关矩阵上应用阈值

来自分类Dev

在Matlab中互相关矩阵的每对列

来自分类Dev

文本文件中的相关矩阵

来自分类Dev

在python中可视化巨大的相关矩阵

来自分类Dev

如何使用相关矩阵作为R中princomp()的输入

来自分类Dev

用时间序列估计R中的相关矩阵?

来自分类Dev

将相关矩阵转换为 R 中的数据帧

来自分类Dev

重塑熊猫相关矩阵