  We present a probabilistic generative model and efficient algorithm to model
reciprocity in directed networks. Unlike other methods that address this
problem such as exponential random graphs, it assigns latent variables as
community memberships to nodes and a reciprocity parameter to the whole network
rather than fitting order statistics. It formalizes the assumption that a
directed interaction is more likely to occur if an individual has already
observed an interaction towards her. It provides a natural framework for
relaxing the common assumption in network generative models of conditional
independence between edges, and it can be used to perform inference tasks such
as predicting the existence of an edge given the observation of an edge in the
reverse direction. Inference is performed using an efficient
expectation-maximization algorithm that exploits the sparsity of the network,
leading to an efficient and scalable implementation. We illustrate these
findings by analyzing synthetic and real data, including social networks,
academic citations and the Erasmus student exchange program. Our method
outperforms others in both predicting edges and generating networks that
reflect the reciprocity values observed in real data, while at the same time
inferring an underlying community structure. We provide an open-source
implementation of the code online.
