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 ])