Calculates the Google PageRank for the specified vertices.
page_rank(
graph,
algo = c("prpack", "arpack"),
vids = V(graph),
directed = TRUE,
damping = 0.85,
personalized = NULL,
weights = NULL,
options = NULL
)
A named list with entries:
A numeric vector with the PageRank scores.
The eigenvalue corresponding to the eigenvector with the page rank scores. It should be always exactly one.
Some information about the underlying
ARPACK calculation. See arpack
for details. This entry is
NULL
if not the ARPACK implementation was used.
The graph object.
Character scalar, which implementation to use to carry out the
calculation. The default is "prpack"
, which uses the PRPACK library
(https://github.com/dgleich/prpack). This is a new implementation in igraph
version 0.7, and the suggested one, as it is the most stable and the fastest
for all but small graphs. "arpack"
uses the ARPACK library, the
default implementation from igraph version 0.5 until version 0.7.
The vertices of interest.
Logical, if true directed paths will be considered for directed graphs. It is ignored for undirected graphs.
The damping factor (‘d’ in the original paper).
Optional vector giving a probability distribution to calculate personalized PageRank. For personalized PageRank, the probability of jumping to a node when abandoning the random walk is not uniform, but it is given by this vector. The vector should contains an entry for each vertex and it will be rescaled to sum up to one.
A numerical vector or NULL
. This argument can be used
to give edge weights for calculating the weighted PageRank of vertices. If
this is NULL
and the graph has a weight
edge attribute then
that is used. If weights
is a numerical vector then it used, even if
the graph has a weights
edge attribute. If this is NA
, then no
edge weights are used (even if the graph has a weight
edge attribute.
This function interprets edge weights as connection strengths. In the
random surfer model, an edge with a larger weight is more likely to be
selected by the surfer.
A named list, to override some ARPACK options. See
arpack
for details. This argument is ignored if the PRPACK
implementation is used.
Tamas Nepusz ntamas@gmail.com and Gabor Csardi csardi.gabor@gmail.com
For the explanation of the PageRank algorithm, see the following webpage: http://infolab.stanford.edu/~backrub/google.html, or the following reference:
Sergey Brin and Larry Page: The Anatomy of a Large-Scale Hypertextual Web Search Engine. Proceedings of the 7th World-Wide Web Conference, Brisbane, Australia, April 1998.
The page_rank
function can use either the PRPACK library or ARPACK
(see arpack
) to perform the calculation.
Please note that the PageRank of a given vertex depends on the PageRank of all other vertices, so even if you want to calculate the PageRank for only some of the vertices, all of them must be calculated. Requesting the PageRank for only some of the vertices does not result in any performance increase at all.
Sergey Brin and Larry Page: The Anatomy of a Large-Scale Hypertextual Web Search Engine. Proceedings of the 7th World-Wide Web Conference, Brisbane, Australia, April 1998.
Other centrality scores: closeness
,
betweenness
, degree
g <- sample_gnp(20, 5/20, directed=TRUE)
page_rank(g)$vector
g2 <- make_star(10)
page_rank(g2)$vector
# Personalized PageRank
g3 <- make_ring(10)
page_rank(g3)$vector
reset <- seq(vcount(g3))
page_rank(g3, personalized=reset)$vector
Run the code above in your browser using DataLab