diffusr (version 0.1.4)

random.walk: Graph diffusion using a Markov random walk

Description

A Markov Random Walk takes an inital distribution p0 and calculates the stationary distribution of that. The diffusion process is regulated by a restart probability r which controls how often the MRW jumps back to the initial values.

Usage

random.walk(p0, graph, r = 0.5, niter = 10000, thresh = 1e-04,
  do.analytical = FALSE, correct.for.hubs = FALSE)

# S4 method for numeric,matrix random.walk(p0, graph, r = 0.5, niter = 10000, thresh = 1e-04, do.analytical = FALSE, correct.for.hubs = FALSE)

# S4 method for matrix,matrix random.walk(p0, graph, r = 0.5, niter = 10000, thresh = 1e-04, do.analytical = FALSE, correct.for.hubs = FALSE)

Arguments

p0

an n x p-dimensional numeric non-negative vector/matrix representing the starting distribution of the Markov chain (does not need to sum to one).

graph

an (n x n)-dimensional numeric non-negative adjacence matrix representing the graph

r

a scalar between (0, 1). restart probability if a Markov random walk with restart is desired

niter

maximal number of iterations for computation of the Markov chain. If thresh is not reached, then niter is used as stop criterion.

thresh

threshold for breaking the iterative computation of the stationary distribution. If the absolute difference of the distribution at time point $t-1$ and $t$ is less than thresh, then the algorithm stops. If thresh is not reached before niter, then the algorithm stops as well.

do.analytical

boolean if the stationary distribution shall be computed solving the analytical solution or rather iteratively

correct.for.hubs

if TRUE multiplies a correction factor to the nodes, such that the random walk gets not biased to nodes with high degree. In that case the original input matrix will be normalized as: $$ P(j | i) = 1 /degree(i) * min(1, degree(j)/degree(j))$$ Note that this will not consider edge weights.

Value

returns a list with the following elements

  • p.inf the stationary distribution as numeric vector

  • transition.matrix the column normalized transition matrix used for the random walk

References

Tong, H., Faloutsos, C., & Pan, J. Y. (2006), Fast random walk with restart and its applications. Koehler, S., Bauer, S., Horn, D., & Robinson, P. N. (2008), Walking the interactome for prioritization of candidate disease genes. The American Journal of Human Genetics

Examples

Run this code
# NOT RUN {
 # count of nodes
 n <- 5
 # starting distribution (has to sum to one)
 p0    <- as.vector(rmultinom(1, 1, prob=rep(.2, n)))
 # adjacency matrix (either normalized or not)
 graph <- matrix(abs(rnorm(n*n)), n, n)
 # computation of stationary distribution
 pt    <- random.walk(p0, graph)

# }

Run the code above in your browser using DataCamp Workspace