tie_in_community() assigns each tie to a link community.

Most community detection algorithms partition the nodes of a network, so that each node belongs to one community only. Link communities (Ahn et al. 2010) partition the ties instead. Each tie belongs to one community, but a node belongs to every community that one of its ties does, so the communities of nodes can overlap where the communities of ties do not.

tie_in_community(.data)

Arguments

.data

A network object of class stocnet, igraph, tbl_graph, network, or similar. Internally any of these will be coerced to an efficient implementation. For more information on possible coercions, see e.g. manynet::as_stocnet().

Value

A tie_member character vector the length of the ties in the network, of group memberships "A", "B", etc for each tie, named by the pair of nodes each tie joins.

Cognitive social structures

A cognitive social structure records each node's report of the ties in the whole network, in a by column that names who reported each tie. Counting every report as a tie of its own would count each tie once for every perceiver who reports it. So the functions here first combine the reports into the locally aggregated structure of Krackhardt (1987), with the intersection rule: a tie exists if both of its ends report it, and a message says so. A tie that names no reporter is kept as it is.

A tie-level function still returns one value for each report, so that the result can be added back to the network it was given. Each report takes the value of the tie that it reports. A report of a tie that is not in the aggregated structure takes NA, or FALSE for a mark. tie_is_random() is the exception, and draws among the reports.

To combine the reports in a different way, do this before the function, e.g. with manynet::to_aggregated(over = "by").

Krackhardt, David. 1987. "Cognitive social structures". Social Networks 9(2): 109-134. doi:10.1016/0378-8733(87)90009-8

Signed networks

A community is a cohesive subgroup, and negative ties do not carry cohesion. Where the network is signed, only its positive ties are clustered, and negative ties return NA. Use manynet::to_unsigned() first to control this yourself.

Large networks

Every tie is compared with every other tie, so the time and memory needed grow with the square of the number of ties. This is practical up to a few thousand ties.

References

Ahn, Yong-Yeol, James P. Bagrow, and Sune Lehmann. 2010. "Link communities reveal multiscale complexity in networks". Nature 466(7307): 761-764. doi:10.1038/nature09182

Examples

tie_in_community(ison_adolescents)
#> 4 groups
#>   `Betty-Sue` `Sue-Alice` `Alice-Jane` `Sue-Dale` `Alice-Dale` `Jane-Dale`
#> 1 A           B           B            B          B            B          
#> # ... and 4 more values from this nodeset. Use `print_all(...)` to print all values.