これは単純であるべきだと思います。R の一連の微分方程式を数値的に解いています。ただし、いくつかのグループのパラメーターについて一連の微分方程式をテストする必要があるため、ループを使用しています。問題は、すべてのパラメータ セットで同じ値が表示されることです。これは正しくありません。
contrand<-sample(paste0("p",1:18),
size=nb, replace=TRUE,
prob=c(0, 0, 0.052, 0.013, 0.033, 0.017, 0.002,0.026, 0.005, 0.093,
0.186, 0.006, 0.001, 0.004, 0.0044, 0.4395, 0.005, 0.113))
z.cont <- data.frame(matrix(rep(NA,1*nb),nrow=nb,ncol=1))
for (i in 1:nb){
params <- get(contrand[i])
model<-function(t,x,params){
S<-x[1]
I<-x[2]
R<-x[3]
with(as.list(params),{
N<- S+I+R
dS <- birth*N - beta*S*I- death*S
dI <- beta*S*I - gamma*I - death*I
dR <- gamma*I - death*R
dx <- c(dS,dI,dR)
list(dx)
})
}
out<-as.data.frame(lsoda(xstart,times,model,params))
I<-as.data.frame(out$I)
z.cont[i,1] <- Iv[157,]
}