計量經濟學(十)——正態性檢驗(Normality Test)

郝hai發表於2024-10-17

正態性檢驗(Normality Test)是一種用於判斷資料是否服從正態分佈的重要統計方法,許多統計模型,如線性迴歸、VAR模型等,要求殘差或誤差項服從正態分佈。這一假設是保證模型估計有效性和推斷準確性的關鍵條件,誤差項的正態性有助於確保引數估計無偏、方差最小以及檢驗結果的可靠性。在時間序列分析中,正態性假設的驗證是確保模型預測準確性和穩定性的必要步驟。違反正態性假設可能導致引數估計不準確、顯著性檢驗失效,因此,正態性檢驗是模型診斷中不可忽視的一環。

計量經濟學(十)——正態性檢驗(Normality Test)

一、正態性檢驗的意義

在許多統計模型中,如線性迴歸模型、VAR(向量自迴歸)模型、ARIMA模型等,殘差或誤差項的正態性假設是非常關鍵的一部分。這一假設的主要目的是確保引數估計的有效性、漸近正態性以及最小方差無偏估計(BLUE)的實現。在這些模型中,誤差項是否符合正態分佈直接影響到引數估計、顯著性檢驗以及推斷統計的準確性。

正態性假設在統計模型中佔據核心地位,尤其是線上性迴歸、VAR和ARIMA等時間序列模型中,正態性假設為模型的健全性提供了理論基礎。具體來說,正態性假設有助於:
引數估計的有效性:假設殘差服從正態分佈,可以透過最小二乘法(OLS)或最大似然估計法(MLE)得到最優的引數估計值。當殘差符合正態分佈時,這些估計值不僅是無偏的,而且具有最小方差,從而確保了模型的可靠性。
漸近正態性:即便在樣本量較小時,正態性假設也有助於引數估計在樣本量增大的過程中逐漸呈現正態分佈,這一性質稱為漸近正態性。這使得在大樣本條件下,引數的估計量可以更準確地接近其真實值。
推斷統計的有效性:在許多經典的統計推斷方法中,如t檢驗、F檢驗等,都依賴於正態分佈的假設。正態性假設確保了這些檢驗方法的適用性,使得我們能夠對迴歸係數的顯著性、模型整體的顯著性以及置信區間的構建進行合理的判斷。

然而,正態性假設在實際應用中並非總是成立。當誤差項不服從正態分佈時,可能會帶來以下問題:

引數估計不準確:當殘差不服從正態分佈時,最小二乘法或最大似然估計可能不再是最優的。這意味著所估計的模型引數可能會產生偏差,尤其是在樣本量有限的情況下,這種偏差會更加明顯。引數估計的誤差不僅影響模型解釋,還可能導致對未來資料的錯誤預測。
置信區間與顯著性檢驗失效:正態性假設的違反會影響標準誤差的估計。由於t檢驗和F檢驗的推導依賴於正態分佈,誤差項非正態分佈時,這些檢驗的結果可能會不準確。具體來說,過度估計或低估了模型引數的顯著性,導致假陽性或假陰性結果。這種情況下,研究者可能會錯誤地判斷模型是否具有統計顯著性,進而影響決策。

計量經濟學(十)——正態性檢驗(Normality Test)

二、常見的正態性檢驗方法

正態性檢驗是統計分析中非常重要的一步,它可以幫助我們判斷資料是否符合正態分佈,從而決定是否使用基於正態分佈假設的統計方法。以下是幾種常見的正態性檢驗方法,包括它們的檢驗統計量、判斷過程和適用情況。

2.1 圖示法

圖示法是一種直觀的檢驗方法,主要透過繪製QQ圖或殘差直方圖來判斷資料的正態性。

QQ圖(Quantile-Quantile Plot)
  • 檢驗統計量:QQ圖沒有特定的檢驗統計量,而是透過視覺判斷資料點是否大致沿著一條直線分佈。
  • 判斷過程
    • 繪製QQ圖,將實際資料的分位數與正態分佈的理論分位數進行比較。
    • 如果資料點基本沿著一條直線分佈,則表明資料符合正態分佈。
    • QQ圖特別適合用來檢測資料在尾部是否偏離正態分佈。
直方圖
  • 檢驗統計量:直方圖同樣沒有特定的檢驗統計量,而是透過視覺判斷資料分佈的形狀。
  • 判斷過程
    • 繪製殘差的直方圖,可以直觀地判斷資料分佈的形狀。
    • 如果直方圖呈現鐘形且對稱,則資料大致服從正態分佈。

2.2 Jarque-Bera檢驗

Jarque-Bera(簡稱JB)檢驗是一種基於偏度和峰度的正態性檢驗方法。

  • 檢驗統計量

    \[JB = \frac{n}{6} \left( S^2 + \frac{(K - 3)^2}{4} \right) \]

    其中,\(S\)為偏度(Skewness),\(K\)為峰度(Kurtosis),\(n\)為樣本容量。

  • 判斷過程

    • 對於正態分佈,偏度應接近0,峰度應接近3。
    • 計算JB檢驗統計量,若JB檢驗的p值小於給定的顯著性水平(如0.05),則拒絕原假設,表明資料不符合正態分佈。

2.3. Shapiro-Wilk檢驗

Shapiro-Wilk檢驗是一種用於判斷資料正態性的統計方法,特別適用於小樣本資料。它透過將樣本資料排序後,比較其與正態分佈理論值的偏差來判斷資料的正態性。

  • 檢驗統計量
    Shapiro-Wilk檢驗的檢驗統計量較為複雜,具體表示式如下:

