Ich arbeite an einem Maximum-Likelihood-Schätzer, und einer der Parameter wird mit der Digamma-Funktion geschätzt. Ich versuche, Uniroot zu verwenden, um die Gleichung zu lösen, bin aber dazu nicht in der Lage. Hier ist mein Code:Wurzeln der Digamma-Funktion in 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)
Dies erzeugt den folgenden Fehler:
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
Der erste Fehler Art von Sinn macht, auf der Kurve basiert, aber die zweite hat mir stecken. Es ist durchaus möglich, dass ich missverstände, wie man die Wurzeln der Digamma-Funktion findet, oder dass es ein numerisches Paket (vielleicht Rootsolve?) In R gibt, das helfen könnte. Ich bin mir nicht sicher, was ich hier vermisse - alle Tipps wären willkommen. Vielen Dank!
'gamma (0)' ist nicht definiert. – MichaelChirico
... und auch Ihre 'dig (0)' gibt 'NaN' zurück. Von der Kurve aus ist es ziemlich klar, dass es im (0,10) Intervall keine Wurzel gibt, also verstehe nicht, warum du 'uniroot' verwendest. – nicola