运行MLE遇逻辑值缺失错误,需保留fixed参数求解决
解决MLE中fixed参数导致的逻辑值缺失错误
错误原因
使用stats4::mle时,若fixed参数包含非待估计变量(如你的y),同时lower/upper是对应待估计参数(mu、sigma)的向量,函数会尝试检查所有固定参数是否在上下界范围内,但y没有对应的上下界值,导致检查时出现NA,触发missing value where TRUE/FALSE needed错误。
解决方案
将lower和upper改为列表形式,与待估计参数(start中的变量)一一对应,避免函数对固定参数进行不必要的上下界检查:
修正后的MLE执行代码
library(stats4) # 按待估计参数分别设置上下界,用列表绑定参数名与对应值 bound.lower <- list(mu = est$mean * 0.5, sigma = est$sd * 0.5) bound.upper <- list(mu = est$mean * 2.0, sigma = est$sd * 2.0) est.mle <- mle( minuslogl = likelihood.normal, start = list(mu = est$mean, sigma = est$sd), method = "L-BFGS-B", fixed = list(y = return.log), lower = bound.lower, upper = bound.upper )
补充说明
你的负似然函数无需修改,因为它的参数定义是正确的:mu、sigma是待估计参数,y是固定的观测值。通过列表形式指定上下界,函数只会检查待估计的mu和sigma是否在范围内,不会处理fixed中的y,从而规避错误。
内容的提问来源于stack exchange,提问作者Kevin Wang
相关产品推荐
相关产品推荐

