Hi, all!
I've tried 3 different versions of code to calculate assortativity via degree correlation and two of them returned NA, while the third gave some reasonable numbers. My quistion is: can I trust it and why could 2 other receipts fail?
deg <- degree(g)
es <- get.edges(g, E(g)) + 1
dc <- cor(deg[es[,1] ], deg[es[,2] ])
assortativity <- function(graph){
deg <- degree(graph)
deg.sq <- deg^2
m <- ecount(graph)
num1 <- 0; num2 <- 0; den <- 0
edges <- get.edgelist(graph, names=FALSE)+1
num1 <- sum(deg[edges[,1]] * deg[edges[,2]]) / m
num2 <- (sum(deg[edges[,1]] + deg[edges[,2]]) / (2 * m))^2
den <- sum(deg.sq[edges[,1]] + deg.sq[edges[,2]]) / (2 * m)
return((num1-num2)/(den-num2))
}