该程序是一个简单的流行病模拟器,除了一件事以外,大部分都是完成的。我希望在一个图上得到每个时间步的受感染数量(它可以是任何类型的图,最优选的是线图)。
这是整个剧本的关键部分:
for (i in 1:simlength) {
discordant.links <- which(infected[links[,1]]+infected[links[,2]]==1)
transmit <- rbinom(length(discordant.links),1,p.t)
transmitter.links <- discordant.links[transmit==1]
nodes.of.transmitter.links <- unique(as.vector(links[transmitter.links,1:2]))
infected[nodes.of.transmitter.links] <- 1
infected[infected==1] <- sample(c(1,2),length(infected[infected==1]),replace=TRUE,prob=c(1-p.r,p.r))
if (plot.spread) {
node.colour[infected==1] <- "red"
node.colour[infected==2] <- "green"
plot(network.i,layout=fixlayout, main=paste("Time =", i), vertex.color=node.colour)
}
}
这为我绘制了一个关于感染如何在网络中传播的图表。 simlength
是时间步长的总数。
我希望修改此算法,使其获得每个时间步的感染总数。请注意,红色节点([infected==1]
)是群体中受感染的个体。