scipy 小面元直方图上的光滑泊松分布

dfddblmv  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(230)

我有一个背景计数的泊松分布,其中大多数计数等于零,我已经将泊松分布拟合到此数据,并得到以下结果:

我有另一个数据集,它来自一个计数率更高的源,在这种情况下,它工作得很好:

这是我的完整代码;

mean_values = []

# obtaining results:

for a in data_arrays:
    dataset = globals()[a]
    cps_vals = dataset[:,1]
    max_cps = int(max(cps_vals))
    mean_name = a +"_mean"
    std_name = a + "_std"
    serr_name = a + "_serr"
    mean = globals()[mean_name] = np.mean(cps_vals)
    globals()[std_name] = np.std(cps_vals,ddof=1)
    globals()[serr_name] = globals()[std_name]/np.sqrt(len(cps_vals)) ## I used globals() so I could call in e.g. the background serr as the variable bg_serr.
    print(a,"mean:",globals()[mean_name],"sqrt(mean):",np.sqrt(globals()[mean_name]),"std:",globals()[std_name],"serr:",globals()[serr_name],"sqrt(lambda)/sigma =",np.sqrt(globals()[mean_name])/globals()[std_name])

    # plotting with Poisson:

    plt.figure()
    bin_edges = np.arange(0, max_cps+1.1, 1)
    histogram = plt.hist(cps_vals,density=True,bins=bin_edges)
    plt.xlabel("Counts Per Second")
    plt.ylabel("Probability of Occurence")
    pops = histogram[0]
    bins = histogram[1]

    maxidx = np.argmax(pops)
    maxpop = pops[maxidx]
    maxbin = np.max(bins)
    most_populated_bin = bins[maxidx]

    plt.plot(np.arange(0, maxbin), poisson.pmf(np.arange(0,maxbin), 
    np.mean(cps_vals)),c="black")

这是泊松图的相关线:
plt.plot(np.arange(0, maxbin), poisson.pmf(np.arange(0,maxbin), np.mean(cps_vals)),c="black")
如果我试图使np.arange间距更小,我会在泊松曲线中得到振铃:
第一次
我想这是因为它需要计数的整数值吧?
我怎样才能为背景计数生成一条平滑的高斯曲线呢?我得到的曲线看起来不太对。

aiazj4mn

aiazj4mn1#

mu = 15
r = poisson.rvs(mu, size=100000)
plt.hist(r, bins=np.linspace(0, 35, 36), alpha=0.5, label='counting process', ec='black', align='left')
plt.plot(poisson.pmf(np.linspace(0, 35, 36),mu)*100000)
plt.legend()

提供:

相关问题