我有一個函數,在要求計算-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