View source: R/motifs-extract.R
| extract_motifs | R Documentation |
Extract and analyze triad motifs from network data with flexible filtering, pattern selection, and statistical significance testing. Supports both individual-level analysis (with tna objects or grouped data) and aggregate analysis (with matrices or networks).
extract_motifs(
x = NULL,
data = NULL,
id = NULL,
level = NULL,
edge_method = c("any", "expected", "percent"),
edge_threshold = 1.5,
pattern = c("triangle", "network", "closed", "all"),
exclude_types = NULL,
include_types = NULL,
top = NULL,
by_type = FALSE,
min_transitions = 5,
significance = FALSE,
n_perm = 100,
seed = NULL
)
x |
Input data. Can be:
|
data |
Optional data.frame containing transition data with an ID column
for individual-level analysis. Required columns: |
id |
Column name(s) identifying individuals/groups in |
level |
Analysis level: "individual" counts how many people have each triad, "aggregate" analyzes the summed/single network. Default depends on input: "individual" for tna or when id provided, "aggregate" otherwise. |
edge_method |
Method for determining edge presence:
Default "any". |
edge_threshold |
Threshold value for "expected" or "percent" methods. For "expected", a ratio (e.g., 1.5 means 50\ The default 1.5 is calibrated for this method. For "percent", a proportion (e.g., 0.15 for 15\ When using "percent", set this explicitly (e.g., 0.15). Ignored when edge_method = "any". Default 1.5. |
pattern |
Pattern filter for which triads to include:
|
exclude_types |
Character vector of MAN types to explicitly exclude. Applied after pattern filter. E.g., c("300") to exclude cliques. |
include_types |
Character vector of MAN types to exclusively include. If provided, only these types are returned (overrides pattern/exclude). |
top |
Return only the top N results (by observed count or z-score). NULL returns all results. Default NULL. |
by_type |
If TRUE, group results by MAN type in output. Default FALSE. |
min_transitions |
Minimum total transitions for a person to be included (individual level) or minimum triad weight (aggregate). Default 5. |
significance |
Logical. Run permutation significance test? Default FALSE. |
n_perm |
Number of permutations for significance test. Default 100. |
seed |
Random seed for reproducibility. |
A cograph_motif_analysis object (list) containing:
Data frame with triad, type, observed count, and (if significance=TRUE) expected, z-score, p-value
Summary counts by motif type
List of parameters used
Analysis level used
The 16 triad types use MAN (Mutual-Asymmetric-Null) notation where:
First digit: number of Mutual (bidirectional) pairs
Second digit: number of Asymmetric (one-way) pairs
Third digit: number of Null (no edge) pairs
Letter suffix: subtype variant (C=cycle, T=transitive, D=down, U=up)
030C (cycle), 030T (feed-forward), 120C (regulated cycle), 120D (two out-stars), 120U (two in-stars), 210 (mutual+asymmetric), 300 (clique)
021D (out-star), 021U (in-star), 102 (mutual pair), 111D (out-star+mutual), 111U (in-star+mutual), 201 (mutual+in-star), plus all triangle patterns
012 (single edge), 021C (A->B->C chain)
003 (no edges)
motifs(), subgraphs(), extract_triads(), motif_census()
Other motifs:
extract_triads(),
get_edge_list(),
motif_census(),
motifs(),
plot.cograph_motif_analysis(),
plot.cograph_motifs(),
subgraphs(),
triad_census()
## Not run:
Mod <- tna::tna(tna::group_regulation)
# Basic: triangles only (default) - individual level for tna
m <- extract_motifs(Mod)
print(m)
# Top 20 with significance testing
m <- extract_motifs(Mod, top = 20, significance = TRUE, n_perm = 100)
plot(m)
# From a matrix (aggregate level)
mat <- Mod$weights
m <- extract_motifs(mat)
# Only feed-forward loops
m <- extract_motifs(Mod, include_types = "030T")
# Triangles but exclude cliques
m <- extract_motifs(Mod, pattern = "triangle", exclude_types = "300")
# From data.frame with ID column (individual level)
# df has columns: id, from, to (and optionally weight)
# m <- extract_motifs(data = df, id = "id")
# m <- extract_motifs(data = df, id = c("group", "person"))
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.