R中digamma函数的根
Roots of digamma function in R
我正在研究最大似然估计器,其中一个参数是使用 digamma 函数估计的。我正在尝试使用 uniroot 来求解方程,但我无法这样做。这是我的代码:
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
第一个错误根据曲线是有道理的,但第二个错误让我卡住了。我完全有可能误解了如何找到 digamma 函数的根,或者 R 中有一个数值包(也许是 rootsolve?)可以提供帮助。不确定我在这里遗漏了什么 - 任何提示将不胜感激。谢谢!
考虑以下因素
curve(dig, from = 0.01, to = 10)
uniroot(dig, lower = 0.01, upper = 10)
Error in uniroot(dig, lower = 0.01, upper = 10)
:
f()
values at end points not of opposite sign
我正在研究最大似然估计器,其中一个参数是使用 digamma 函数估计的。我正在尝试使用 uniroot 来求解方程,但我无法这样做。这是我的代码:
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
第一个错误根据曲线是有道理的,但第二个错误让我卡住了。我完全有可能误解了如何找到 digamma 函数的根,或者 R 中有一个数值包(也许是 rootsolve?)可以提供帮助。不确定我在这里遗漏了什么 - 任何提示将不胜感激。谢谢!
考虑以下因素
curve(dig, from = 0.01, to = 10)
uniroot(dig, lower = 0.01, upper = 10)
Error in
uniroot(dig, lower = 0.01, upper = 10)
:f()
values at end points not of opposite sign