## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----inst, eval=FALSE---------------------------------------------------------
# install.packages("netmem")
# # install.packages("devtools")
# devtools::install_github("anespinosa/netmem")

## ----setup--------------------------------------------------------------------
library(netmem)

## -----------------------------------------------------------------------------
A <- matrix(
  c(
    1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0,
    1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
    0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
    1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1,
    0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0
  ),
  byrow = TRUE, ncol = 14
)

## -----------------------------------------------------------------------------
matrix_projection(A)

## -----------------------------------------------------------------------------
bonacich_norm(A)

## -----------------------------------------------------------------------------
minmax_overlap(A, row = TRUE, min = TRUE)
minmax_overlap(A, row = FALSE, min = TRUE)

co_occurrence(A, similarity = c("ochiai"), occurrence = TRUE, projection = FALSE)

## ----multilevel_example-------------------------------------------------------
A1 <- matrix(c(
  0, 1, 0, 0, 1,
  1, 0, 0, 1, 1,
  0, 0, 0, 1, 1,
  0, 1, 1, 0, 1,
  1, 1, 1, 1, 0
), byrow = TRUE, ncol = 5)

B1 <- matrix(c(
  1, 0, 0,
  1, 1, 0,
  0, 1, 0,
  0, 1, 0,
  0, 1, 1
), byrow = TRUE, ncol = 3)

A2 <- matrix(c(
  0, 1, 1,
  1, 0, 0,
  1, 0, 0
), byrow = TRUE, nrow = 3)

B2 <- matrix(c(
  1, 1, 0, 0,
  0, 0, 1, 0,
  0, 0, 1, 1
), byrow = TRUE, ncol = 4)

A3 <- matrix(c(
  0, 1, 3, 1,
  1, 0, 0, 0,
  3, 0, 0, 5,
  1, 0, 5, 0
), byrow = TRUE, ncol = 4)

rownames(A1) <- letters[1:nrow(A1)]
colnames(A1) <- rownames(A1)
rownames(A2) <- letters[nrow(A1) + 1:nrow(A2)]
colnames(A2) <- rownames(A2)
rownames(B1) <- rownames(A1)
colnames(B1) <- colnames(A2)
rownames(A3) <- letters[nrow(A1) + nrow(A2) + 1:nrow(A3)]
colnames(A3) <- rownames(A3)
rownames(B2) <- rownames(A2)
colnames(B2) <- colnames(A3)

## -----------------------------------------------------------------------------
matrix_report(A1)
matrix_report(B1)
matrix_report(A2)
matrix_report(B2)
matrix_report(A3)

## ----meta_matrix, message=FALSE-----------------------------------------------
meta_matrix(A1, B1, A2, B2, A3)
meta_matrix(A1, B1, A2, B2)

## ----meta_matrix_plot, message=FALSE, eval=requireNamespace("igraph", quietly = TRUE)----
plot(igraph::graph_from_adjacency_matrix(meta_matrix(A1, B1, A2, B2, A3), mode = "directed"))

## ----multilevel_example2------------------------------------------------------
matrices <- list(A1, B1, A2, B2)
gen_density(matrices, multilayer = TRUE)

## ----multil-------------------------------------------------------------------
multilevel_degree(A1, B1, A2, B2, complete = TRUE)

## ----multil2------------------------------------------------------------------
k_core(A1, B1, multilevel = TRUE)

## ----multil3------------------------------------------------------------------
mixed_census(A2, t(B1), B2, quad = TRUE)

## ----zone_sample--------------------------------------------------------------
two_mode_sam <- zone_sample(A1, B1, ego = TRUE)
two_mode_sam

## ----zone_sample_plot, message=FALSE, eval=requireNamespace("igraph", quietly = TRUE)----
m <- meta_matrix(A1, B1)
g <- igraph::graph_from_adjacency_matrix(m, mode = "max")
plot(g, vertex.color = ifelse(igraph::V(g)$name %in% colnames(B1), "blue", "red"))

for (i in 1:ncol(B1)) {
  g <- igraph::graph_from_adjacency_matrix(two_mode_sam[[i]], mode = "max")
  plot(g,
    vertex.color = ifelse(igraph::V(g)$name %in% colnames(B1), "blue", "red"),
    main = names(two_mode_sam)[i]
  )
}

## -----------------------------------------------------------------------------
set.seed(26091949)
ind_rand_matrix(n = 30, m = 20, type = "probability", p = 0.2, multilevel = TRUE)

## -----------------------------------------------------------------------------
data("lazega_lawfirm")
rownames(lazega_lawfirm$advice) <- as.character(1:ncol(lazega_lawfirm$advice))
colnames(lazega_lawfirm$advice) <- rownames(lazega_lawfirm$advice)

colnames(lazega_lawfirm$friends) <- rownames(lazega_lawfirm$advice)
rownames(lazega_lawfirm$friends) <- colnames(lazega_lawfirm$friends)

## -----------------------------------------------------------------------------
gen_density(list(
  lazega_lawfirm$cowork, lazega_lawfirm$advice,
  lazega_lawfirm$friends
), multilayer = TRUE)

## -----------------------------------------------------------------------------
jaccard(lazega_lawfirm$cowork, lazega_lawfirm$advice)

jaccard(lazega_lawfirm$cowork, lazega_lawfirm$friends)

jaccard(lazega_lawfirm$advice, lazega_lawfirm$friends)

## -----------------------------------------------------------------------------
advice <- lazega_lawfirm$advice
friends <- pmax(lazega_lawfirm$friends, t(lazega_lawfirm$friends))
census <- multiplex_census(advice, friends)
length(census)
head(sort(census, decreasing = TRUE), 10)

## -----------------------------------------------------------------------------
sum(census) == choose(nrow(advice), 3)

## -----------------------------------------------------------------------------
length(multiplex_census(advice, friends, merge = "overlap"))

## ----supra--------------------------------------------------------------------
layers <- list(
  cowork = lazega_lawfirm$cowork,
  advice = lazega_lawfirm$advice,
  friends = lazega_lawfirm$friends
)
S <- supra_adjacency(layers)
dim(S)
S[1:4, c(1:2, 72:73, 143:144)]

## ----aggregate----------------------------------------------------------------
A <- aggregate_layers(layers)
table(layers_with_a_tie = A[upper.tri(A)])
gen_density(aggregate_layers(layers, method = "binary"), directed = TRUE)

## -----------------------------------------------------------------------------
A <- matrix(c(
  0, 1, 1,
  1, 0, 1,
  0, 0, 0
), byrow = TRUE, ncol = 3)
colnames(A) <- c("A", "C", "D")
rownames(A) <- c("A", "C", "D")

# complete list of actors
label <- c("A", "B", "C", "D", "E")

structural_na(A, label)

