2016-03-01 150 views
3

我生成高斯,爲了完整起見,這就是我的實現:的Python NumPy的泊松分佈

from numpy import * 
x=linspace(0,1,1000) 
y=exp(-(x-0.5)**2/(2.0*(0.1/(2*sqrt(2*log(2))))**2)) 

與高峯在0.5fwhm=0.1。迄今爲止沒有意思。在下一步中,我使用numpysrandom.poisson實現來計算我的數據集的泊松分佈。

poi = random.poisson(lam=y) 

我有兩個主要問題。

  1. 泊松的特點是方差等於exp。值, 比較平均值()和var()的輸出結果令我困惑,因爲 輸出不相等。
  2. 繪製這個時,poisson dist。佔據整數值只有 和最大值。值大約是7,有時是6,而我的舊函數 y有它的最大值。在Afai明白,泊松函數應該給我一個'適合'我的實際函數y。最大值是多少? 值不相等?對不起,我的數學不正確, 其實我是這樣做模擬泊松分佈的噪音,但我 猜你明白'適合'在這種情況下。

編輯:3,問題:什麼是在這種情況下使用的「大小」的變量?我看到不同類型的用法,但最終他們沒有給我不同的結果,但在選擇錯誤時失敗...

編輯2:好的,從我得到的答案我認爲我不夠清楚(雖然它已經幫助我糾正了我做的其他一些愚蠢的錯誤,感謝那!)。我想要做的是將泊松(白色)噪聲應用於函數y。正如MSeifert在後面的文章中所述,我現在使用期望值作爲lam。但這隻會給我帶來噪音。我想我對噪聲的應用水平有一些理解上的問題(也許它與物理學有關?)。

+0

你是怎麼喂的參數**意思**和** var **? ** poi **不是泊松分佈。 – Prune

+0

順便說一句,如果您將** linspace **呼叫更改爲1001,則您的結果更具可讀性 - 在遠端添加fencepost以使其爲10^-3的倍數。 – Prune

回答

10

首先,我會寫這個答案假設你import numpy as np,因爲它明確區分從內建或那些mathrandom包python的numpy功能。

我想是因爲你的基本假設是錯誤的,沒有必要回答你指定的問題:

是,泊松統計有等於方差的意思,但它假定您使用不斷lam。但是你沒有。你輸入高斯的y值,所以你不能指望他們是恆定的(他們是你的定義高斯!)。

使用np.random.poisson(lam=0.5)從泊松分佈中獲得一個隨機值。但要小心,因爲這種泊松分佈甚至與您的高斯分佈並不完全相同,因爲您處於「低均值」區間,其中這兩者的差異很大,請參閱Wikipedia article about Poisson distribution

此外,你正在創建隨機數,所以你不應該真的繪製他們,但繪製一個np.histogram他們。由於統計分佈都是關於可能性密度函數(見Probability density function)。

之前,我已經提到你創建了一個常數爲lam的泊松分佈,所以現在是時候談論size:你創建了隨機數,所以要逼近真正的泊松分佈,你需要繪製大量的隨機數數字。例如:np.random.poisson(lam=0.5, size=10000)例如創建了一個由平均值爲0.5的平均值的泊松概率密度函數繪製的10000個元素的數組。

如果您還沒有閱讀過維基百科文章中提到的泊松分佈,那麼根據定義只給出無符號整數(> = 0)作爲結果。

所以我猜你想要做的就是創建一個包含1000個值高斯和泊松分佈是什麼:

gaussian = np.random.normal(0.5, 2*np.sqrt(2*np.log(2)), 1000) 
poisson = np.random.poisson(0.5, 1000) 

,然後繪製它,繪製直方圖:

,或者使用代替np.histogram

要從隨機樣本中獲取統計信息,您仍然可以在高斯和泊松樣本上使用np.varnp.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 

通知高斯值是如何幾乎正是我們所定義的參數。另一方面,泊松均值和變量幾乎相等。您可以通過增加上面的size來提高mean和var的精度。

爲什麼泊松分佈不近似原始的信號

你的原始信號中包含0和1之間唯一的值,因此泊松分佈只允許正整數和標準差被鏈接到的平均值。從高斯平均值開始,你的信號大致爲0,所以泊松分佈幾乎總是等於0.在高斯有最大值的情況下,其值爲1. 1的泊松分佈看起來像這樣(左邊是信號+泊松並在對周圍的值爲1泊松分佈)

enter image description here

所以你會得到很多的0和1和2的一些在該地區。但是也有一些可能性,即將數值繪製爲7.這正是我提到的反對稱性。如果你改變的幅度您的高斯(由1000例如相乘)的「配合」要好得多,因爲泊松分佈幾乎是對稱的有:

enter image description here

+1

幹得好!我寫了大約70%的內容,這一點很清楚。 – Prune

+0

嗨,非常感謝這個漫長而廣泛的解釋。無論如何,我想我還不夠清楚。我其實想把泊松(白色)噪聲應用於高斯函數。 – famfop

+0

@famfop - 我已經用一個簡短的評論擴展了答案,爲什麼它不能逼近你的信號。我真的誤解了你的問題的部分,我很抱歉 – MSeifert