私は、与えられたパラメータ-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)
GENE1 32.60705
GENE1 32.31657
これは動作しません! OPTIMで
optim(params=c(3,10,2,9,rowMeans(data[1,])[1]), data = data1, Lik, method = "BFGS")
エラー(のparams = Cの(3、10、2、9、rowMeans(データ[1])[1])、データ= DATA1、: タイプを強制することができない '閉鎖'オブジェクト名は、ユーザーが作成した(または作成する)として、「ダブル」タイプのベクトルに
関数をどのように定義すべきかについては '?optim'を見てください。 –
さらなるオプションが関数に渡されるので、データを引数として持つことができます。問題は、最適化するパラメータの 'optim'パラメータ名が' params'ではなく 'par'であることです。 'Lik'関数を変更する必要はありません。最初の引数として最適化するパラメータが必要です。名前は重要ではありません。 – Aaron