Ich versuche eine sehr einfache Wahrscheinlichkeit zu maximieren. Dies ist eine nichtparametrische Wahrscheinlichkeit
in dem Sinne, dass die Verteilung von F nicht parametrisch spezifiziert ist. Lieber,
für jede beobachtete xi
, f(xi)=pi
und somit log(Likelihood)=Sum(log(f(xi)))=Sum(log(pi))
.
Die Funktion, die ich zu maximieren versuche, ist: sum(log(pi))+lamda(sum(pi-1))
where sum(pi)=1
(d. h. dies ist ein eingeschränktes Maximierungsproblem, das mit dem Lagrange-Multiplikator gelöst werden kann).
Die Antwort auf dieses Problem ist pi=1/n
wobei n
die Anzahl der Datenpunkte ist. Optimx scheint diese Lösung jedoch nicht zu bieten. Hat jemand eine Idee? Wenn n=2
ist, maximiere ich die Funktion log(p1)+log(p2)+lamda(p1+p2-1)
.
Hier ist mein Code und Ausgabe von R:
%Vor% Die Lösung für die Gleichung, wenn n=2
p1=p2=1/2
und lamda=-2
ist. Allerdings bekomme ich das nicht, wenn ich optimx benutze. Irgendeine Idee?
Nichts stimmt nicht mit optimx
. Machen Sie einen Schritt zurück und schauen Sie sich die Funktion an, die Sie maximieren möchten: log(p1) + log(p2) + lamda*(p1+p2-1)
. Es ist ziemlich intuitiv, dass die optimale Lösung darin besteht, alle Variablen so groß wie möglich zu machen, nein? Beachten Sie, dass optimx
die von Ihnen angegebenen oberen Grenzen korrekt zurückgegeben hat.
Was ist also falsch an Ihrem Ansatz? Wenn Sie Lagrange-Multiplikatoren verwenden, sind kritische Punkte Sattelpunkte Ihrer Funktion oberhalb und nicht lokale Minima wie optimx
würden Ihnen helfen, diese zu finden. Also müssen Sie Ihr Problem so verändern, dass diese Sattelpunkte zu lokalen Minima werden. Dies kann durch eine Optimierung über die Norm des Gradienten erreicht werden, die für Ihr Problem leicht analytisch zu berechnen ist. Es gibt ein großartiges Beispiel (mit Bildern) hier:
Ссылка .
Für Ihr Problem:
%Vor%Nachverfolgung : Wenn Sie den Gradienten nicht selbst berechnen wollen oder können, können Sie mit R eine numerische Approximation berechnen, zum Beispiel:
%Vor%Tags und Links optimization r maximization