平均值的浮动值的泊松分布。

问题描述 投票:0回答:1

我对Python比较陌生,一直在使用np库。我在按照泊松分布生成尖峰时遇到了一些问题。你可以使用下面的链接查看细节。

按照泊松分布生成随机数

基本的问题是,如果我们使用整数值作为 Poisson 分布的均值,我们得到一个很好的分布(使用下面的代码)。然而对于平均数的浮动值,我们没有得到一个分布。

spkt= np.random.poisson(5,1000)   # Mean of 5 for 1000 samples
plt.hist(spkt)
plt.show()
python numpy mean distribution poisson
1个回答
1
投票

你肯定可以使用非整数平均数来采样。下面的代码采样和计算泊松分布的PMF,并绘制在一起,Win 10 x64,Anaconda Python 3.7。

import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import poisson

μ = 3.5
min = 0
max = 20

spkt = np.random.poisson(μ, 10000)

h, bins = np.histogram(spkt, bins = int(max-min+1), range=(min-0.5,max+0.5))
#print(h)
#print(bins)

mean = np.mean(spkt)
print(f"Mean value {mean} versus mu {μ}")

# Poisson PMF for given mu
x = [k for k in range(min, max+1)]
y = [poisson.pmf(k, μ) for k in range(min, max+1)]

# plot sampled vs computed PMF
plt.hist(spkt, bins = bins, density=True)
plt.plot(x, y, "ro")
plt.title("Poisson")
plt.show()

有这样的图片

enter image description here

更新

如果你想要非常小的μ采样,同样的代码对我来说也是有效的,但几乎都是零。

μ = 2.0e-5

输出是

enter image description here


0
投票

如果你正在处理尖峰神经网络,我强烈建议你看一看。那些在python上的包. 特别是,我用 brian2 在很长一段时间内,为了实现各种SNN。要点你的问题与brian2包。

P = PoissonGroup(100, np.arange(100)*Hz + 10*Hz)

更多细节 此处.

© www.soinside.com 2019 - 2024. All rights reserved.