  One property of networks that has received comparatively little attention is
hierarchy, i.e., the property of having vertices that cluster together in
groups, which then join to form groups of groups, and so forth, up through all
levels of organization in the network. Here, we give a precise definition of
hierarchical structure, give a generic model for generating arbitrary
hierarchical structure in a random graph, and describe a statistically
principled way to learn the set of hierarchical features that most plausibly
explain a particular real-world network. By applying this approach to two
example networks, we demonstrate its advantages for the interpretation of
network data, the annotation of graphs with edge, vertex and community
properties, and the generation of generic null models for further hypothesis
testing.
