igraph (R) Как создать корреляционную сеть только с сильными значениями r

Я пытаюсь выяснить, как использовать graph.adjacency для создания графа с использованием корреляционной матрицы (значения от -1 до 1), но только с наиболее сильно коррелированными ребрами, включенными в файл графа, то есть <-.8 или>.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")

Любой совет, как получить файл графика, который я хочу?

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 ])
Другие вопросы по тегам