我正在尝试计算分布参数来计算对数似然值。虽然“optim”似乎适用于下面定义的函数,但很明显,每次我改变起始值时,它都会改变输出。我正在尝试使用“optimize”代替,但我一直收到此错误消息
Error in if (par[1] < 0 | par[2] < 0) { :
missing value where TRUE/FALSE needed
我不知道该如何处理这个问题,所有在互联网上修复这个错误的方法似乎都不起作用。请帮助,提前谢谢!
optim_cBeta <- function(par)
{
if ( par[1]< 0 | par[2] < 0)
{
output_cBeta = -Inf
} else {
output_cBeta = ( qbeta(0.025,par[1],par[2]) - 0.06)^2 +
( qbeta(0.5,par[1],par[2]) - 0.07 )^2
+ ( qbeta(0.975,par[1],par[2]) - 0.08 )^2
}
print(c(output_cBeta, par[1],par[2]))
return(output_cBeta)
}
优化(optim_cBeta,下限= c(0,120),上限= c(100,3000),最大值= FALSE)
我试图在函数内部定义par[1] = a,par[2] = B,并替换目标函数“output_cBeta”中的这些参数,但仍然得到相同的错误。
1条答案
按热度按时间gt0wga4j1#
请参阅https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html:您需要在调用中使用
x0
进行优化。