天天看點

matlab計算直方圖函數,機率密度函數與直方圖疊加技巧—基于matlab

統計資料的時候,經常需要把資料的直方圖和機率密度函數疊加。用matlab程式設計完成這項功能的時候,有一些技巧需要掌握。下面從理論上說明程式設計的技巧,并舉例。

對于一個樣本容量為n的資料集,假定在做直方圖時,分割的小區間的長度是 d。于是在第i個區間上的頻率可以表示為:

matlab計算直方圖函數,機率密度函數與直方圖疊加技巧—基于matlab

另一方面,如果密度函數為f(x),則此區間上的機率可以用密度函數表示:

matlab計算直方圖函數,機率密度函數與直方圖疊加技巧—基于matlab

我們知道,機率可以用頻率近似表示,于是有:

matlab計算直方圖函數,機率密度函數與直方圖疊加技巧—基于matlab
matlab計算直方圖函數,機率密度函數與直方圖疊加技巧—基于matlab

也就是說,頻率要先除以被分割後的小區間的長度,然後做出的直方圖才能與密度函數圖像疊加。

例:做出下列資料的直方圖,并疊加正态分布密度函數圖像:

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  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)%疊加正态分布密度函數