These functions extract certain attributes from network data:

  • tie_attribute() returns an attribute's values for the ties in a network.

  • tie_weights() returns the weights of the ties in a network.

  • tie_signs() returns the signs of the ties in a network.

  • tie_is_twomode() returns whether each tie in a network is a cross-mode tie.

  • tie_is_parallel() returns whether each tie in a network runs parallel to another, i.e. whether another tie joins the same pair of nodes at the same moment.

  • tie_is_backbone() returns whether each tie in a network is retained by a backbone filter, i.e. whether it carries more weight, or holds more structure, than a null model local to its endpoints expects.

These functions are also often used as helpers within other functions. tie_*() always return vectors the same length as the number of ties in the network, respectively.

tie_attribute(.data, attr_name)

tie_weights(.data)

tie_signs(.data)

tie_is_twomode(.data)

tie_is_parallel(.data)

tie_is_backbone(
  .data,
  filter = NULL,
  threshold = NULL,
  endpoints = c("either", "both")
)

Arguments

.data

An object of a {manynet}-consistent class:

  • adjacency or incidence matrix from {base} R

  • edgelist data.frame from {base} R or tbl/tbl_df from {tibble}

  • stocnet stocnet, from the {manynet} package

  • igraph igraph, from the {igraph} package

  • network network, from the {network} package

  • tidygraph tbl_graph, from the {tidygraph} package

attr_name

Character string naming a nodal attribute. The attribute itself may be a logical mark, numeric measure, or character membership vector.

filter

Which backbone filter to apply, one of:

  • "disparity": the disparity filter of Serrano et al. (2009), which tests a tie's share of its node's strength against a null model in which that strength is divided at random. Assumes heavy-tailed weights.

  • "lans": locally adaptive network sparsification, Foti et al. (2011), which replaces that null model with the empirical distribution of the node's own tie weights, and so assumes nothing about their shape.

  • "noise": the noise-corrected filter of Coscia and Neffke (2017), which tests a tie's weight against the strengths of both its endpoints and allows for the uncertainty of the null itself. Corrects the disparity filter's bias towards hubs.

  • "mlf": the marginal likelihood filter of Dianati (2016), which reads the weights as counts of independent events and tests each against a maximum-entropy null. Requires whole-number weights.

  • "simmelian": the Simmelian backbone of Nick et al. (2013), which ranks each node's neighbours by how embedded the tie is and retains the ties whose endpoints rank each other similarly. Ignores tie weights, and so is the only filter available for an unweighted network. Reads a directed network as an undirected one, since it counts shared neighbours.

By default NULL, which uses "lans" where the network is weighted and "simmelian" where it is not. "lans" leads because it assumes nothing about the shape of the weights, and because it retains each node's strongest tie whatever that shape is. "disparity" is the better known filter, but its null model expects heavy-tailed weights: where weights are more even, a tie's share of its node's strength approaches 1/k for every tie, the p-value approaches 1/e, and the filter retains nothing at all.

threshold

The cutoff below which a tie is retained. For the four statistical filters this is a significance level, by default 0.05. For "simmelian" it is instead one minus the similarity of the two endpoints' rankings, by default 0.5. By default NULL, which uses whichever of these the filter calls for.

endpoints

Whether a tie is retained where it passes the filter at "either" of its endpoints, by default, or only where it passes at "both". "both" is the more demanding, since a tie must be locally salient to both the sender and the receiver. Applies to the "disparity" and "lans" filters only, since the others weigh both endpoints at once.

Parallel ties

Parallel ties, also called multi-edges, are two or more ties that join the same pair of nodes at the same moment. Ties that join the same pair of nodes at different moments follow one another rather than run alongside one another, and so are not parallel. How a network records time therefore decides which ties coexist:

  • Where a network is a panel, ties are parallel where they share a wave.

  • Where a network records a stream of events, ties are parallel where they share a moment.

  • Where a network records the interval each tie lasts over, ties are parallel where those intervals overlap. Intervals that merely abut, one beginning as the other ends, do not.

  • Where a network records no time at all, any two ties on a pair of nodes are parallel.

Ties of different types are likewise not parallel. Several types of tie between a pair of nodes is what is_multiplex() marks; tie_is_parallel() marks several ties of one type.

Every tie in such a bundle is marked, and not just the repetitions, so sum(tie_is_parallel(ison_koenigsberg)) counts four of the seven bridges and not two.

Note that as_matrix() reports how many ties join each pair of nodes, so a network with parallel ties gives a matrix with cells greater than one even where it is neither weighted nor signed.

See also

to_backbone(), which deletes the ties this does not mark, and which documents each filter and the works they come from.

Other measures: measure_attributes_nodes, measure_dims

Examples

tie_attribute(ison_algebra, "task_tie")
#> NULL
tie_weights(to_mode1(ison_southern_women))
#>   `Evelyn-Laura` `Evelyn-Brenda` `Evelyn-Theresa` `Evelyn-Charlotte`
#> 1              6               6                7                  3
#> # ... and 135 more values from this nodeset. Use `print_all(...)` to print all values.
tie_signs(to_uniplex(fict_marvel,"relationship"))
#>   `Abomination-Abomination` `Abomination-Beast` `Abomination-Colossus`
#> 1                        -1                  -1                     -1
#> # ... and 555 more values from this nodeset. Use `print_all(...)` to print all values.
tie_is_twomode(fict_actually)
#>   `Aurelia-Jamie` `Aurelia-Scene 32` `Aurelia-Scene 38` `Aurelia-Scene 39`
#> 1 FALSE           TRUE               TRUE               TRUE              
#> # ... and 185 more values from this nodeset. Use `print_all(...)` to print all values.
tie_is_parallel(ison_koenigsberg)
#>   `Altstadt-Kneiphof` `Altstadt-Kneiphof` `Altstadt-Lomse` `Kneiphof-Lomse`
#> 1 TRUE                TRUE                FALSE            FALSE           
#> # ... and 3 more values from this nodeset. Use `print_all(...)` to print all values.
tie_is_backbone(ison_networkers)
#>   `Lin Freeman->Doug White` `Lin Freeman->Ev Rogers` `Lin Freeman->Richard Alba`
#> 1 TRUE                      TRUE                     TRUE                       
#> # ... and 437 more values from this nodeset. Use `print_all(...)` to print all values.