我正在使用R編程在複雜網絡中查找有影響的節點。我想使用度中心度,這意味着一個節點在一個圖中具有的鄰居數量。我有一個圖表和每個節點的程度中心性。現在我想知道在我們開始從每個節點傳播病毒的特定時間內會有多少節點被感染。根據我的研究,我應該使用我在「igraph」包中找到的SIR(易感染,感染,恢復)流行病模型,問題是我無法指定起始節點。看來這個函數基於SIR方程:設置在網絡中傳播病毒的起始節點
s'= -(beta)SI
I' = (beta)SI - (gamma)I
R' = (gamma)I
其中beta是感染參數,gamma是恢復參數。 這裏是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
}
看來,大部分的工作是在「R_igraph_sir」正在做,但我無法找到該包中這樣的功能。 有什麼方法可以設置起始節點嗎?
我想你會在支持R包的.c實現中找到你正在尋找的代碼:https://github.com/igraph/igraph/blob/master/src/sir。c 如果不重新編譯R包,您將無法更改 –
浪費了我的編輯,但還有一點評論:您將在前面提到的sir.c中查看第170行 具體而言,您將不得不設置最初感染到您選擇的節點。 –
你可能也想看看'EpiModel'包中實現的隨機網絡模型。我還沒有試過這個軟件包,但似乎可以使用設置哪些節點最初感染('status.vector')並使用'nwstats'參數設置網絡信息,例如度分佈。 – jac