使用R在随机模拟中添加值

时间:2013-05-02 12:15:26

标签: r

在这里,我设法在用户的帮助下,从每次模拟中提取离散形式的提取时间,例如1,2,3 ...,50。但是,由于20-21或更多的区间没有值,是否有任何编码,以便我可以在自己内部添加值?因为,如果该时间间隔没有读数,则表示读数在下一个间隔之前是相同的。我使用的编码如下:

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:1,FUN=function(x) 
ssa(x0,a,nu,parms,tf=50)$data) 
out a<-as.data.frame(out) 
idx <- diff(ceiling(a$V1)) == 1 a[idx,]

1 个答案:

答案 0 :(得分:0)

## change ==1 to >0
idx <- diff(ceiling(a$V1)) > 0 

## get discrete time series
discrete.data <- a[idx,]

## get the last time step value
end.time <- ceiling(tail(discrete.data$V1,1))

## create an empty data frame with all time steps
new.df <- data.frame(t=0:end.time, S=0, E=0, I=0, R=0)

## replace only those time steps that have valid values
new.df[new.df$t %in% ceiling(discrete.data$V1),2:5] <- discrete.data[,2:5]  

如果有必要,NA可以替换缺失值,具体取决于您希望如何处理它们。