python拟合泊松分布_Python Numpy泊松分布
首先,假設(shè)您import numpy as np,我會(huì)寫下這個(gè)答案,因?yàn)樗鞔_區(qū)分numpy函數(shù)與內(nèi)置函數(shù)或math和random的函數(shù)包的python。
我認(rèn)為沒有必要回答您指定的問題,因?yàn)槟幕炯僭O(shè)是錯(cuò)誤的:
是的,泊松統(tǒng)計(jì)量的均值等于方差,但假設(shè)您使用常數(shù) lam。但你不是。你輸入高斯的y值,所以你不能指望它們是恒定的(它們是你的定義高斯!)。
使用np.random.poisson(lam=0.5)從泊松分布中獲取一個(gè)隨機(jī)值。但要小心,因?yàn)檫@個(gè)泊松分布甚至與你的高斯分布大致相同,因?yàn)槟闾幱诘途?#xff06;#34;兩者都有顯著差異的區(qū)間,例如參見Wikipedia article about Poisson distribution。
此外,您正在創(chuàng)建隨機(jī)數(shù)字,因此您不應(yīng)該繪制它們,而是繪制np.histogram個(gè)。由于統(tǒng)計(jì)分布都與概率密度函數(shù)有關(guān)(見Probability density function)。
之前,我已經(jīng)提到你創(chuàng)建了一個(gè)帶有常數(shù)lam的泊松分布,所以現(xiàn)在是時(shí)候討論size了:你創(chuàng)建了隨機(jī)數(shù),所以近似真實(shí)的泊松分布你需要繪制大量隨機(jī)數(shù)。大小來自:np.random.poisson(lam=0.5, size=10000)例如創(chuàng)建一個(gè)10000個(gè)元素的數(shù)組,每個(gè)元素從泊松概率密度函數(shù)中繪制,平均值為0.5。
如果您在之前提及的維基百科文章中沒有閱讀它,那么泊松分布根據(jù)定義僅提供無(wú)符號(hào)(> = 0)整數(shù)作為結(jié)果。
所以我猜你想要做的是創(chuàng)建一個(gè)包含1000個(gè)值的高斯和泊松分布:
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()
要從隨機(jī)樣本中獲取統(tǒng)計(jì)信息,您仍然可以在高斯和泊松樣本上使用np.var和np.mean。而這次(至少在我的樣本運(yùn)行中)他們給出了很好的結(jié)果:
print(np.mean(gaussian))
0.653517935138
print(np.var(gaussian))
5.4848398775
print(np.mean(poisson))
0.477
print(np.var(poisson))
0.463471
注意高斯值幾乎與我們定義的參數(shù)完全相同。另一方面,泊松均值和變量幾乎相等。您可以通過增加上面的size來提高均值和變量的精度。
為什么泊松分布不接近原始信號(hào)
原始信號(hào)僅包含0到1之間的值,因此泊松分布僅允許正整數(shù),標(biāo)準(zhǔn)差與平均值相關(guān)聯(lián)。從高斯的平均值到目前為止,你的信號(hào)大約為0,因此泊松分布幾乎總是為0。高斯具有它的最大值為1. 1的泊松分布看起來像這樣(左邊是信號(hào)+泊松,右邊是泊松分布,值為1)
因此你會(huì)在該地區(qū)獲得大量的0和1以及2。但是也有可能你將值繪制到7。這正是我提到的反對(duì)稱性。如果你改變高斯的幅度(例如乘以1000),那么" fit"因?yàn)椴此煞植荚谀抢飵缀跏菍?duì)稱的,所以要好得多:
總結(jié)
以上是生活随笔為你收集整理的python拟合泊松分布_Python Numpy泊松分布的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ruby 之Gem kaminari 分
- 下一篇: python 排名函数_python 中