我有以下数据集我试图在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 :(得分:2)
有两个原因可以获得值(接近)零。
x=1:30
y = pdf(PD,x)
stem(x,y) %replaced plot with stem because it is discrete.
以下是我修改代码的方法:
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;