View source: R/level_partitioning.R
| level_partitioning | R Documentation |
Performs hierarchical level decomposition of system elements based on their reachability and antecedent sets. This is a core step in Interpretive Structural Modelling (ISM) analysis.
level_partitioning(reach_matrix)
reach_matrix |
A square reachability matrix (n x n) with 0/1 entries,
typically computed using |
The algorithm implements the standard ISM level partitioning procedure:
For each remaining element i, compute:
Reachability set R(i): elements that i can reach (within remaining set)
Antecedent set A(i): elements that can reach i (within remaining set)
An element belongs to the current (top) level if:
R(i) \cap A(i) = R(i), i.e., the reachability set equals the intersection
Remove top-level elements and repeat until all elements are assigned
This implementation correctly operates on the remaining subset at each iteration, which is essential for correct level assignment.
An object of class ism_levels, which is a list containing:
Each element is a vector of node indices belonging to that level
Level 1 is the top level (outcomes/dependent variables)
Higher numbered levels are lower in the hierarchy (drivers/independent variables)
Attribute labels: node names if the input matrix has dimnames
Warfield, J. N. (1974). Developing interconnection matrices in structural modeling. IEEE Transactions on Systems, Man, and Cybernetics, SMC-4(1), 81-87. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1109/TSMC.1974.5408524")}
Sage, A. P. (1977). Interpretive Structural Modeling: Methodology for Large-scale Systems. McGraw-Hill.
compute_reachability for computing reachability matrices,
plot_ism for visualization,
plot_interactive_ism for interactive visualization,
micmac_analysis for MICMAC analysis.
# Create adjacency matrix
adj_matrix <- matrix(c(0, 1, 0, 0,
0, 0, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0), nrow = 4, byrow = TRUE)
rownames(adj_matrix) <- colnames(adj_matrix) <- c("A", "B", "C", "D")
# Compute reachability matrix
reach_mat <- compute_reachability(adj_matrix)
# Perform level partitioning
levels <- level_partitioning(reach_mat)
print(levels)
# Access specific levels
levels[[1]] # Top level elements (outcomes)
levels[[length(levels)]] # Bottom level elements (root causes)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.