我有一个函数,在要求计算-logLik给定参数时工作得很好。但是,如果我尝试优化该函数,它将返回一条错误消息。我熟悉debug()
来解决函数的问题,但是我将如何去调试一个功能更强大的函数?函数的调试优化
Lik <- function(params, data) {
....
return(-log(**likelihood equation**))
}
这些工作!
Lik(params=c(3,10,2,9,rowMeans(data[1,])[1]), data = data1)
Lik(params=c(3,10,2,9.5,rowMeans(data[1,])[1]), data = data1)
基因1 32.60705
基因1 32.31657
这不起作用!
optim(params=c(3,10,2,9,rowMeans(data[1,])[1]), data = data1, Lik, method = "BFGS")
错误的Optim(PARAMS = C(3,10,2,9,rowMeans(数据[1,])[1]),数据= DATA1,: 不能强制类型 '闭合'到型“双重”的矢量
查看'?optim'来了解函数应该如何定义。 –
其他选项将传递给该函数,因此将数据作为参数很好。问题是要优化的参数的'optim'参数名称是'par',而不是'params'。你不需要改变你的'Lik'函数,只需要将参数优化为第一个参数即可,名字无关紧要。 – Aaron