Skip to contents

Experimental. Lifts the internal citations of a sniff_groups() network to the group level and measures how much each group's output flows into every other group's. Influence is directional: if group \(B\)'s papers cite group \(A\)'s papers, knowledge flows \(A \to B\). The function returns the cross-citation matrix, four size-corrected indices per ordered pair, the net flow between pairs, and a source / broker / sink role per group.

Usage

sniff_groups_influence(groups, self = TRUE, null_reps = 0, seed = NULL)

is_influence(x)

# S3 method for class 'birddog_influence'
print(x, ...)

Arguments

groups

A sniff_groups() object: a list with a network component, a directed tidygraph/igraph whose nodes carry a group attribute and whose edges are the internal citations (citing -> cited).

self

Keep the diagonal (intra-group citations) in the matrix and in the out/in strengths. Default TRUE. FALSE studies only between-group flow.

null_reps

Number of group-label permutations for a per-channel p-value: shuffle the group labels over documents, recompute the cross-citation matrix, and record how often the random flow meets or beats the observed count. Default 0 (no p-values). When > 0, flow gains a p_value column.

seed

Optional integer seed for the permutation null, for reproducibility. Default NULL.

x

A birddog_influence object.

...

Ignored.

Value

An object of class birddog_influence, a list with:

  • matrix: the \(G \times G\) cross-citation matrix \(C\) (rows cite columns), groups in mixed_sort() order.

  • flow: a tibble, one row per observed ordered pair, sorted by descending surpriseinfluencer (cited group), recipient (citing group), citations, debt, audience, salton, surprise (and p_value when null_reps > 0).

  • groups: per-group received, made, balance, role (source / broker / sink), sorted by descending balance.

  • net: the net-influence edge list – from (source), to (recipient), net (\(\nu_{ij} > 0\)).

  • params: the call settings.

Details

Writing \(C_{ij}\) for the number of citations from group \(i\) to group \(j\) (rows cite columns), out-strength \(o_i=\sum_k C_{ik}\), in-strength \(\iota_j=\sum_k C_{kj}\), and total \(m=\sum_{ij}C_{ij}\), each ordered pair carries four normalizations:

  • debt \(C_{ij}/o_i\) – the share of \(i\)'s citations owed to \(j\) (how much \(i\) leans on \(j\));

  • audience \(C_{ij}/\iota_j\) – the share of \(j\)'s citations coming from \(i\);

  • salton \(C_{ij}/\sqrt{o_i\,\iota_j}\) – a size-free channel strength, symmetric in the pair;

  • surprise \(C_{ij}/(o_i\,\iota_j/m)\) – the flow against the configuration-model expectation; \(>1\) over-represented, \(<1\) under-represented.

The net influence \(\nu_{ij}=C_{ij}-C_{ji}\) removes reciprocal flow, and the group balance \(\beta_i=\iota_i-o_i\) (received minus made) classifies each group as a source (\(\beta>0\), foundational), a sink (\(\beta<0\), frontier consumer), or a broker (\(\beta\approx 0\)). The balances of a closed system sum to zero. The diagonal \(C_{ii}\) is intra-group cohesion; self = FALSE drops it before any normalization (the balances and net are unchanged, since the diagonal cancels).

Examples

if (FALSE) { # \dontrun{
groups <- sniff_groups(net)
infl <- sniff_groups_influence(groups)
infl
infl$groups          # source / broker / sink per group
infl$net             # who, on balance, leads whom
plot_groups_influence_matrix(infl)
} # }