在R中优化生成对数似然函数的分布参数时出错

hlswsv35  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(290)

我正在尝试计算分布参数来计算对数似然值。虽然“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”中的这些参数,但仍然得到相同的错误。

相关问题