Given a microscale network, G, this function iteratively checks different coarse-grainings to see if it finds one with higher effective information.

causal_emergence(x, ...)

Arguments

x

igraph or matrix object.

...

Span, and threshold parameters

Value

A list with letters and numbers.

  • g_micro - Graph of original micro-scale network.

  • g_macro - Graph of macro-scale network.

  • mapping - list mapping from micro to macro scales giving the largest increase in effective information.

  • ei_macro - Effective information of macro scale network.

  • ei_micro - Effective information of micro scale network.

  • ce - Numerical value for causal emergence.

Examples

graph <- matrix(
  cbind(
    c(0.0, 1.0, 0.0, 0.0),
    c(0.0, 0.0, 1.0, 0.0),
    c(0.0, 0.0, 0.0, 1.0),
    c(0.0, 0.0, 0.0, 0.0)
  ),
 nrow = 4
) %>%
  igraph::graph.adjacency(mode = "directed")

causal_emergence(graph)
#> [25.0%] Checking node 4
#> [50.0%] Checking node 2
#> [75.0%] Checking node 3
#> [100.0%] Checking node 1
#> $g_micro
#> IGRAPH 9fd45c9 D-W- 4 3 -- 
#> + attr: weight (e/n)
#> + edges from 9fd45c9:
#> [1] 2->1 3->2 4->3
#> 
#> $g_macro
#> IGRAPH 009ea7a D-W- 4 3 -- 
#> + attr: weight (e/n)
#> + edges from 009ea7a:
#> [1] 2->1 3->2 4->3
#> 
#> $mapping
#> + 4/4 vertices, named, from 9fd45c9:
#> [1] 1 2 3 4
#> 
#> $ei_macro
#> [1] 1.584963
#> 
#> $ei_micro
#> [1] 1.584963
#> 
#> $effectiveness
#> [1] 0.7924813
#> 
#> $ce
#> [1] 0
#> 
#> attr(,"class")
#> [1] "CE"