Sie haben gut damit begonnen, einen Ausdruck für die Wahrscheinlichkeit aufzuschreiben. Das ist einfacher zu erkennenY, ist die Summe von N unabhängig Normal(μ,σ2) Variablen, hat eine Normalverteilung mit Mittelwert Nμ und Varianz N.σ2, woher ist seine Wahrscheinlichkeit
L (y, N.) =12 πN.σ2- -- -- -- -- -- -√exp( -( y- N.μ)22 N.σ2) .
Lassen Sie uns mit seinem negativen Logarithmus arbeiten Λ = - logL , deren Minima den Maxima der Wahrscheinlichkeit entsprechen:
2 Λ ( N.) = log( 2 π) + log(σ2) + log( N.) +( y- N.μ)2N.σ2.
Wir müssen alle ganzen Zahlen finden , die diesen Ausdruck minimieren. Stell dir für einen Moment vor, dassN.könnte eine positive reelle Zahl sein. So wie,2 Λ ist eine kontinuierlich differenzierbare Funktion von N. mit Derivat
ddN.2 Λ ( N.) =1N.- -( y- N.μ)2σ2N.2- -2 μ ( y- N.μ )N.σ2.
Setzen Sie dies mit Null gleich, um nach kritischen Punkten zu suchen, die Nenner zu löschen und eine kleine Algebra durchzuführen, um das Ergebnis zu vereinfachen
μ2N.2+σ2N.- -y2= 0(1)
mit einer einzigartigen positiven Lösung (wann μ ≠ 0)
N.^=12μ2( -σ2+σ4+ 4μ2y2- -- -- -- -- -- -- -- -- -√) .
Es ist einfach, dies als zu überprüfen N. nähert sich 0 oder wird groß, 2 Λ ( N.) wächst groß, daher wissen wir, dass es kein globales Minimum in der Nähe gibt N.≈ 0 noch in der Nähe N.& Ap ; ∞ . Damit bleibt nur der eine kritische Punkt, den wir gefunden haben und der daher das globale Minimum sein muss. Außerdem,2 Λ muss abnehmen als N.^wird von unten oder oben angefahren. Somit,
Die globalen Minima von Λ muss auf beiden Seiten von zu den beiden ganzen Zahlen gehören N.^.
Dies bietet ein effektives Verfahren zum Ermitteln des Maximum-Likelihood-Schätzers: Es ist entweder der Boden oder die Decke vonN.^(oder gelegentlich beide !), also rechnen SieN.^ und wählen Sie einfach, welche dieser ganzen Zahlen macht 2 Λ kleinste.
Lassen Sie uns eine Pause einlegen, um zu überprüfen, ob dieses Ergebnis sinnvoll ist. In zwei Situationen gibt es eine intuitive Lösung:
Wann μ ist viel größer als σ, Y. wird in der Nähe sein μ , woher eine anständige Schätzung von N. wäre einfach | Y./ μ | . In solchen Fällen können wir die MLE durch Vernachlässigung approximieren σ2, geben (wie erwartet) N.^=12μ2( -σ2+σ4+ 4μ2y2- -- -- -- -- -- -- -- -- -√)≈12μ24μ2y2−−−−−√=∣∣∣yμ∣∣∣.
Wann σ ist viel größer als μ, Ykönnte überall verteilt sein, aber im Durchschnitt Y2 sollte in der Nähe sein σ2, woher eine intuitive Schätzung von N wäre einfach y2/σ2. In der Tat zu vernachlässigen μ in Gleichung (1) gibt die erwartete Lösung N^≈y2σ2.
In beiden Fällen stimmt die MLE mit der Intuition überein, was darauf hinweist, dass wir sie wahrscheinlich richtig ausgearbeitet haben. Die interessanten Situationen treten dann auf, wennμ und σsind von vergleichbarer Größe. Intuition kann hier wenig helfen.
Um dies weiter zu untersuchen, habe ich drei Situationen simuliert, in denenσ/μ ist 1/3, 1, oder 3. Es ist egal was μ ist (solange es ungleich Null ist), also habe ich genommen μ=1. In jeder Situation habe ich einen Zufall generiert Y für die Fälle N=2,4,8,16, dies unabhängig fünftausend Mal tun.
Diese Histogramme fassen die MLEs von zusammen N. Die vertikalen Linien markieren die wahren Werte vonN.
Im Durchschnitt scheint die MLE ungefähr richtig zu sein. WannσIst der MLE relativ klein, ist er in der Regel genau: Das zeigen die schmalen Histogramme in der oberen Reihe. Wannσ≈|μ|,Die MLE ist ziemlich unsicher. Wannσ≫|μ|, die MLE kann oft sein N^=1 und manchmal kann mehrmals sein N (besonders wenn Nist klein). Diese Beobachtungen stimmen mit den Vorhersagen der vorhergehenden intuitiven Analyse überein.
Der Schlüssel zur Simulation ist die Implementierung des MLE. Es muss gelöst werden(1) sowie auswerten Λ für gegebene Werte von Y, μ, und σ. Die einzige neue Idee, die hier reflektiert wird, ist das Überprüfen der ganzen Zahlen auf beiden Seiten von N^. Die letzten beiden Zeilen der Funktion f
führen diese Berechnung mit Hilfe der lambda
Bewertung der Protokollwahrscheinlichkeit durch.
lambda <- Vectorize(function(y, N, mu, sigma) {
(log(N) + (y-mu*N)^2 / (N * sigma^2))/2
}, "N") # The negative log likelihood (without additive constant terms)
f <- function(y, mu, sigma) {
if (mu==0) {
N.hat <- y^2 / sigma^2
} else {
N.hat <- (sqrt(sigma^4 + 4*mu^2*y^2) - sigma^2) / (2*mu^2)
}
N.hat <- c(floor(N.hat), ceiling(N.hat))
q <- lambda(y, N.hat, mu, sigma)
N.hat[which.min(q)]
} # The ML estimator