These functions, together with net_reciprocity(), are used jointly to measure how hierarchical a network is:

  • net_by_connectedness() measures the proportion of dyads in the network that are reachable to one another, or the degree to which network is a single component.

  • net_by_efficiency() measures the Krackhardt efficiency score.

  • net_by_upperbound() measures the Krackhardt (least) upper bound score.

net_by_connectedness(.data)

net_by_efficiency(.data)

net_by_upperbound(.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 network_measure numeric score.

The object also carries the measure it computed, the range its values can fall within, and whether and how those values were normalized. These are shown as a one-line header when the object is printed. Where a measure offers a choice between several ways of counting the same thing, it also carries the variant it used. All can be retrieved with attr().

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

These measures read a tie as a distance, and a negative tie is hostility rather than a channel along which cohesion travels. Where the network is signed, they therefore consider only the positive ties, and say so. Use manynet::to_unsigned() first to control this yourself.

Efficiency

A perfect hierarchy is a tree: every node but the root has exactly one superior, and there are no ties to spare. Krackhardt's efficiency asks how close a network comes to that, by counting the ties it carries in excess of the minimum needed to hold its components together, as a proportion of the most excess ties it could possibly carry: $$E = 1 - \frac{|E| - \sum_i (N_i - 1)}{\sum_i \left(M_i - (N_i - 1)\right)}$$ where \(N_i\) is the size of weak component \(i\) and \(M_i\) the number of ties possible within it. A tree or forest scores 1, and a complete network 0.

References

On hierarchy

Krackhardt, David. 1994. Graph theoretical dimensions of informal organizations. In Carley and Prietula (eds) Computational Organizational Theory, Hillsdale, NJ: Lawrence Erlbaum Associates. Pp. 89-111.

Everett, Martin, and David Krackhardt. 2012. “A second look at Krackhardt's graph theoretical dimensions of informal organizations.” Social Networks, 34: 159-163. doi:10.1016/j.socnet.2011.10.006

Examples

net_by_connectedness(ison_networkers)
#> # Connectedness, normalized [0, 1]
#> [1] 1
1 - net_by_reciprocity(ison_networkers)
#> # Reciprocity, normalized [0, 1]
#> [1] 0.209
net_by_efficiency(ison_networkers)
#> # Efficiency, normalized [0, 1]
#> [1] 0.574
net_by_upperbound(ison_networkers)
#> # Least upper boundedness, normalized [0, 1]
#> [1] 1