Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何基于二进制矩阵计算概率矩阵?_R_Matrix_Vector_Igraph - Fatal编程技术网

R 如何基于二进制矩阵计算概率矩阵?

R 如何基于二进制矩阵计算概率矩阵?,r,matrix,vector,igraph,R,Matrix,Vector,Igraph,我的尝试是: library(igraph) set.seed(41) n<-10 A <- sample.int (2, n*n, TRUE)-1L; dim(A) <- c(n,n); m <- sum(A) g <- graph_from_adjacency_matrix(A) k_in <- degree(g, v = V(g), mode = "in", loops = TRUE, normalized = FALSE)#; k_in k

我的尝试是:

library(igraph)

set.seed(41)
n<-10

A <- sample.int (2, n*n, TRUE)-1L; dim(A) <- c(n,n); 
m <- sum(A)

g <- graph_from_adjacency_matrix(A)

k_in  <- degree(g, v = V(g), mode = "in", loops = TRUE, normalized = FALSE)#; k_in
k_out <- degree(g, v = V(g), mode = "out", loops = TRUE, normalized = FALSE)#; k_out

p <- (k_in %*% t(k_out) / (2*m))/(k_in %*% t(k_out) / (2*m) + k_in %*% t(k_out) / (2*m)) 

round(p, 3)

我认为这个矩阵应该是对称的。

这个
2m
是无用的,因为它同时出现在分子和分母上。你可以做:

p <- (k_in %*% t(k_out))/(k_out %*% t(k_in) + k_in %*% t(k_out))

stackoverflow不支持p mathjax。请编辑您的问题,使其更详细readable@Cettt,我添加了图片。谢谢你的回答,但我认为我们应该有四个不同的值:k_j_out,k_I_in,k_I_out,k_j_in。@Nick你可以通过计算
k_out[j]*k_in[I]/(k_out[j]*k_in[I]+k_out[I]*k_in[j])
来检验这一点。请参阅我的编辑。
p <- (k_in %*% t(k_out))/(k_out %*% t(k_in) + k_in %*% t(k_out))
M <- k_in %*% t(k_out)
M / (M + t(M))
i <- 2; j <- 3
k_out[j] * k_in[i] / (k_out[j] * k_in[i] + k_out[i] * k_in[j])
# 0.5384615
p[i,j]
# 0.5384615