Je travaille sur la recherche de nœuds influents dans des réseaux complexes en utilisant la programmation R. Je veux utiliser la centralité des degrés, ce qui signifie le nombre de voisins d'un nœud dans un graphique. J'ai un graphique et le degré de centralité de chaque nœud. Maintenant, je veux savoir combien de nœuds seront infectés dans un délai précis lorsque nous commencerons à propager le virus de chaque nœud. selon mes études je devrais utiliser le modèle épidémique SIR (sensible, infecté, récupéré) que j'ai trouvé dans le paquet "igraph", le problème est que je ne peux pas spécifier le noeud de départ. Il semble que cette fonction fonctionne sur la base des équations SIR:définir le nœud de départ pour la propagation d'un virus dans un réseau
s'= -(beta)SI
I' = (beta)SI - (gamma)I
R' = (gamma)I
où bêta est le paramètre d'infection et gamma est le paramètre de récupération. est ici le code igraph SIR:
function (graph, beta, gamma, no.sim = 100)
{
if (!is_igraph(graph)) {
stop("Not a graph object")
}
beta <- as.numeric(beta)
gamma <- as.numeric(gamma)
no.sim <- as.integer(no.sim)
on.exit(.Call("R_igraph_finalizer", PACKAGE = "igraph"))
res <- .Call("R_igraph_sir", graph, beta, gamma, no.sim,
PACKAGE = "igraph")
class(res) <- "sir"
res
}
Il semble que la plupart des travaux sont effectués dans « R_igraph_sir » mais je ne peux pas trouver une telle fonction dans ce paquet. Y a-t-il un moyen de définir le noeud de départ?
Je pense que vous trouverez le code que vous recherchez dans l'implémentation .c supportant le paquet R ici: https://github.com/igraph/igraph/blob/master/src/sir. Vous ne serez pas en mesure de le changer sans recompiler le paquet R –
J'ai perdu ma modification, mais il y a une autre remarque: Vous seriez en train de regarder la ligne 170 dans le sir.c précédemment mentionné Plus précisément, vous devrez définissez cette initiale infectée sur le noeud de votre choix. –
vous pouvez également regarder les modèles de réseau stochastique implémentés dans le paquet 'EpiModel'. Je n'ai pas encore essayé le paquet, mais il semble que l'on puisse utiliser l'ensemble des nœuds qui sont initialement infectés ('status.vector') et définir des informations réseau telles que la distribution des degrés en utilisant les arguments' nwstats'. – jac