我有一个数据表,其中包含在论坛的同一个帖子中发布的用户名,它看起来像这样: X1 X2 1. g79 kian 2. g79 greyracer 3. g79 oldskoo1 ......
我需要计算程度,亲密度和介于两者之间。我正在使用以下代码:
library(igraph)
setwd("/Volumes/NATASHKA/api/R files")
load("edgelist_one_mode.rda")
load("map.rda")
load ("result.rda")
el <- as.matrix(whatwewant)
el[,1] <- as.character(el[,1])
el[,2] <- as.character(el[,2])
g <- graph.data.frame(el, directed=FALSE)
plot(g, edge.arrow.size=.5)
indegreeG <- degree(g, mode="in")
outdegreeG <- degree(g, mode="out")
totaldegreeG <- degree(g)
inclosenessG <- closeness(g, mode='in')
outclosenessG <- closeness(g, mode='out')
totalclosenessG <- closeness(g)
betweennessG <- betweenness(g)
forumG <- data.frame(V(g)$name, indegreeG, outdegreeG, totaldegreeG, inclosenessG, outclosenessG, totalclosenessG, betweennessG)
write.table(forumG,file="forumG.csv",sep=";")
问题是为什么我得到的学位,学位和学位的价值相同,亲密度相同?此外,一开始我有41213个用户,但经过分析(当我计算学位等等)时,我只有37874.我怎么能失去这么多观察?如果我在代码中有错误,请告诉我。
由于
答案 0 :(得分:6)
您获得相同的学位,学位和学位总值的原因是因为您正在使用graph.data.frame(el, directed=FALSE)
创建无向网络。
在无向网络中,从节点到节点的链路数量相同,并且它们都等于全局度。
如果您需要定向网络,则需要执行graph.data.frame(el, directed=TRUE)
。
它将创建一个有向网络,其中数据帧第一列中的id是发送tie的节点的id,第二列中的id表示接收该tie的节点。
至于丢失节点,我的猜测是你有一些人从不与任何人互动,因此当你将双模网络转换为单模式时会丢失(我假设你这样做但不告诉我们你是怎么做的,因为你的行:load("edgelist_one_mode.rda")
)
如果没有一个可重复的例子,我认为这是我可以从你的代码中推断出来的。