【发布时间】:2018-01-22 21:10:45
【问题描述】:
我试图在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设置为c(1, 1) - ...并将optim的初始值设置为c(0.5, 0.5), or settingf` 到c(2, 2) - ...具有相同的初始值,我得到了预期的结果。将这些值中的一个或另一个设置为较大的量级会导致结果不正确。
标签: r function for-loop optimization sapply