如何绘制覆盖在其上的最佳拟合分布的直方图



我能够弄清楚如何使用这个绘制数据的直方图

  histogram(data,'Normalization','pdf') 

但是,如何绘制覆盖在其上的最佳拟合分布的数据直方图呢?我还需要包含带有单位的轴标签。

当然,这取决于您的分布方式。在这里,我拟合了一个正态分布。通常最好适合数据的 cdf,而不是 de pdf。当然,拟合参数是相同的。因此,您也可以在之后绘制pdf。

data = randn(1,1E3);
fig=figure(1);clf;hold on
H = histogram(data,'Normalization','pdf'); %you have this as well
%pdf and cdf of normal distribution
npdf = @(x,p) 1/(sqrt(2*p(2)^2*pi)) * exp(-(x-p(1)).^2 / (2*p(2)^2));
ncdf = @(x,p) 0.5*(1+erf((x-p(1)) / (p(2)*sqrt(2))));
%generate and show cdf of the data
data = sort(data);
x = linspace(0,1,1E3);
figure();plot(data,x); %cdf
%fit cdf
ssqe = @(x,y,p) sum((y-ncdf(x,p)).^2); %sum of squared error
p = [1 1]; %starting values
p = fminsearch(@(p) ssqe(data,x,p), p); %fit
%plot pdf of the fit
figure(fig)
plot(data,npdf(data,p),'--r')

最新更新