python生成泊松分布_Python Numpy泊松分布

本文探讨了Python中使用Numpy生成泊松分布和高斯分布的方法,并指出泊松分布与高斯分布的差异。通过示例代码展示了如何绘制这两种分布的直方图,以及如何计算其均值和方差。强调了在低均值情况下,泊松分布与高斯分布在统计特性上的显著不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,我会写这个答案,假设你将numpy导入为np,因为它清楚地区分了numpy函数与内置函数或python的数学和随机包的函数.

我认为没有必要回答您指定的问题,因为您的基本假设是错误的:

是的,泊松统计量具有等于方差的均值,但假设您使用常数林.但你没有.你输入高斯的y值,所以你不能指望它们是恒定的(它们是你的定义高斯!).

使用np.random.poisson(lam = 0.5)从泊松分布中获取一个随机值.但要小心,因为这个泊松分布甚至与高斯分布几乎不相同,因为你处于“低均值”区间,这两个区间显着不同,例如参见Wikipedia article about Poisson distribution.

你也在创建随机数,所以你不应该真正绘制它们,而是绘制它们的np.histogram.由于统计分布都与概率密度函数有关(见Probability density function).

之前,我已经提到你创建了一个带有常数lam的泊松分布,所以现在是时候讨论大小:你创建随机数,所以要近似真实的泊松分布,你需要绘制大量的随机数.其大小来自:np.random.poisson(lam = 0.5,size = 10000)例如创建一个10000个元素的数组,每个元素从泊松概率密度函数中绘制,平均值为0.5.

如果您在之前提到的维基百科文章中没有阅读它,则泊松分布根据定义仅给出无符号(> = 0)整数作为结果.

所以我想你想要做的是创建一个包含1000个值的高斯和泊松分布:

gaussian = np.random.normal(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.而这次(至少在我的样本运行中)他们给出了很好的结果:

print(np.mean(gaussian))

0.653517935138

print(np.var(gaussian))

5.4848398775

print(np.mean(poisson))

0.477

print(np.var(poisson))

0.463471

请注意高斯值几乎与我们定义的参数完全相同.另一方面,泊松均值和变量几乎相等.您可以通过增加上面的大小来提高均值和var的精度.

为什么泊松分布不接近原始信号

原始信号仅包含0到1之间的值,因此泊松分布仅允许正整数,标准差与平均值相关联.从高斯的平均值到目前为止,你的信号大约为0,因此泊松分布几乎总是为0.高斯有最大值时,值为1. 1的泊松分布看起来像这样(左边是信号泊松和右边的泊松分布值为1)

所以你会在那个地区得到很多0和1以及2.但是也有可能你将值绘制到7.这正是我提到的反对称性.如果你改变高斯的幅度(例如乘以1000),那么“拟合”要好得多,因为泊松分布在那里几乎是对称的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值