私は最尤推定量に取り組んでおり、パラメータの1つはdigamma関数を使って推定されています。私はunirootを使用して方程式を解くことを試みていますが、そうすることはできません。ここに私のコードは次のとおりです。digimma関数のルーツR
dig = function(alpha){
digamma(2 + alpha) - digamma(alpha) - (1/(2+alpha)) + (2/(2+alpha))
}
curve(dig, from = 0, to = 10)
uniroot(dig, lower = 0, upper = 10)
これは、次のエラーを生成します。
Error in uniroot(dig, lower = 0, upper = 10) : f.lower = f(lower) is NA
In addition: Warning messages:
1: In digamma(alpha) : NaNs produced
2: In digamma(alpha) : NaNs produced
最初のエラーは、ソートの曲線に基づいて理にかなっているが、2番目は私がこだわっています。私はdigamma関数のルーツを見つける方法を誤解している可能性があります。あるいは、数値パッケージ(多分rootsolve?)がRに役立つかもしれません。私がここで何が欠けているかわからない - ヒントをいただければ幸いです。ありがとう!
を検討 – MichaelChirico
...また 'dig(0)'は 'NaN'を返します。カーブからは、(0,10)の区間に根がないことは明らかですので、なぜunirootを使用しているのか分かりません。 – nicola