查找适合在非优化模型中使用的非参数模型的渐变函数

时间:2013-12-13 05:56:31

标签: r statistics mathematical-optimization derivative mgcv

我有一个模型,y = f(x,z,a)。我想优化该模型(最终受限制)。当具有梯度函数时,R中的数值优化器快得多。但是我的模型非参数化,所以我不能轻易地分析得到梯度。是否有某种方法可以获得渐变函数 - 类似于我认为拟合的模型对象,以及为其定义的预测方法 - 来自拟合模型?

这是一些虚拟代码:

定义变量:

x = runif(1000)*10-5
z = runif(1000)*10-5
a = runif(1000)*10-5
y = x^2+a^2+z^2 + (x*z)^2 (x*a)^2 +rnorm(1000)

适合模特:

library(mgcv)
m = gam(y~s(a)+te(a,z)+te(x,z))
summary(m)
par(mfrow=c(1,3))
plot(m,scheme=2)

最小化以获得最小的y:

f = function(par){
    predict(m,newdata = data.frame(x=par[1],z=par[2],a=par[3]))
    }

o = optim(par=c(0,0,0),fn=f)

我想要的是渐变对象,以便我可以定义

g = function(par){
    predict(MY.HYPOTHETICAL.GRADIENT.OBJECT,newdata = data.frame(x=par[1],z=par[2],a=par[3]))
    }

然后运行

o = optim(par=c(0,0,0),fn=f,gr=g,method="BFGS")

......鉴于大量数据和复杂的模型和目标函数,这将会快得多。

我想做的是什么?

0 个答案:

没有答案