Implementes the algorithm described in Valente and Davis (1999)
mentor_matching(
graph,
n,
cmode = "indegree",
lead.ties.method = "average",
geodist.args = list()
)leader_matching(
graph,
n,
cmode = "indegree",
lead.ties.method = "average",
geodist.args = list()
)
# S3 method for diffnet_mentor
plot(
x,
y = NULL,
vertex.size = "degree",
minmax.relative.size = getOption("diffnet.minmax.relative.size", c(0.01, 0.04)),
lead.cols = grDevices::topo.colors(attr(x, "nleaders")),
vshapes = c(Leader = "square", Follower = "circle"),
add.legend = TRUE,
main = "Mentoring Network",
...
)
An object of class diffnet_mentor and data.frame with the following columns:
Character. Labels of the vertices
Numeric. Degree of each vertex in the graph
Logical. TRUE when the vertex was picked as a leader.
Character. The corresponding matched leader.
The object also contains the following attributes:
Integer scalar. The resulting number of leaders (could be greater than n)
.
The original graph used to run the algorithm.
Any class of accepted graph format (see netdiffuseR-graphs).
Number of leaders
Passed to dgr.
Passed to rank
Passed to approx_geodesic.
An object of class diffnet_mentor.
Ignored.
Either a numeric scalar or vector of size \(n\), or any of the following values: "indegree", "degree", or "outdegree" (see details).
Passed to rescale_vertex_igraph.
Character vector of length attr(x,"nleaders"). Colors
to be applied to each group. (see details)
Character scalar of length 2. Shapes to identify leaders (mentors) and followers respectively.
Logical scalar. When TRUE generates a legend to distinguish
between leaders and followers.
Character scalar. Passed to title
Further arguments passed to plot.igraph
The algorithm works as follows:
Find the top n individuals ranking them by dgr(graph, cmode).
The rank is computed by the function rank. Denote this set M.
Compute the geodesic matrix.
For each v in V do:
Find the mentor m in M such that is closest to v
Were there a tie, choose the mentor that minimizes the average
path length from v's direct neighbors to m.
If there are no paths to any member of M, or all have the
same average path length to v's neighbors, then assign one
randomly.
Plotting is done via the function plot.igraph.
When vertex.size is either of "degree", "indegree", or
"outdegree", vertex.size will be replace with dgr(.,cmode = )
so that the vertex size reflects the desired degree.
The argument minmax.relative.size is passed to rescale_vertex_igraph
which adjusts vertex.size so that the largest and smallest vertices
have a relative size of minmax.relative.size[2] and
minmax.relative.size[1] respectively with respect to the x-axis.
Valente, T. W., & Davis, R. L. (1999). Accelerating the Diffusion of Innovations Using Opinion Leaders. The ANNALS of the American Academy of Political and Social Science, 566(1), 55–67. tools:::Rd_expr_doi("10.1177/000271629956600105")
# A simple example ----------------------------------------------------------
set.seed(1231)
graph <- rgraph_ws(n=50, k = 4, p = .5)
# Looking for 3 mentors
ans <- mentor_matching(graph, n = 3)
head(ans)
table(ans$match) # We actually got 9 b/c of ties
# Visualizing the mentor network
plot(ans)
Run the code above in your browser using DataLab