Python-Numpy Poisson-Verteilung
Ich bin die Erzeugung einer Gauß, der Vollständigkeit halber, das ist meine Umsetzung:
from numpy import *
x=linspace(0,1,1000)
y=exp(-(x-0.5)**2/(2.0*(0.1/(2*sqrt(2*log(2))))**2))
mit peak bei 0.5
und fwhm=0.1
. So weit so uninteressant. Im nächsten Schritt berechne ich die poisson-Verteilung meiner Daten-set mit numpys
random.poisson Umsetzung.
poi = random.poisson(lam=y)
Ich habe zwei große Probleme.
- Eine Spezialität von poisson ist, dass die Varianz gleich der exp. Wert,
Vergleich der Ausgabe von Mittelwert() und var() nicht verwirren, als die mich
Ausgänge sind nicht gleich. - Beim Plotten diese, die poisson-dist. nimmt ganzzahlige Werte nur
und die max. Wert um 7, mal 6, während meine alte Funktion
y hat seine max. bei 1. Afai verstehen, die poisson-Funktion sollte
geben Sie mir eine Art "Passung" von meinem eigentlichen Funktion y. Wie kommen die max.
Werte nicht gleich sind? Sorry für meine mathematische Unrichtigkeiten,
eigentlich mache ich diese zu emulieren poisson-verteiltes Rauschen, sondern ich
denke, Sie verstehen, " fit " in diesem Zusammenhang.
BEARBEITEN: 3. Frage: Was ist die 'Größe' variable verwendet, für die in diesem Kontext? Ich habe gesehen, verschiedene Arten der Nutzung, aber am Ende werden Sie nicht geben mir unterschiedliche Ergebnisse, die aber Versagen, wenn Sie es falsch...
EDIT2: OK, aus der Antwort, die ich bekam, ich denke, ich war nicht klar genug (obwohl es schon geholfen, mich korrigieren einige andere dumme Fehler, die ich habe, vielen Dank dafür!). Was ich tun möchte, gelten poisson (weiße) Rauschen auf der Funktion y ist. Wie beschrieben von MSeifert in dem Beitrag unten, ich verwende jetzt den Erwartungswert lam. Aber dies nur gibt mir der Lärm. Ich denke, ich habe einige Verständnis Probleme auf der Ebene der, wie th{e} Rauschen angewendet wird (und vielleicht ist es mehr der Physik im Zusammenhang?!).
BTW, haben Sie die Ergebnisse leichter lesbar, wenn Sie Ihre linspace Aufruf 1001 -- fügen Sie ein fencepost auf die Gegenseite, so Sie sind Vielfache von 10^-3.
InformationsquelleAutor famfop | 2016-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst, ich Schreibe diese Antwort angenommen, Sie
import numpy as np
weil es deutlich unterscheidetnumpy
Funktionen aus der gelieferten oder die von dermath
undrandom
- Paket von python.Ich denke, es ist nicht notwendig, zur Beantwortung Ihrer angegebenen Fragen, weil Ihre Grundannahme ist falsch:
Ja, der poisson-Statistik ist ein Mittelwert gleich der Varianz, sondern geht davon aus, dass Sie eine Konstante
lam
. Aber Sie müssen nicht. Geben Sie die y-Werte der gaußverteilung, so kann man nicht erwarten, dass Sie konstant sein (Sie sind durch Ihre definition Gauß!).Verwenden
np.random.poisson(lam=0.5)
um eine Zufallszahl aus einer poisson-Verteilung. Aber seien Sie vorsichtig, da diese poisson-Verteilung ist nicht annähernd identisch mit Ihrer Gauß-Verteilung, da Sie in der "low-mean" - Intervall, wo diese beiden deutlich unterscheiden, siehe zum Beispiel die Wikipedia-Artikel zur Poisson-Verteilung.Auch Sie Zufallszahlen erzeugen, so sollten Sie nicht wirklich zeichnen Sie aber ein Grundstück
np.histogram
. Da die statistischen Verteilungen sind alle über probabilitiy Dichte-Funktionen (siehe Wahrscheinlichkeits-Dichte-Funktion).Bevor, ich habe bereits erwähnt, dass Sie erstellen eine poisson-Verteilung mit einer Konstanten
lam
so, jetzt ist es Zeit für ein Gespräch über diesize
: erstellen Sie Zufallszahlen, also die Angleichung der real poisson-Verteilung, müssen Sie ziehen eine Menge von Zufallszahlen. Da die Größe kommt:np.random.poisson(lam=0.5, size=10000)
zum Beispiel erstellt ein array mit 10000 Elementen, jedes aus einem poissonian Wahrscheinlichkeits-Dichte-Funktion für einen mittleren Wert von0.5
.Und wenn Sie haven ' T Lesen Sie es im Wikipedia-Artikel erwähnt werden, bevor die poisson-Verteilung gibt per definition nur unsigned (>= 0) Ganzzahl als Ergebnis.
So, ich denke, was Sie wollten zu tun ist, erstellen Sie eine Gauß-und poisson-Verteilung mit 1000 Werte:
und dann zu zeichnen, zeichnen Sie die Histogramme:
oder verwenden Sie den
np.Histogramm
statt.Statistiken aus Ihren zufälligen samples Sie können immer noch
np.var
undnp.mean
auf die Gauß-und poisson-Proben. Und dieses mal (zumindest auf meinem Probe ausführen) Sie geben gute Ergebnisse:Beachten Sie, wie der GAUSS-Werte sind fast genau das, was wir definiert als Parameter. Auf der anderen Seite der poisson-Mittelwert und Varianz sind fast gleich. Sie kann zur Erhöhung der Genauigkeit den Mittelwert und die var durch die Erhöhung der
size
oben., Warum die poisson-Verteilung nicht annähernd Ihre ursprüngliche signal
Ihrer ursprünglichen signal enthält nur Werte zwischen 0 und 1, so dass die poisson-Verteilung können nur positive ganze Zahl und die Standardabweichung ist mit dem Mittelwert. So weit vom Mittelwert der Gauß-Signals ist approximatly 0, so ist die poisson-Verteilung wird fast immer Unentschieden 0. Wo die Gaußsche hat, ist es maximal der Wert 1 ist. Die poisson-Verteilung für 1 sieht so aus (Links ist das signal + poisson und auf der rechten Seite der poisson-Verteilung um den Wert 1)
so erhalten Sie eine Menge von 0 und 1 und 2 in dieser region. Aber auch es gibt eine gewisse Wahrscheinlichkeit, dass Sie zeichnen Werte bis zu 7. Das ist genau der antisymmetry, die ich erwähnt habe. Wenn Sie änderungen in der amplitude Ihrer Gauß (multipliziere es mit 1000, zum Beispiel), die "fit" ist viel besser, da die poisson-Verteilung ist fast symmetrisch, die es gibt:
Ich habe erweitert die Antwort mit einem kurzen Kommentar, warum es nicht annähernd Ihr signal. Ich wirklich missverstanden Teile deiner Frage, tut mir sehr Leid
hi, vielen Dank (nochmal :D)!!! Jetzt habe ich es! Ich brauchte nur jemand das erklären, Schritt für Schritt.
InformationsquelleAutor MSeifert