matlab求泊松分布,python泊松分布随机数
首先,假设你把numpy导入为np,我就写这个回答,因为它把numpy函数和python的内置函数或者math和random packages的函数清晰地区分了。
我认为没有必要回答你的具体问题,因为你的基本假设是错误的:
是的,泊松统计的均值等于方差,但是假设你用的是常数lam。但你没有。你输入了xfdd的Y值,所以不能指望它们是常数(xfdd按照你的定义!)。
使用np.random.poisson(lam=0.5)从泊松分布获得随机值。但是要小心,因为这个泊松分布甚至和xfdds分布都不完全一样,而且因为你是在“低均值”范围内,所以两个范围有很大的区别。参见维基百科关于泊松分布的文章。
另外,你是在创建随机数,所以不应该真的画随机数,而是画其中的一个,np.histogram .因为统计分布都是概率密度函数(见概率密度函数)。
之前,我提到过你用常数lam来创建泊松分布。现在是讨论大小的时候了:你创建了随机数,所以为了近似真实的泊松分布,你需要画很多随机数。大小如下:np.random.poisson (LAM=0.5,size=10000)。比如创建一个10000个元素的数组,每个元素都是从泊松概率密度函数中提取的,平均值为0.5。
如果你没有在维基百科的文章中读到过,在泊松分布被定义之前,结果只是无符号的(gt;=0)整数。
所以我猜你想做的是创建一个xfdds和泊松分布,有1000个值:高斯=np.random.normal (0.5,2 * np.sqrt (2 * np.log (2)),1000)
泊松=np.random .泊松(0.5,1000)
然后绘制直方图:导入matplotlib.pyplot作为plt
plt.hist(高斯)
plt.hist(泊松)
plt.show()
或者使用{}来代替。
要从随机样本中获取统计信息,仍然可以对xfdds和泊松样本使用np.var和np.mean。这一次(至少在我的样本测试中)他们给出了一个好结果:print(np.mean(gaussian))
0.653517935138
print(np.var(高斯))
5.4848398775
print(np.mean(泊松))
0.477
print(np.var(泊松))
0.463471
注意,xfdds值几乎是我们定义的参数。另一方面,泊松均值和var几乎相等。您可以通过增加上面的大小来提高均值和var的准确性。
为什么泊松分布不接近原始信号?
原始信号只包含0到1之间的值,所以泊松分布只允许正整数,标准差与平均值有关。从xfdds分布的平均值来看,信号近似为0,所以泊松分布几乎总是画0。xfdds函数的最大值是1。1的泊松分布如下(信号泊松在左边,泊松分布在右边,值为1)
所以在那个区域你会得到很多0和1,还有一些2。但是也有一些可能性。你的画的价值高达7英镑。这正是我提到的反对称性。如果改变xfdds分布的幅度(比如乘以1000),“拟合”会更好,因为泊松分布在这里几乎是对称的:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。