2013-11-13 1 views
4

Я пытаюсь выяснить, как использовать graph.adjacency для создания графика с использованием корреляционной матрицы (значения от -1 до 1), но только с наибольшим сильнокоррелированные края, включенных в файл графа, т.е. < -.8 или> .8igraph (R) Как создать корреляционную сеть только с сильными значениями r

Вот код, который успешно дает мне сеть с полным набором данных:

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

Я попытался с помощью удаления. края, чтобы уменьшить сеть, по крайней мере до> .8, чтобы проверить ее, но в результирующем файле по-прежнему отображаются веса ребер ниже 0,8

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

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

+2

Пожалуйста, воспроизводимый пример, включая данные, так что я могу вставить код в мою консоль и запустить его без ошибок Сообщения. – bdemarest

+1

Думаю, вам придется изменить матрицу смежности. –

ответ

3

Вы можете удалить ребра из графика, если хотите, или удалить их из матрицы в первую очередь. Например.

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

Оба эти метода, похоже, работали на основе уменьшения размера файла. Однако, когда я проверяю весы с помощью 'E (graph) $ weights', то весовые коэффициенты ребер больше не являются значениями r, а идентификаторами из столбца A файла матрицы. – user2988430

+0

Я этого не понимаю, извините. Некоторый воспроизводимый пример поможет. Btw. это 'E (граф) $ weight', без 's'. –

+0

Я добавил воспроизводимую матрицу в исходный вопрос, спасибо. – user2988430