共享参数的双函数跨数据集同步优化方法验证及rmoo实现问询
共享参数的多数据集同步优化问题
问题背景
- 两个模型函数需在不同数据集上同步优化,其中参数
kel为两个函数的共享参数,需保持同一优化值:- 模型1:
对应优化数据集:eq_1_optim = function(ka,kel,t){return(0.004*(exp(-kel*t)-exp(-ka*t)))}t1=c(0,0.3,0.7,1,1.5,4,6) p1=c(0,2.5,4,4.4,3.8,2,0.9) - 模型2:
对应优化数据集:eq_2_optim = function(kel,t){return(0.004*(exp(-kel*t)))}t2=c(0.01,0.1,0.5,1,8) p2=c(0.5,0.4,0.01,0.01,0.004)
- 模型1:
现有实现方案及疑问
我采用残差平方和(RSS)相加的方式构建目标函数,通过optim函数实现同步优化,代码如下。不确定该方法是否正确,是否有更成熟的替代方案:
t=list(t1,t2) observ = list(p1,p2) obj_fun = function(par,t,observed){ t1=t[[1]] t2=t[[2]] observed_1 = observed[[1]] observed_2 = observed[[2]] predicted_model_1 = eq_1_optim(par[1],par[2],t1) predicted_model_2 = eq_2_optim(par[2],t2) rss1 = sum((observed_1-predicted_model_1)^2) rss2 = sum((observed_2-predicted_model_2)^2) return(rss1+rss2) } fit = optim(par=c(5,0.3),fn = obj_fun,t=t,observed=observ,method = "L-BFGS-B",lower=c(0.5,0.01),upper=c(10,10))
补充疑问
这本质是两个需同步求解的目标函数(rss1和rss2),能否用rmoo包实现该优化?若可以,具体操作步骤是什么?
内容的提问来源于stack exchange,提问作者eod
相关产品推荐
相关产品推荐

