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