我构建了一个模型,并希望为状态值插入一些循环,但它不起作用。我将模型简化如下,ia,ib,ic,id是状态值的矩阵。有没有人有解决方案?
Mod<-function(t, parms){
derivs<-function(t, state, parms){
with(as.list(c(state, parms)),{
dA=k1*a-k2*b
dB=k1*a+aa
dC=k2*c-bb
dD=k2*d-k1*c
return(list(c(dA,dB,dC,dD),
IRAB=dA/dB))
})
}
betavec <- seq(1,14,by=1)
res <- as.vector(data.frame(1:5, 1:14),mode="numeric")
for (k in seq_along(betavec)){
res[[k]]<-ode(y=c(a=ia[1,k],b=ib[1,k]*eAA[1,k],c=ic[1,k]*eAA[1,k],d=id[1,k]),times=time,func=derivs,parms=parms, method ="rk4")
}
}
pars<-c( k1=1,k2=1)
Objective<-function(x, parset=names(x)){
pars[parset]<-x
tout<-d1$time
out<-Mod(tout,pars)
return(modCost(obs=d1, model=out, y="val", err="err"))
}
lower = c( k1=0, k2=0)
upper=c( K1=10, K2=10)
m1<-modFit(p=pars, f=Objective,lower=lower, upper=upper, method="Marq")
summary(m1)