python⽣成泊松分布随机数_Python-Numpy-Poisson分布⾸先,假设您import numpy as np,我将编写这个答案,因为它清楚地将numpy函数与python的内置函数或math和random包的函数区别开来。
我认为没有必要回答你的具体问题,因为你的基本假设是错误的:
是的,poisson统计量的平均值等于⽅差,但假设您使⽤常数lam。但是你没有,你输⼊⾼斯的y值,所以你不能期望它们是常数(根据你的定义是⾼斯的!)。
使⽤np.random.poisson(lam=0.5)从泊松分布中获取⼀个随机值。但是要⼩⼼,因为这个poisson分布甚⾄与⾼斯分布不完全相同,因为你处于“低均值”区间,这两个区间都有显著的不同,请参见Wikipedia article about Poisson distribution。
另外,您正在创建随机数,因此不应该真正地绘制它们,⽽应该绘制其中的⼀个np.histogram。因为统计分布都是概率密度函数(见Probability density function)。
之前,我已经提到过,你⽤常数lam来创建泊松分布,现在是时候讨论⼀下size:你创建随机数,所以为了近似真实的泊松分布,你需要绘制很多随机数。⼤⼩如下:np.random.poisson(lam=0.5, size=10000)例如,创建⼀个10000个元素的数组,每个元素从泊松概率密度函数中提取,平均值为0.5。
如果你还没有在的⽂章中读过,在泊松分布给出定义之前,结果是只有⽆符号(>;=0)整数。
所以我猜你想做的是创建⼀个包含1000个值的⾼斯和泊松分布:gaussian = al(0.5, 2*np.sqrt(2*np.log(2)), 1000)
poisson = np.random.poisson(0.5, 1000)
然后绘制直⽅图:import matplotlib.pyplot as plt
plt.hist(gaussian)
plt.hist(poisson)
plt.show()
或者使⽤^{}代替。
要从随机样本中获取统计信息,您仍然可以对⾼斯和泊松样本使⽤np.var和np.mean。这次(⾄少在我的样本测试中)他们给出了很好的结果:an(gaussian))
0.653517935138
print(np.var(gaussian))
5.4848398775
an(poisson))
0.477
print(np.var(poisson))
0.463471
注意⾼斯值⼏乎就是我们定义的参数。另⼀⽅⾯,poisson均值和var⼏乎相等。您可以通过增加上⾯的size来提⾼均值和var的精度。
python生成1到100之间随机数
为什么泊松分布不接近原始信号
原始信号只包含0到1之间的值,因此泊松分布只允许正整数,标准差与平均值相关联。从⾼斯分布的平均值来看,信号近似为0,所以泊松分布⼏乎总是画0。⾼斯函数的最⼤值是1。1的泊松分布如下所⽰(左边是信号+泊松,右边是泊松分布,值为1)
所以在那个区域你会得到很多0和1,还有⼀些2。但也有⼀些可能性,你画的值⾼达7。这正是我提到
的反对称。如果改变⾼斯分布的振幅(例如乘以1000),“拟合”会更好,因为泊松分布在这⾥⼏乎是对称的:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。