BrainNetTest implements the non-parametric L1-distance
ANOVA test of Fraiman and Fraiman (2018) for comparing populations of
brain networks represented as graphs. The package provides:
T and its permutation null
distribution;identify_critical_links) that
pinpoints the edges driving between-group differences; andThis vignette introduces the basic API on simple synthetic data. The companion vignette, Generating and Analyzing Brain Networks with Community Structures, shows the full pipeline on community-structured populations.
generate_random_graph() returns a symmetric binary
adjacency matrix with no self-loops:
Given a population (list of adjacency matrices), the central
graph is the entry-wise mean; compute_distance()
returns the L1 (Manhattan) distance between two graphs:
Tcompute_test_statistic() aggregates within- and
between-group Manhattan distances into the statistic T.
Larger values indicate stronger evidence that the groups differ:
control <- replicate(
15, generate_random_graph(n_nodes = 10, edge_prob = 0.20),
simplify = FALSE)
patient <- replicate(
15, generate_random_graph(n_nodes = 10, edge_prob = 0.40),
simplify = FALSE)
populations <- list(Control = control, Patient = patient)
compute_test_statistic(populations, a = 1)
#> Control
#> -18.54162identify_critical_links() combines the global
permutation test with an iterative edge-removal procedure that returns
the edges driving the observed difference:
result <- identify_critical_links(
populations,
alpha = 0.05,
method = "fisher",
n_permutations = 200,
seed = 42)
head(result$critical_edges)
#> node1 node2 p_value
#> 5 2 4 0.01419290
#> 40 4 10 0.01419290
#> 8 2 5 0.02093953
#> 38 2 10 0.02093953
#> 44 8 10 0.02532769
#> 2 1 3 0.03518241The get_critical_nodes() helper summarises this result
at the node level:
Fraiman, D. and Fraiman, R. (2018) An ANOVA approach for statistical comparisons of brain networks. Scientific Reports, 8, 4746. https://doi.org/10.1038/s41598-018-21688-0