2016-02-22 62 views
1

我有以下一組數據,我試圖將泊松分佈擬合到MATLAB上,但是我得到的所有輸出都是零,並且我幾乎卡住了將泊松分佈擬合到MATLAB中的一組數據

data = [16 13 23 18 17 7 16 16 18 20 ...] 

還有更多,但我不打算全部粘貼它。我下面和泊松分佈構建成功:

PD = fitdist(data,'Poisson'); 

我的問題是在這裏:我有下面的一組X的,我想要繪製泊松分佈:

x = [ 0.042 0.048 0.053 0.059 0.065 0.070 0.076 0.082 0.087 0.093 0.099 0.10 ... etc ] 

y = pdf(PD,x) 
plot(x,y) 

y的輸出全部爲零,我不知道爲什麼會發生這種情況。任何提示都會很棒。

編輯:

我的陰謀應該是標準化的,然後泊松過程應該是配合了它,所以這裏是我做了什麼:

numbins = 20; 
[frequecy, xout] = hist(data/norm(data), numbins); 
binsize = xout(2)-xout(1); 
bar(xout, frequecy/binsize/sum(frequecy)); 
hold on; 
PD = fitdist(data,'Poisson'); 
stem(xout, pdf(PD,xout), 'r'); 
hold off; 

如果我改變幹(XOUT, pdf)到新的x,那麼這些圖不會重疊,這是我需要做的。

+0

請使用標籤之前閱讀標籤說明。刪除了一些不相關的標籤。 – Daniel

+0

如果答案已解決您的問題,請點擊複選標記,考慮[接受它](http://meta.stackexchange.com/q/5234/179419)。這表明你已經找到了解決方案,這不再是一個懸而未決的問題。如果您的問題沒有得到解答,請解釋缺少的內容。 – Daniel

回答

2

有兩個原因讓你得到值(接近)爲零。

  • 首先,泊松分佈是discrete probability distribution,這意味着PDF對於所有非零值都是零。
  • 此外,您的示例值介於7和20之間。您要求發生低於0.1的事情的概率。無論您選擇哪種離散分佈,都要求遠遠超出樣本範圍。

x=1:30 
y = pdf(PD,x) 
stem(x,y) %replaced plot with stem because it is discrete. 

enter image description here

這是我會怎麼修改代碼:

numbins = 20; 
%Bin integers. You know your distribution only contains integers 
%Hist with original scaling 
[frequecy, xout2] = hist(data, min(data):max(data)); 
%scale later 
xout=xout2/norm(data); 
binsize = xout(2)-xout(1); 
bar(xout, frequecy/binsize/sum(frequecy)); 
hold on; 
PD = fitdist(data,'Poisson'); 
%sample your distribution using the unscaled x-values but plot scaled. 
%multiply with numel(data) to get expected value instead of probability 
stem(xout, pdf(PD,xout2)*numel(data), 'r'); 
hold off; 
+1

注意:''x'的非整數值被底層的['poisspdf'](http://www.mathworks.com/help/stats/poisspdf.html#zmw57dd0e446971)函數明確地爲零(至少在我的R2015a)。無論如何,+1。 – TroyHaskin

+1

更新了我的答案,完全錯過了使用離散分佈的情況。 – Daniel

+0

那麼那麼我將如何去擬合和繪製一個泊松分佈到我的數據數組?因爲條形圖看起來應該符合泊松分佈。 – Ghazal