1

这是一些假数据和代码,用于最小化受参数解决方案必须位于每个参数范围内的约束的函数。但是我将如何指定约束以确保解决方案位于观察到的联合参数空间的范围内?在下面的示例中,十字在解处绘制,这显然在关节参数空间之外。

x =(rnorm(1000))
y = (rnorm(1000))
z = sqrt(exp(x)+exp(y))
plot(x,y,pch=19,col=z)
theta = c(.5,.5)
ui = rbind(
        c(1,0)
    ,   c(-1,0)
    ,   c(0,1)
    ,   c(0,-1)
    )
ci = c(
        min(x)
    ,   -max(x)
    ,   min(y)
    ,   -max(y)
    )
f = function(theta){
    x = theta[1]; y=theta[2]
    sqrt(exp(x)+exp(y))
    }
f(theta)
o = constrOptim(theta,f,control=list(fnscale=1),ci = ci,ui=ui,grad=NULL)
plot(x,y,pch=19,col=z)
points(o$par[1],o$par[2],cex=5,pch=3)

联合参数空间

4

1 回答 1

0

目前尚不清楚“联合参数空间”是什么意思。

如果您的意思是“图中的点”,那是一组有限的点:您有一个离散优化问题。您可以在所有点上进行评估f,并用 取最小值which.min

d <- cbind(x,y)[ z >= 1, ]
i <- which.min( apply(d, 1, f) )
points( d[i,,drop=FALSE], pch=3, cex=3 )

但是,如果您想使用您的点来定义平面的连接区域,则没有唯一的方法可以做到这一点。凸包是最明显的选择,但您的情节暗示了一个非凸区域 - 并且 constrOptim无法处理非凸约束。

于 2013-10-19T00:30:56.330 回答