微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从加权相关矩阵 csv

如何解决从加权相关矩阵 csv

首先,我想说我对 R 完全陌生,我只是想完成这一项任务。 所以,我想要做的是我想从一个加权矩阵创建一个网络图。我举了个例子:

CSV 是一个简单的相关矩阵,如下所示:

,A,B,C,D,E,F,G
A,1,0.9,0.64,0.43,0.38,0.33,0.33
B,0.38
C,0.59,0.69,0.64
D,0.28,0.23,0.28
E,0.95,0.9
F,0.9
G,1

我试图自己绘制想要的结果并想出了这个:

enter image description here

更准确地说,我先画图,然后用尺子记下距离,计算一个方程来获得权重并制作CSV表格。

值越大,两个点越接近。

然而,无论我做什么,我得到的最好结果是这样的:

enter image description here

这就是我尝试使用this教程来完成它的方式:

首先,我导入我的矩阵:

> matrix <- read.csv(file = 'test_dataset.csv')

但是在用 head() 打印出矩阵之后,这已经以某种方式切割了矩阵的最后一行:

> head(matrix)
  ï..    A    B    C    D    E    F    G
1   A 1.00 0.90 0.64 0.43 0.38 0.33 0.33
2   B 0.90 1.00 0.64 0.33 0.43 0.38 0.38
3   C 0.64 0.64 1.00 0.59 0.69 0.64 0.64
4   D 0.43 0.33 0.59 1.00 0.28 0.23 0.28
5   E 0.38 0.43 0.69 0.28 1.00 0.95 0.90
6   F 0.33 0.38 0.64 0.23 0.95 1.00 0.90
> dim(matrix)
[1] 7 8

然后我继续删除第一列,使矩阵再次变成正方形...

> matrix <- data.matrix(matrix)[,-1]
> head(matrix)
        A    B    C    D    E    F    G
[1,] 1.00 0.90 0.64 0.43 0.38 0.33 0.33
[2,] 0.90 1.00 0.64 0.33 0.43 0.38 0.38
[3,] 0.64 0.64 1.00 0.59 0.69 0.64 0.64
[4,] 0.43 0.33 0.59 1.00 0.28 0.23 0.28
[5,] 0.38 0.43 0.69 0.28 1.00 0.95 0.90
[6,] 0.33 0.38 0.64 0.23 0.95 1.00 0.90
> dim(matrix)
[1] 7 7

然后我创建图表并尝试绘制它:

> network <- graph_from_adjacency_matrix(matrix,weighted=T,mode="undirected",diag=F)
> plot(network)

出现上面的结果...

所以,在花了最后几个小时在谷歌上搜索并尝试了更多的东西之后,这是我能找到的最接近的。

所以我请求你的帮助,非常感谢!

解决方法

这一切都很好。

head() 只打印出矩阵或数据框的前 6 行,如果您想查看所有行,请使用 print() 或仅打印矩阵变量的名称。

如果值不为零,

graph_from_adjacency_matrix 会在两个节点之间生成链接。这就是为什么您要让每个节点都链接到每个其他节点。

要了解该教程正在做什么,您需要添加一行

matrix[matrix<0.5] <- 0

在创建图形之前删除截止点以下的相关边。

它仍然不会产生像您手绘的图表(其中的接近度大致是相关性),如果它们的相关性高于 0.5,只需将它们聚集在一起。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。