##### an undirected blockmodel example
n <- 100
pop <- n / 2
a <- .1
b <- .05
B <- matrix(c(a, b, b, a), nrow = 2)
b_model <- sbm(n = n, k = 2, B = B, poisson_edges = FALSE)
b_model
A <- sample_sparse(b_model)
# compare
mean(rowSums(triu(A)))
pop * a + pop * b # analytical average degree
##### more generic examples
n <- 1000
k <- 5
X <- matrix(rpois(n = n * k, 1), nrow = n)
S <- matrix(runif(n = k * k, 0, .1), nrow = k)
ufm <- undirected_factor_model(X, S)
expected_edges(ufm)
expected_degree(ufm)
eigs_sym(ufm)
n <- 1000
d <- 100
k1 <- 5
k2 <- 3
X <- matrix(rpois(n = n * k1, 1), nrow = n)
Y <- matrix(rpois(n = d * k2, 1), nrow = d)
S <- matrix(runif(n = k1 * k2, 0, .1), nrow = k1)
dfm <- directed_factor_model(X = X, S = S, Y = Y)
expected_edges(dfm)
expected_in_degree(dfm)
expected_out_degree(dfm)
svds(dfm)
Run the code above in your browser using DataLab