我想拟合一条曲线,模型如下图所示。
在这个模型中,有四个参数(alpha,beta,gamma和Rd)要优化,现在I和P(I)的数据已经存在,DEoptim()
的函数DEoptim
使用R
中的包,这是我的代码。
library(DEoptim)
I <-c(1.200,49.600,99.200,148.500,199.300,399.375,598.200,799.500,1099.600,1398.100,1698.600,1844.333)
pn <-c(-0.0495485,0.4166522,0.8954644,1.4592700,1.9931400,2.9114072,3.0808183,3.2427603,3.3916783,3.6078660,4.1020850,4.0947913)
fn.piao <- function(alpha,beta,gamma,Rd){
pn <- (alpha-alpha*beta*par)/(1+gamma*par)-Rd
}
lower <- c(0,0,0,0)
upper <- c(1,1,1,100)
DE.control <- list(itermax=500,NP=100)
DE.piao <- DEoptim(lower,upper,fn=fn.piao,par=par,control=DE.control)
但是R显示如下错误
DEoptim中的错误(lower,upper,fn = fn.piao,par = par,control = DE.control):对象不是矩阵
在论文(KM Mullen2011)中,它说 i lower 元素和 upper 适用于 i th参数。所以我设置矢量 lower 和 upper 来表示alpha,beta,gamma和Rd.i想知道我的错在哪里以及如何调整?