\[W = \frac{\left( \sum_{i=1}^{n} a_i x_{(i)} \right)^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \]

其中:\(x_{(i)}\)為排序後的樣本資料;\(\bar{x}\)為樣本均值;\(a_i\)是依賴於正態分佈的常數。

  • 判斷過程
    • Shapiro-Wilk檢驗的p值越大,越表明資料接近正態分佈;
    • 若p值較小(如小於0.05),則拒絕原假設,認為資料不符合正態分佈。

2.4 Kolmogorov-Smirnov檢驗

Kolmogorov-Smirnov(簡稱K-S)檢驗是一種非引數檢驗方法。

  • 檢驗統計量

    \[D = \max \left| F_n(x) - F(x) \right| \]

    其中,\(F_n(x)\)是樣本資料的累積分佈函式,\(F(x)\)是理論分佈(如正態分佈)的累積分佈函式。

  • 判斷過程

    • 透過比較樣本資料的累積分佈函式與理論分佈的累積分佈函式之間的差異,來判斷樣本是否服從正態分佈。
    • 儘管K-S檢驗對資料規模較大的情況下較為敏感,但其主要問題在於對樣本分佈形狀的微小偏差也非常敏感,可能導致過於保守的檢驗結果。

正態性檢驗是資料分析中的重要步驟,選擇合適的檢驗方法可以幫助我們更準確地理解資料的特性。圖示法提供了直觀的視覺判斷,而Jarque-Bera檢驗、Shapiro-Wilk檢驗和Kolmogorov-Smirnov檢驗則提供了基於統計量的定量判斷。在實際應用中,可以根據資料的樣本量和分佈特性選擇合適的檢驗方法。

計量經濟學(十)——正態性檢驗(Normality Test)

三、案例分析

一家加工食品生產公司的科研人員想評估本公司生產的瓶裝醬料的脂肪百分比。宣傳的百分比為 15%。科研人員測量了 20 個隨機樣本的脂肪百分比資料見下表,試判定其分佈是否正態。

樣本 ID 脂肪百分比 樣本 ID 脂肪百分比
1 15.2 11 18.5
2 12.4 12 16.3
3 15.4 13 20.0
4 16.5 14 19.2
5 15.9 15 12.3
6 17.1 16 12.8
7 16.9 17 17.9
8 14.3 18 16.3
9 19.1 19 18.7
10 18.2 20 16.2
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
from statsmodels.graphics.gofplots import qqplot
from scipy.stats import jarque_bera, shapiro, kstest

# 資料
fat_percent = np.array([15.2, 12.4, 15.4, 16.5, 15.9, 17.1, 16.9, 14.3, 19.1, 18.2, 
                        18.5, 16.3, 20.0, 19.2, 12.3, 12.8, 17.9, 16.3, 18.7, 16.2])

# 繪製直方圖
plt.hist(fat_percent, bins=5, edgecolor='black', alpha=0.7)
plt.title('Fat Percentage Histogram')
plt.xlabel('Fat Percentage')
plt.ylabel('Frequency')
plt.show()

# 繪製QQ圖
qqplot(fat_percent, line='s')
plt.title('QQ Plot of Fat Percentage')
plt.show()

# Jarque-Bera 檢驗
jb_stat, jb_p = jarque_bera(fat_percent)
print(f"Jarque-Bera Test: Stat = {jb_stat:.4f}, p-value = {jb_p:.4f}")

# Shapiro-Wilk 檢驗
sw_stat, sw_p = shapiro(fat_percent)
print(f"Shapiro-Wilk Test: Stat = {sw_stat:.4f}, p-value = {sw_p:.4f}")

# Kolmogorov-Smirnov 檢驗
ks_stat, ks_p = kstest(fat_percent, 'norm', args=(np.mean(fat_percent), np.std(fat_percent)))
print(f"Kolmogorov-Smirnov Test: Stat = {ks_stat:.4f}, p-value = {ks_p:.4f}")

# 正態性檢驗總結
if jb_p > 0.05 and sw_p > 0.05 and ks_p > 0.05:
    print("根據各項檢驗,資料接近正態分佈。")
else:
    print("資料可能不符合正態分佈。")
Jarque-Bera Test: Stat = 0.9626, p-value = 0.6180
Shapiro-Wilk Test: Stat = 0.9484, p-value = 0.3434
Kolmogorov-Smirnov Test: Stat = 0.1030, p-value = 0.9691
根據各項檢驗,資料接近正態分佈。
直方圖 Q-Q圖

總結

正態性檢驗是統計模型中重要的診斷步驟,尤其在時間序列分析和迴歸模型中,確保資料或殘差的正態分佈至關重要。它不僅幫助驗證模型的適用性,還對提高引數估計的精確性和統計推斷的可靠性有重要意義。透過正態性檢驗,研究者可以判斷資料是否符合正態分佈假設。如果殘差不服從正態分佈,可能會導致引數估計偏差、置信區間不準確、顯著性檢驗失效等問題。為此,在模型診斷階段,圖示法(如QQ圖、直方圖)和統計檢驗法(如Jarque-Bera檢驗、Shapiro-Wilk檢驗等)被廣泛應用。這些方法結合使用,能夠幫助研究者更準確地判斷資料分佈特性。如果正態性假設不成立,研究者可透過資料變換或選擇其他方法來提高模型的準確性和穩健性,從而為研究結論提供更可靠的支援。

計量經濟學(十)——正態性檢驗(Normality Test)

參考資料

  1. 正態性檢驗
  2. 正態性檢驗全流程

相關文章