Wie modelliert man eine Mischung aus 3 Normalen in PyMC?

8

Es gibt eine Frage zu CrossValidated wie man PyMC verwendet, um zwei Normalverteilungen an Daten anzupassen. Die Antwort von Cam.Davidson.Pilon war, eine Bernoulli-Verteilung zu verwenden, um Daten einer von ihnen zuzuordnen die zwei Normalen:

%Vor%

Nun ist meine Frage: Wie geht es mit drei Normalen?

Grundsätzlich besteht das Problem darin, dass Sie keine Bernoulli-Distribution und 1-Bernoulli mehr verwenden können. Aber wie geht es dann?

edit: Mit dem Vorschlag des CDP habe ich den folgenden Code geschrieben:

%Vor%

Die Spuren mit dem folgenden Stichprobenverfahren sehen ebenfalls gut aus. Gelöst!

%Vor%     
Michael Schubert 24.09.2013, 16:58
quelle

1 Antwort

6

Es gibt ein Objekt mc.Categorical , das genau das tut.

%Vor%

Es gibt einen int zwischen 0 und len(p)-1 zurück. Um die 3 Normalen zu modellieren, machen Sie p ein mc.Dirichlet -Objekt (es akzeptiert ein k length-Array als Hyperparameter. Wenn Sie die Werte im Array so einstellen, dass sie gleich sind, setzen Sie die vorherigen Wahrscheinlichkeiten auf gleich). Der Rest des Modells ist nahezu identisch.

Dies ist eine Verallgemeinerung des oben vorgeschlagenen Modells.

Aktualisierung:

Okay, anstatt andere Mittel zu haben, können wir sie alle in 1 zusammenfassen:

%Vor%     
Cam.Davidson.Pilon 24.09.2013, 20:46
quelle

Tags und Links