MATLAB 檢驗資料正態分佈及程式碼實現

一條大魚025發表於2020-09-30

上篇簡要介紹了正態分佈檢測的必要性和主要分析方法,此篇主要介紹如何通過MATLAB判斷分析資料正態特性。

1. 主要方法

MATLAB檢測資料正態特性主要通過數值測定和圖形分析,其中數值測定指通過JB等假設檢驗方法進行測定分析資料,圖形分析方法是指通過分析資料正態擬合程度判斷數是否符合正態分佈,主要有Q-Q圖、直方圖以及normplot工具箱。

2.程式碼實現

(1)假設檢驗

JB: H= jbtest (X)

H = jbtest (X,alpha)

[h, p, jbstat, cv] = jbtest (X,alpha)

其中,alpha為顯著水平(預設0.005)

h 為測試結果,如果h=0,則認為X服從正態分佈,如果 h=1,則否定 X服從正態分佈;

p 為接受假設的概率,p越接近於0,可拒絕正態分佈假設;

CV為是否拒絕原假設的臨界值

其他檢驗方法為:

  • kstest(Kolmogorov-Smirnow)
  • lillietest(Lilliefors test)

對於其他方法不再分析。

(2)圖形分析

  • 直方圖:hist(X,M)

直方圖hist函式中X為被分析資料,可以是單列也可以是多多列,為方便分析顯示一般為單列,M表示將X有序劃分入標量M所指定數目的矩形圖中。

  • normplot函式: normplot(X)

normplot函式直接繪製分析資料的正態概率圖形,其中樣本資料用藍色“+”表示,標準正態線用紅色“-”,判斷標準為:資料越接近於紅色線,其符合正態分佈程度越高,一般情況不會和直線重合。

  • qqplot:qqplot(x)

qqplot(x)顯示樣本資料x的分位數與正態分佈的理論分位數之間的分位數圖。 如果x的分佈是正態的,則資料圖顯示為線性。後面有學者提出可用於判斷不同分佈型別的gqqplot工具箱,其實現程式碼為:gqqplot(X,'normal'),其中 normal表示正態分佈,也可跟根據分析要求選擇 'gamma'等常見分析型別。

3.舉例分析

首先為直方圖,圖中資料為一批樣本某指標含量分佈,所得直方圖橫軸為變數區間、縱軸為設定箱形區間變數個數,由圖可知該指標含量不符合正態分佈。

第二個為normplot,其中橫軸為變數區間,縱軸為累計概率分佈(CDF),紅色點劃線為根據分析資料均值和方差構建的正式正態分佈線,藍色點為分析樣本點,越接近於直線說明樣本正態特性越好,由圖可知,分析資料尾部遠離直線,且中間大量樣本分佈處(14.5)樣本低於直線,因此該分析資料正態性差,或者不服從正態分佈。

第三個為qqplot,該圖的橫軸表示理論分位變數分佈,縱軸辨識實際輸入變數分位數分佈,直線為y=x,對比方法為藍色點分佈在直線上表示服從正態分佈,由圖可知該資料不服從正態分佈,結合上圖發現,qqplot檢驗正態分佈更加直觀,但是具體接近程度還需要結合數值檢測方法實現。

4. 後續

對於非正態分佈,目前有部分方法可以將非正態分佈資料轉換為近似正態分佈,後期有機會再寫一下個人學習結果。

 

完---2020.9.30

 

相關文章