2016-02-22 65 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