关于曲线拟合时出现的问题
我有一些数据,用ksdensity画出这些数据的概率分布图,然后用带有双参数的函数{a/b*(abs(x).^(a-1)).*exp(-abs(x).^a/b)}进行曲线拟合,想求出两个参数值a,b。但问题是拟合后的图像如下图所示:其中,黑色的线是数据的概率分布曲线,红线是函数的拟合曲线,效果非常不好。。请问,有什么办法解决呢?程序如下:
clear;clc
Yres=load('H:\DctResidual.txt');
=ksdensity(Yres(:));
a0=;
options=optimset('fminsearch');
options.TolX=0.000001; % 控制被估参数的迭代精度
options.Display='off'; % 避免显示收敛信息
a=fminsearch(@funcexps,a0,options,xi,Y); % 计算二乘残差最小时的参数估计
y_est=a(1)/a(2)*(abs(xi).^(a(1)-1)).*exp(-(abs(xi).^a(1))/a(2));%Weibull分布
figure,plot(xi,Y,'.k',xi,y_est,'-r')
funcexps函数如下:
function E=funcexps(a,x,y)
x=x(:);
y=y(:);
Y=a(1)/a(2)*(abs(x).^(a(1)-1)).*exp(-(abs(x).^a(1))/a(2)); %韦布尔分布
E=sum((y-Y).^2); % 二乘残差
数据文件:
[ 本帖最后由 maigicku 于 2010-4-13 16:07 编辑 ] 统计的东西忘干净了! :@L
但此现象直觉LZ所用的拟合函数或许不适当!?
ksdensity使用的default好像是normal!
同待高人路过 真的不希望函数不合适。后来用MATLAB自带的curve fitting工具进行拟合,效果也不好,主要是黑线的点太集中在两边的,拟合时是按95%置信区间来拟合,因而优先选择拟合的是两边的点。。。囧~~~ 对于这种尖峰厚尾的分布,很难确定其密度函数,在金融风险分析中经常会遇到这种类型的分布,通常的做法是用t分布来描述分布的尾部特征。其实用核密度函数描述它就行了,没必要在核密度估计的基础上再做拟合。
回复 地板 xiezhh 的帖子
感谢谢老师的回复。。不过我用ksdensity做的分布是图像的DCT系数分布,而我现在研究的内容是要找到一个合适的函数模型去逼近这个DCT系数分布。。现在目前最好的逼近函数是Cauchy,所以我要找到一个更加逼近DCT系数分布的一个函数。。请谢老师帮忙解答一下,这种情况应怎么处理?还是说这个函数不合适,应找另外的函数来逼近?如果是重新找的话,什么函数会更加合适呢? 柯西(Cauchy)分布不能很好的描述你的数据,想要找到一个合适的密度函数来描述你的数据是很困难的,我也一直没有找到合适的密度函数,我继续研究研究。 感谢谢老师帮忙。。 xiezhh 发表于 2010-4-19 18:29 static/image/common/back.gif柯西(Cauchy)分布不能很好的描述你的数据,想要找到一个合适的密度函数来描述你的数据是很困难的,我也一 ...
请问老师,如果cdf函数的曲线用什么来拟合效果较好呢?
页:
[1]