Derive indirect relations for a given network. Observed relations, like presents or absence of a relation, are commonly not the center of analysis, but are transformed in a new set of indirect relation like shortest path distances among nodes. These transformations are usually an implicit step when centrality indices are used. Making this step explicit gives more possibilities, for example calculating partial centrality rankings with positional_dominance.

## Usage

```
indirect_relations(
g,
type = "dist_sp",
lfparam = NULL,
dwparam = NULL,
netflowmode = "",
rspxparam = NULL,
FUN = identity,
...
)
```

## Arguments

- g
igraph object. The network for which relations should be derived.

- type
String giving the relation to be calculated. See Details for options.

- lfparam
Numeric parameter. Only used if type = "dist_lf".

- dwparam
Numeric parameter. Only used if type = "dist_walk".

- netflowmode
String, one of raw, frac, or norm. Only used if type = "depend_netflow".

- rspxparam
Numeric parameter. Only used if type = "depend_rsps" or type = "depend_rspn".

- FUN
A function that allows the transformation of relations. See Details.

- ...
Additional arguments passed to FUN.

## Details

The `type`

parameter has the following options.

*'adjacency'* returns the adjacency matrix of the network.

*'weights'* returns the weighted adjacency matrix of the network if an edge
attribute 'weight' is present.

*'dist_sp'* returns shortest path distances between all pairs of nodes.

*'depend_sp'* returns dyadic dependencies
$$\delta(u,s) = \sum_{t \in V} \frac{\sigma(s,t|u)}{\sigma(s,t)}$$
where \(\sigma(s,t|u)\) is the number of shortest paths from s to t that include u and
\(\sigma(s,t)\) is the total number of shortest (s,t)-paths. This relation is used
for betweenness-like centrality indices.

*'walks'* returns walk counts between pairs of nodes, usually they are
weighted decreasingly in their lengths or other properties which can be done by adding
a function in `FUN`

. See transform_relations for options.

*'dist_resist'* returns the resistance distance between all pairs of nodes.

*'dist_lf'* returns a logarithmic forest distance \(d_\alpha(s,t)\). The logarithmic forest
distances form a one-parametric family of distances, converging to shortest path distances as \(\alpha -> 0\)
and to the resistance distance as \(\alpha -> \infty\). See (Chebotarev, 2011) for more details.
The parameter `lfparam`

can be used to tune \(\alpha\).

*'dist_walk'* returns the walk distance \(d_\alpha^W(s,t)\) between nodes. The walk distances form a one-parametric
family of distances, converging to shortest path distances as \(\alpha -> 0\) and to longest
walk distances for \(\alpha -> \infty\). Walk distances contain the logarithmic forest
distances as a special case. See (Chebotarev, 2012) for more details.

*'dist_rwalk'* returns the expected length of a random walk between two nodes. For more
details see (Noh and Rieger, 2004)

*'depend_netflow'* returns dependencies based on network flow (See Freeman et al.,1991).
If `netflowmode="raw"`

, the function returns
$$\delta(u,s) = \sum_{t \in V} f(s,t,G)-f(s,t,G-v)$$
where f(s,t,G) is the maximum flow from s to t in G and f(s,t,G-v) in G without the node v.
For `netflowmode="frac"`

it returns dependencies in the form, similar to shortest path dependencies:
$$\delta(u,s) = \sum_{t \in V} \frac{f(s,t,G)-f(s,t,G-v)}{f(s,t,G)}$$

*'depend_curflow'* returns pairwise dependencies based on current flow. The relation is
based on the same idea as 'depend_sp' and 'depend_netflow'. However, instead of considering
shortest paths or network flow, the current flow (or equivalent: random walks) between nodes
are of interest. See (Newman, 2005) for details.

*'depend_exp'* returns pairwise dependencies based on 'communicability':
$$\delta(u,s)=\sum_{t \in V} \frac{exp(A)_{st}-exp(A+E(u))_{st}}{exp(A)_{st}},$$
where E(u) has nonzeros only in row and column u, and
in this row and column has -1 if A has +1. See (Estrada et al., 2009) for additional details.

*'depend_rsps'*. Simple randomized shortest path dependencies.
The simple RSP dependency of a node u with respect to absorbing paths from s to t,
is defined as the expected number of visits through u over all s-t-walks. The
parameter `rspxparam`

is the "inverse temperature parameter".
If it converges to infinity, only shortest paths are considered and the expected
number of visits to a node on a shortest path approaches the probability of
following that particular path. When the parameter converges to zero, then the
dependencies converge to the expected number of visits to a node over all absorbing
walks with respect to the unbiased random walk probabilities. This means for undirected networks,
that the relations converge to adjacency. See (Kivimäki et al., 2016) for details.

*'depend_rspn'* Net randomized shortest path dependencies.
The parameter `rspxparam`

is the "inverse temperature parameter". The asymptotic
for the infinity case are the same as for 'depend_rsps'. If the parameter approaches zero, then
it converges to 'depend_curflow'. The net randomized shortest path dependencies
are closely related to the random walk interpretation of current flows.
See (Kivimäki et al., 2016) for technical details.

The function `FUN`

is used to transform the indirect
relation. See transform_relations for predefined functions and additional help.

## References

Chebotarev, P., 2012. The walk distances in graphs. *Discrete Applied Mathematics*, 160(10), pp.1484-1500.

Chebotarev, P., 2011. A class of graph-geodetic distances generalizing the shortest-path and
the resistance distances. *Discrete Applied Mathematics* 159,295-302.

Noh, J.D. and Rieger, H., 2004. Random walks on complex networks. *Physical Review Letters*, 92(11), p.118701.

Freeman, L.C., Borgatti, S.P., and White, D.R., 1991.
Centrality in Valued Graphs: A Measure of Betweenness Based on Network Flow. *Social Networks* 13(2), 141-154.

Newman, M.E., 2005. A measure of betweenness centrality based on random walks. *Social Networks*, 27(1), pp.39-54.

Estrada, E., Higham, D.J., and Hatano, N., 2009.
Communicability betweenness in complex networks. *Physica A* 388,764-774.

Kivimäki, I., Lebichot, B., Saramäki, J., and Saerens, M., 2016.
Two betweenness centrality measures based on Randomized Shortest Paths
*Scientific Reports* 6: 19668

## See also

aggregate_positions to build centrality indices, positional_dominance to derive dominance relations

## Examples

```
library(igraph)
data("dbces11")
# shortest path distances
D <- indirect_relations(dbces11, type = "dist_sp")
# inverted shortest path distances
D <- indirect_relations(dbces11, type = "dist_sp", FUN = dist_inv)
# shortes path dependencies (used for betweenness)
D <- indirect_relations(dbces11, type = "depend_sp")
# walks attenuated exponentially by their length
W <- indirect_relations(dbces11, type = "walks", FUN = walks_exp)
```