相关网络分析R.

时间:2016-07-18 09:44:28

标签: r

我在某些客户端之间有一个关联网络。我使用qgraph绘制它,现在我想通过定义集群,集线器和中心来进行一些图形分析。

我在igraph包edge.betweenness.community中发现了这个R函数,它似乎在igraph中显示了簇,所以我将我的qgraph转换为igraph,但函数不起作用,因为我有负相关值。

还有其他办法吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

根据@Karolis的回答,corrr包的开发版使用network_plot()执行此类操作。这是一个例子(包括当前开发版本的安装):

install.packages("devtools")
devtools::install_github("drsimonj/corrr")
library(corrr)
airquality %>% correlate() %>% network_plot(min_cor = .2)

enter image description here

该图表示与红线的负相关,但是使用相关的绝对值作为接近度/距离度量,基于相关幅度将变量聚类为。这由基函数abs()处理。如果您认为这可能会有所帮助,您可以找到用于生成network_plot() here的相关代码。

除此之外,我计划尽快发布corrr的更新版本,以便您可以直接从CRAN(network_plot())安装后访问install.packages("corrr")

答案 1 :(得分:1)

单程

转换你的相关性,使-1变为0,1仍然是1:

cors <- (cors+1)/2

这样,负相关将被解释为&#34;最低关联&#34;。如果相反-1和1都应被视为&#34;关联&#34;那么你可以取相关矩阵的绝对值:

cors <- abs(cors)

另一种方式

使用其他群集算法。一个候选 - 层次聚类,因为它在距离矩阵上运行。你有一个相关矩阵。所以要开始你应该获得距离:

dists <- as.dist(1-cors)

然后进行聚类:

htree <- hclust(dists)
plot(htree)                # inspect the result visually.
groups <- cutree(htree, 5) # 5 here is desired number of groups.

同时

查看包裹&#34; WGCNA&#34;它代表&#34;加权基因共表达网络分析&#34;。它具有一些有用的功能,可以从网络中获取集群&#34;数据