統計資料的時候,經常需要把資料的直方圖和機率密度函數疊加。用matlab程式設計完成這項功能的時候,有一些技巧需要掌握。下面從理論上說明程式設計的技巧,并舉例。
對于一個樣本容量為n的資料集,假定在做直方圖時,分割的小區間的長度是 d。于是在第i個區間上的頻率可以表示為:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yM1E2NhRmZ1EGMjNTY2UWNlJzY5UmM1UTYwYWY5QmN48CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
另一方面,如果密度函數為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 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)%疊加正态分布密度函數