频率分布直⽅图函数matlab,直⽅图与概率密度函数叠加—基
于matlab
统计数据的时候,经常需要把数据的直⽅图和概率密度函数叠加。⽤matlab编程完成这项功能的时候,有⼀些技巧需要掌握。下⾯从理论上说明编程的技巧,并举例。
对于⼀个样本容量为n的数据集,假定在做直⽅图时,分割的⼩区间的长度是 d。于是在第i个区间上的频率可以表⽰为:
另⼀⽅⾯,如果密度函数为f(x),则此区间上的概率可以⽤密度函数表⽰:
我们知道,概率可以⽤频率近似表⽰,于是有:
也就是说,频率要先除以被分割后的⼩区间的长度,然后做出的直⽅图才能与密度函数图像叠加。
例:做出下列数据的直⽅图,并叠加正态分布密度函数图像:
data=[459  362  624  542  509  584  433  748  815  505 ...  612  452  434  982  640  742  565  706  593  680 ...  926  653  164  487  734  608  428  1153  593  844 ...  527  552  513  781  474  388  824  538  862  659 (775)
matlab直方图859  755  49  697  515  628  954  771  609 ...  402  960  885  610  292  837  473  677  358  638 ...  699  634
555  570  84  416  606  1062  484  120 ...  447  654  564  339  280  246  687  539  790  581 ...  621  724  531 512  577  496  468  499  544  645 ...  764  558  378  765  666  763  217  715  310  851];
u=mean(data);v=std(data);%计算期望⽅差h=max(data)-min(data); %计算极差%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下做频率图%%%%%%%d=h/10; %将数据范围等分成⼗个区间,计算⼩区间的长度[n,x]=hist(data,10);%计算每个⼩区间内的频数及区间中点
值f=n/length(data);%计算频率f1=f/d;%频率除以分割区间的长度bar(x,f1)%画出频率的柱状图hold on %%%%%%%%%%%%%%%%%%%%%%%%%%以下做密度函数图
像%%%%%x1=min(data):0.1:max(data);y=normpdf(x1,u,v);plot(x1,y,'r','LineWidth',5)%叠加正态分布密度函数