在R中使用'optim()'求解两个参数?

在R中使用'optim()'求解两个参数?,r,function,for-loop,optimization,sapply,R,Function,For Loop,Optimization,Sapply,我试图在dbeta()中找到shape1和shape2,这样dbeta()中两个输入值的答案:.6和.8变成3 我正在使用下面的optim(),但没有得到确切的结果,也就是说,我希望得到shape1和shape2的值,当与.6和.8一起使用时,会给出3和3,但它们没有,为什么 f <- function(x) { y <- c(3, 3) - dbeta(c(.6, .8), shape1 = x[1], shape2 = x[2]) } AA = optim(c(1, 1

我试图在
dbeta()
中找到
shape1
shape2
,这样
dbeta()
中两个输入值的答案:
.6
.8
变成
3

我正在使用下面的
optim()
,但没有得到确切的结果,也就是说,我希望得到
shape1
shape2
的值,当与
.6
.8
一起使用时,会给出
3
3
,但它们没有,为什么

f <- function(x) {
 y <- c(3, 3) - dbeta(c(.6, .8), shape1 = x[1],  shape2 = x[2])  
}

AA = optim(c(1, 1), function(x) sum(f(x)^2), control = list(reltol = (.Machine$double.eps))) 

parms = unname(AA$par)

dbeta(c(.6, .8), parms[1], parms[2]) # Here I expect to get `3` for `.6` and `.8` but I don't.

f我简单地看了一下这个。我认为拟合没有任何问题:下面是似然曲面的图片:

library(emdbook)
cc <- curve3d(g(c(x,y)),xlim=c(1,20),ylim=c(1,20),
              sys3d="none")
pp <- which(cc$z==min(cc$z),arr.ind=TRUE)
png("betasurf.png")
with(cc,image(x,y,z))
points(parms[1],parms[2],pch=16)
points(cc$x[pp[1]],cc$y[pp[2]],pch=1)
dev.off()

我不确定这里发生了什么,但当我仔细研究一下参数时,例如将
f
设置为
c(1,1)-…
并将
optim
的初始值设置为c(0.5,0.5)
,或将
f`设置为
c(2,2)-…
,我得到了预期的结果。如果将这些值中的一个或另一个设置为更大的数值,则会抛出结果。嗨,本,我想知道你是否知道这个问题的答案?
png("betatmp.png")
curve(dbeta(x,parms[1],parms[2]),from=0,to=1)
points(c(0.6,0.8),c(3,3),pch=16)
dev.off()