Python-Daten laden und multi-Gauß-Fit machen

8

Ich habe nach einer Möglichkeit gesucht, mehrere Gaußsche Anpassungen an meine Daten vorzunehmen. Die meisten Beispiele, die ich bisher gefunden habe, verwenden eine Normalverteilung, um Zufallszahlen zu erzeugen. Aber ich interessiere mich dafür, die Handlung meiner Daten zu betrachten und zu überprüfen, ob es 1-3 Spitzen gibt.

Ich kann das für einen Peak machen, aber ich weiß nicht, wie ich das für mehr tun soll.

Zum Beispiel habe ich diese Daten: Ссылка

Ich habe versucht, mit lmfit und natürlich scipy, aber mit keinen schönen Ergebnissen.

Danke für jede Hilfe!

    
astromath 14.11.2014, 17:56
quelle

1 Antwort

11

Stellen Sie einfach parametrisierte Modellfunktionen aus der Summe der einzelnen Gaußfunktionen ein. Wählen Sie einen guten Wert für Ihre erste Schätzung (dies ist ein wirklich kritischer Schritt) und dann scipy.optimize diese Zahlen ein wenig zu optimieren.

So können Sie es machen:

%Vor%

Wie Sie sehen können, gibt es fast keinen Unterschied zwischen diesen beiden Passungen (visuell). Sie können also nicht sicher sein, ob 3 Gaussiane in der Quelle oder nur 2 vorhanden sind. Wenn Sie jedoch eine Schätzung machen mussten, dann prüfen Sie auf den kleinsten Rest:

%Vor%

In diesem Fall liefern 3 Gaussians ein besseres Ergebnis, aber ich habe meine erste Schätzung auch ziemlich genau gemacht.

    
Oliver W. 16.11.2014, 23:32
quelle