Python Numpy Distribution De Poisson
Je suis de la génération d'un Gaussien, par souci d'exhaustivité, c'est ma mise en œuvre:
from numpy import *
x=linspace(0,1,1000)
y=exp(-(x-0.5)**2/(2.0*(0.1/(2*sqrt(2*log(2))))**2))
avec un pic à 0.5
et fwhm=0.1
. Jusqu'à présent, donc pas intéressant. Dans l'étape suivante, j'ai calculer la distribution de poisson de mon jeu de données à l'aide de numpys
aléatoire.poisson mise en œuvre.
poi = random.poisson(lam=y)
Je vais avoir deux problèmes majeurs.
- Une spécialité de poisson, c'est que la variance est égale à l'exp. valeur,
en comparant la sortie de la moyenne() et var() ne me confondre, comme le
les sorties ne sont pas égaux. - Lors du traçage de cela, la loi de poisson dist. prend des valeurs entières seulement
et le max. la valeur est d'environ 7, parfois 6, alors que mon ancienne fonction
y a son max. à 1. Afai comprendre, le poisson-fonction
donnez-moi quelque sorte, un "ajustement" de ma réelle de la fonction y. Comment se fait le max.
les valeurs ne sont pas égales? Désolé pour mon mathématique inexactitude,
en fait, je fais cela pour émuler le poisson-distribué bruit, mais j'ai
pense que vous comprenez "ajustement" dans ce contexte.
EDIT: 3. question: Quelle est la "taille" de la variable utilisée dans ce contexte? J'ai vu des différents types d'utilisation, mais à la fin ils ne me donne pas des résultats différents, mais à défaut au moment de choisir tort...
EDIT2: OK, à partir de la réponse que j'ai je pense que je n'ai pas été assez clair (bien qu'il m'ont déjà aidé à corriger certaines autres erreurs stupides que j'ai fait, merci pour ça!). Ce que je veux faire c'est appliquer la loi de poisson (blanc) le bruit de la fonction y. Comme décrit par MSeifert dans le post ci-dessous, je vais maintenant utiliser la valeur d'expectative que lam. Mais cela ne me donne le bruit. Je suppose que j'ai quelques problèmes de compréhension sur le niveau de th{e} bruit est appliquée (et peut-être que c'est plus de la physique sont-ils liés?!).
BTW, vous aurez des résultats plus lisibles si vous modifiez votre linspace appel à 1001 -- ajout d'un fencepost sur l'extrémité de sorte qu'ils sont des multiples de 10^-3.
OriginalL'auteur famfop | 2016-03-01
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, je vais écrire cette réponse en supposant que vous
import numpy as np
parce qu'il distingue clairementnumpy
fonctions à partir des objets internes ou ceux de lamath
etrandom
paquet de python.Je pense qu'il n'est pas nécessaire de répondre à vos questions parce que votre postulat de base est faux:
Oui, le poisson-statistiques a une moyenne qui est égale à la variance, mais qui suppose que vous utilisez un constante
lam
. Mais vous n'avez pas. Vous entrez les valeurs de y de votre gaussien, donc ne vous attendez pas à être constante (ils sont par votre définition de gauss!).Utilisation
np.random.poisson(lam=0.5)
pour obtenir une valeur aléatoire à partir d'une distribution de poisson. Mais attention car cette distribution de poisson n'est pas, même approximativement identique à votre distribution gaussienne parce que vous êtes dans le "low-dire" l'intervalle où les deux sont très différents, voir par exemple la Wikipédia article sur la distribution de Poisson.Vous êtes également à la création de nombres aléatoires, de sorte que vous ne devriez pas vraiment d'intrigue, mais l'intrigue d'un
np.histogram
d'entre eux. Depuis des distributions statistiques sont tout à propos de probabilitiy fonctions de densité (voir Fonction de densité de probabilité).Avant, je l'ai déjà mentionné que vous créez une distribution de poisson avec une constante
lam
alors maintenant, il est temps de parler de lasize
: Vous pouvez créer des nombres aléatoires, de sorte à rapprocher de la vraie distribution de poisson vous avez besoin d'attirer beaucoup de nombres aléatoires. Il y a la taille:np.random.poisson(lam=0.5, size=10000)
par exemple crée un tableau de 10000 éléments tirés d'une poissonian fonction de densité de probabilité pour une valeur moyenne de0.5
.Et si vous ne l'avez pas lu dans l'article de Wikipédia mentionné avant la distribution de poisson donne, par définition, seuls les non signé (>= 0) entier comme résultat.
Donc je suppose que ce que tu voulais faire, c'est de créer une gaussienne et de la distribution de poisson contenant 1000 valeurs:
puis à tracer, tracer les histogrammes:
ou utiliser le
np.histogramme
à la place.D'obtenir des statistiques à partir de vos échantillons aléatoires, vous pouvez toujours utiliser
np.var
etnp.mean
sur la gaussienne et de poisson échantillons. Et cette fois-ci (au moins sur mon exemple), ils donnent de bons résultats:Remarquez comment la gaussienne des valeurs sont presque exactement ce que nous avons défini comme paramètres. Sur l'autre main de poisson de moyenne et var sont presque égales. Vous pouvez augmenter la précision de la moyenne et de la var par l'augmentation de la
size
ci-dessus.Pourquoi la distribution de poisson n'est pas approximatif de votre signal original
Votre signal original ne contient que des valeurs entre 0 et 1, de sorte que la distribution de poisson permet uniquement l'entier positif et l'écart-type est lié à la valeur moyenne. Si loin de la moyenne de la gaussienne votre signal est d'environ 0, de sorte que la distribution de poisson sera presque toujours tirage 0. Où la gaussienne a maximum la valeur est de 1. La distribution de poisson pour 1 ressemble à ceci (à gauche) est le signal + poisson et sur la droite de la distribution de poisson autour d'une valeur de 1)
de sorte que vous aurez beaucoup de 0 et de 1 et 2 de la région. Mais il ya aussi une certaine probabilité que vous dessinez des valeurs jusqu'à 7. C'est exactement la en oeuvre l'antisymétrie que j'ai mentionné. Si vous changez l'amplitude de votre gaussien (multiplier par 1000 par exemple) le "fit" est beaucoup mieux depuis que la distribution de poisson est presque symétrique:
J'ai élargi la réponse avec un court commentaire, pourquoi il n'est pas approximatif de votre signal. J'ai vraiment mal compris les parties de votre question, je suis très désolé
salut, merci beaucoup (encore une fois :D)!!! Maintenant je l'ai eu! J'ai juste besoin de quelqu'un pour expliquer étape par étape.
OriginalL'auteur MSeifert