【发布时间】:2020-12-04 07:31:42
【问题描述】:
我正在对大流行数据进行模拟,我计算了 MLE,其值例如为 0.99。这是用于 SEIR 建模的,所以我有一个 S、E、I 和 R 的数据框。现在我正在运行相同的模拟,但我想复制模拟 100 次,然后考虑平均值。
我的模拟代码,如下。
### Pre-define VALUES
# 50 days
sumofnew_infec<-rep(0,50)
Snew<-rep(0,50)
Enew<-rep(0,50)
Inew<-rep(0,50)
Rnew<-rep(0,50)
Snew[1]<-Current_dayStats$St[1]
Inew[1]<-Current_dayStats$It[1]
Enew[1]<-Current_dayStats$Et[1]
Rnew[1]<-Current_dayStats$Rt[1]
E_I<-0
I_R<-0
### SIMULATION STARTS HERE
for(i in 1:49)
{
newinfections<-rbinom(n=Snew[i],size=1,prob=(1-MLE^Inew[i]))
sumofnew_infec[i]<-sum(newinfections)
Snew[i+1]<-Snew[i]-sumofnew_infec[i]
if(i>0)
{
E_I<-sum(sumofnew_infec[i])
#E_I<-0
I_R<-sum(Enew[i])
}
else
{
E_I<-sumofnew_infec[i]
I_R<-sum(Enew[i])
}
Enew[i+1]<-Enew[i]-sumofnew_infec[i]+E_I
Inew[i+1]<-Inew[i]+E_I-I_R
Rnew[i+1]<-I_R+Rnew[i]
}
sumofnew_infec
Snew
Enew
Inew
Rnew
我想将结果存储在一个矩阵中,例如
S = S_{i,j}
其中 S_{i,j} = S[i] = 第 i 天的易感人群,在第 j 次模拟中。
然后我可以找到 S_{i,1}, S_{i,2}, ..., S_{i,100} 的平均值,这将是第 i 天易感者数量的平均模型预测。最后,我可以绘制所有这些平均值以查看平均易感过程。这就是整体,我正在尝试使用复制,在函数之上创建,但这不起作用。任何帮助,将不胜感激。提前致谢。
编辑: 我在一个函数中创建了模拟。
> do_once()
[1] 180 176 173 167 155 136 105 57 19 3 1 0 0 0 0 0 0 0 0 0 0 0 0
[24] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[47] 0 0 0 0
【问题讨论】:
标签: r dataframe optimization statistics data-modeling