Statistics 用MATLAB拟合累积分布函数
当我将使用绘图时,如何使以下数据更加拟合 这是我的代码,使用cdfplot绘制Statistics 用MATLAB拟合累积分布函数,statistics,matlab,Statistics,Matlab,当我将使用绘图时,如何使以下数据更加拟合 这是我的代码,使用cdfplot绘制 clear all; close all; y = [23 23 23 -7.59 23 22.82 22.40 13.54 -3.97 -4.00 8.72 23 23 10.56 12.19 23 9.47 5.01 23 23 23 23 22.85 23 13.61 -0.77 -14.15 23 12.91 23 20.88 -9.42 23 -1.37 1.83 14.35 -8.30 23 15.17
clear all;
close all;
y = [23 23 23 -7.59 23 22.82 22.40 13.54 -3.97 -4.00 8.72 23 23 10.56 12.19 23 9.47 5.01 23 23 23 23 22.85 23 13.61 -0.77 -14.15 23 12.91 23 20.88 -9.42 23 -1.37 1.83 14.35 -8.30 23 15.17 23 5.01 22.28 23 21.91 21.68 -4.76 -13.50 14.35 23]
cdfplot(y)
你可以试试
h = cdfplot(y)
cftool( get(h,'XData'), get(h,'YData') )
你的问题没有明确的答案,它太宽泛了,主要属于统计学。在进行任何计算之前,您应该回答以下问题:
- 是否有数据遵循的特定分发类型
- 选择一种分销类型而放弃其他分销类型是否有任何理论依据
- 我需要参数分布还是非参数分布
- 如果不能选择特定的分发类型,我应该调查哪一组分发
- 如何比较分布
- 我应该使用什么样的拟合方法,例如等
- 如何对待不确定性
- 我想如何以及为了什么使用结果
- 等等
cdfplot(y)
hold on
xx = -20:40;
%normal distribution
pd_norm = fitdist(y', 'normal');
F_norm = normcdf(xx, pd_norm.mu, pd_norm.sigma);
plot(xx, F_norm, 'r')
%kernel distribution
pd_kernel1 = fitdist(y', 'kernel', 'Kernel', 'normal', 'Width', 6);
F_kernel1 = cdf(pd_kernel1, xx);
plot(xx, F_kernel1, 'g')
%kernel distribution
pd_kernel2 = fitdist(y', 'kernel', 'Kernel', 'normal', 'Width', 2);
F_kernel2 = cdf(pd_kernel2, xx);
plot(xx, F_kernel2, 'black')
legend('ecdf', 'normal', 'kernel1', 'kernel2', 'Location', 'NorthWest')
如何定义“更合身”?产生经验累积分布函数,没有拟合。是的,cdfplot中没有拟合,这就是为什么我的图形像楼梯。我希望它更加平滑完全正确,只是一个小小的补充:从非统计的角度来看,可以简单地使用平滑插值方法,例如三次平滑样条线(
csaps
,来自曲线拟合工具箱)。这在概念上类似于核估计,但与固定的核带宽相比,它可能更好地适应局部平滑度。非常感谢您广泛地回答我的问题谢谢您的建议,但正如前面提到的,并非所有数据都适合曲线拟合工具箱。