2013-05-02 6 views
0

역학을위한 확률 적 시뮬레이션을 시뮬레이션 중입니다. 이산 시간에 어떻게 시뮬레이션합니까? 나는 아래의 코딩을 사용하여 연속적인 시간 동안 얻을 수 있었다.Gillespie 이산 시간의 확률 적 시뮬레이션 R

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 

이산 시간을 얻기 위해 코딩을 어떻게 변경해야합니까? 미리 감사드립니다.

답변

2

Gillespie 알고리즘 (this paper 참조)은 기본적으로 continuous-time Markov chain의 궤적을 시뮬레이트합니다 (discrete-event simulation 접근 방식 임).

광범위 speakig 이것은 out 각 이벤트는 연속적인 시간과 연관되는 것을 의미하고, 것으로 이렇게하면 사용 시뮬레이션 접근법에 고유 한 (즉, 하지 변경하기). 그러나

, 당신은 쉽게 시간에서 분리 된 지점에서 모델의 상태을 찾을 수 있습니다 : 그것은 높은 타임 스탬프 첫 번째 이벤트 전에 모델 의 상태입니다.

: 당신은 시간 2.00892..에 시간 1.999892..e_3에서 시간 1.932.., e_2에 반응 이벤트 e_1을 관찰합니다. 시간이 t=2.0 일 때 모델의 상태는 이벤트 e_2 이후에 이고 이벤트가 발생하기 전에 e_3 이벤트가 발생했습니다.