Ich versuche, eine Poisson-Verteilung an meine Daten mit Hilfe von Statistikmodellen anzupassen, aber ich bin verwirrt über die Ergebnisse, die ich erhalte und wie ich die Bibliothek verwende.Anpassen einer Poisson-Verteilung an Daten in statsmodels
Meine realen Daten werden eine Reihe von Zahlen sein, von denen ich denke, dass ich eine Poisson-Verteilung und einige Ausreißer beschreiben könnte, damit ich schließlich eine robuste Anpassung an die Daten vornehmen kann.
jedoch zu Testzwecken erstellen I scipy.stats.poisson
samp = scipy.stats.poisson.rvs(4,size=200)
So dies mit statsmodels passen Ich denke, dass ich brauche nur eine Konstante 'ENDOG'
res = sm.Poisson(samp,np.ones_like(samp)).fit()
nur einen Datensatz mit
Druck res.summary()
Poisson Regression Results
==============================================================================
Dep. Variable: y No. Observations: 200
Model: Poisson Df Residuals: 199
Method: MLE Df Model: 0
Date: Fri, 27 Jun 2014 Pseudo R-squ.: 0.000
Time: 14:28:29 Log-Likelihood: -404.37
converged: True LL-Null: -404.37
LLR p-value: nan
==============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
------------------------------------------------------------------------------
const 1.3938 0.035 39.569 0.000 1.325 1.463
==============================================================================
Ok, das, nicht richtig aussehen, aber wenn ich es tue
res.predict()
Ich bekomme ein Array von 4,03 (was der Mittelwert für dieses Testmuster war). Also im Grunde bin ich zuerst sehr verwirrt, wie man dieses Ergebnis von statsmodel interpretiert und zweitens sollte ich wahrscheinlich etwas völlig anderes machen, wenn ich an einer robusten Parameterschätzung einer Distribution interessiert bin und nicht an Trends, aber wie soll ich das machen?
Bearbeiten Ich hätte wirklich mehr Details gegeben, um den zweiten Teil meiner Frage zu beantworten.
Ich habe ein Ereignis, das eine zufällige Zeit nach einer Startzeit auftritt. Wenn ich ein Histogramm der Verzögerungszeiten für viele Ereignisse zeichne, sehe ich, dass die Verteilung wie eine skalierte Poisson-Verteilung plus einige Ausreißerpunkte aussieht, die normalerweise durch Probleme in meinem zugrunde liegenden System verursacht werden. Also wollte ich einfach die erwartete Zeitverzögerung für den Datensatz finden, ohne die Ausreißer. Ohne die Ausreißer könnte ich einfach die mittlere Zeit finden. Ich nehme an, dass ich sie manuell ausschließen könnte, aber ich dachte, dass ich etwas genaueres finden könnte.
bearbeiten Auf weitere Überlegungen, werde ich andere Distributionen in Erwägung ziehen, anstatt mit einem Poissonion und den Einzelheiten meiner Ausgabe des Klebens eine Ablenkung von der ursprünglichen Frage wahrscheinlich, aber ich habe trotzdem sie hier links.
Was meinen Sie mit "robust"? robust gegenüber Ausreißern, robust gegenüber Fehlangaben, robust gegenüber numerischen Problemen, ...? – user333700
Ich meinte robust zu Ausreißern – robochat
Ich fügte meine Antwort einige Kommentare über Ausreißer robuste Schätzung. Ich habe vor einiger Zeit angefangen, darüber zu schauen, aber es ist noch ein weiter Weg, bis wir ihn in den Statsmodellen verfügbar haben. – user333700