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", ... )

graph | Any class of accepted graph format (see |
---|---|

n | Number of leaders |

cmode | Passed to |

lead.ties.method | Passed to |

geodist.args | Passed to |

x | An object of class |

y | Ignored. |

vertex.size | Either a numeric scalar or vector of size \(n\), or any of the following values: "indegree", "degree", or "outdegree" (see details). |

minmax.relative.size | Passed to |

lead.cols | Character vector of length |

vshapes | Character scalar of length 2. Shapes to identify leaders (mentors) and followers respectively. |

add.legend | Logical scalar. When |

main | Character scalar. Passed to |

... | Further arguments passed to |

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.

Integer scalar. The resulting number of leaders (could be greater than `n`

)

The original graph used to run the algorithm.

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. http://journals.sagepub.com/doi/abs/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)#> name degree isleader match #> 1 1 4 FALSE 49 #> 2 2 2 FALSE 17 #> 3 3 2 FALSE 22 #> 4 4 3 FALSE 20 #> 5 5 3 FALSE 6 #> 6 6 6 TRUE 6#> #> 15 17 20 22 33 43 49 6 9 #> 7 5 2 5 5 3 8 12 3