利用R在离散时间内的Gillespie随机模拟

时间:2013-05-02 12:03:24

标签: r simulation markov stochastic-process

我正在模拟流行病学的随机模拟。如何在离散时间内模拟它?我设法使用下面的编码获得连续时间。

library(GillespieSSA)    
parms <- c(beta=0.591,sigma=1/8,gamma=1/7)    
x0 <- c(S=50,E=0,I=1,R=0)    
a <- c("beta*S*I","sigma*E","gamma*I")    
nu <- matrix(c(-1,0,0, 1,-1,0, 0,1,-1, 0,0,1),nrow=4,byrow=TRUE)   
set.seed(12345)    
out <- lapply(X=1:10,FUN=function(x) ssa(x0,a,nu,parms,tf=50)$data)
out

我应该如何改变编码以获得离散时间?提前感谢。

1 个答案:

答案 0 :(得分:2)

Gillespie算法(参见this paper)基本上模拟continuous-time Markov chain的轨迹(它是discrete-event simulation方法)。

粗略地说,这意味着out中的每个事件都与连续时间相关联,并且这是您使用的模拟方法所固有的(即,不是< / em>易于改变。

然而,您可以在离散时间点轻松找到模型的状态 :它是之前模型的状态第一个具有更高时间戳的事件。

示例:您及时e_11.932.. e_21.999892..及时观察反应事件e_3 2.00892..。模型在t=2.0时的状态是事件e_2发生后的状态事件e_3发生之前的