【问题标题】:igraph (R) How to create correlation network with only strong r valuesigraph (R) 如何创建仅具有强 r 值的相关网络
【发布时间】:2013-11-26 18:02:48
【问题描述】:

我试图弄清楚如何使用 graph.adjacency 来创建一个使用相关矩阵(值 -1 到 1)的图形,但只有图形文件中包含最强烈相关的边,即 .8

这是成功为我提供完整数据集的网络的代码:

corrdata<-read.csv("spearmancorr.csv",header=FALSE)
cor_mat<-as.matrix(corrdata)
diag(cor_mat)<-0
graph<-graph.adjacency(cor_mat,weighted=TRUE,mode="lower")

我尝试使用 delete.edges 将网络减少到至少 >.8 以进行测试,但生成的文件仍然显示边缘权重低于 0.8

graph.copy <- delete.edges(graph, which(E(graph)$weight !<0.8)-1)
write.graph(graph.copy, file="gsig80.graphml", format="graphml")

关于如何获取我想要的图形文件的任何建议?

【问题讨论】:

  • 请制作一个包含数据的可重现示例,以便我可以将您的代码粘贴到我的控制台并运行它而不会出现错误消息。
  • 我认为你必须改变邻接矩阵。

标签: r correlation igraph


【解决方案1】:

您可以根据需要从图中删除边,或者首先从矩阵中删除它们。例如

cor_mat[ cor_mat < .8 ] <- 0
diag(cor_mat) <- 0
graph <- graph.adjacency(cor_mat, weighted=TRUE, mode="lower")

创建图表后,如何从图表中删除它们:

graph <- delete.edges(graph, E(graph)[ weight < 0.8 ])

【讨论】:

  • 基于文件大小的减小,这两种方法似乎都有效。但是,当我使用E(graph)$weights 检查权重时,边缘权重不再是 r 值,而是来自矩阵文件 A 列的 ID。
  • 我不明白,对不起。一些可重复的例子会有所帮助。顺便提一句。它是E(graph)$weight,没有's'。
  • 我在原始问题中添加了一个可重现的矩阵,谢谢。
  • 那里看不到任何矩阵。另外,spearmancorr.csv 在哪里?请参阅stackoverflow.com/questions/5963269/… 谢谢。
  • 对不起,可重复性不佳的示例。但是,我确定了问题发生在哪里。我用较小的矩阵(10x10)测试了你的答案,效果很好。我的真实数据集有一个 5395x5395 的矩阵。当使用大矩阵“delete.edges”时,除两条边之外的所有图形文件(这是不正确的)。是否有代码可以使用更大的文件?
猜你喜欢
  • 2013-02-28
  • 2012-03-01
  • 1970-01-01
  • 2023-03-18
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多