Kolmogorov-Smirnov檢驗 (KS檢驗)
引言
統計分析中使用了許多工具和方法來幫助將原始資料轉化為有見地的資訊。Kolmogorov-Smirnov檢驗 (KS檢驗) 就是這樣一個強大的工具,它以其適應性和穩健性而聞名。這種非引數檢驗是資料分析領域的主要方法,以比較兩個樣本或將樣本與參考機率分佈(單樣本KS檢驗)進行比較而聞名。在本文中,我們將解釋KS檢驗的概念、用途和工作原理,並提供用Python編寫的示例以方便理解。
解讀Kolmogorov-Smirnov檢驗
KS檢驗是由 Nikolai Smirnov 和 Andrey Kolmogorov 開發的非引數技術,用於評估資料擬合給定分佈的程度或比較兩個累積分佈函式 (CDF)。由於其非引數特性,它不對服從特定分佈的資料做出任何先驗假設,這增加了它的適應性。
KS檢驗的基本思想是量化樣本的經驗分佈函式 (EDF) 與參考分佈的累積分佈函式 (CDF) 之間,或兩個經驗樣本的CDF之間的最大差距 (D)。
Kolmogorov-Smirnov檢驗的Python示例
示例1:Python中的單樣本KS檢驗
假設您有一組50人的體重資料,並且您認為這些體重服從正態分佈。為了檢驗這個假設,請進行單樣本KS檢驗。執行此操作的Python程式碼如下:
# Import necessary libraries
from scipy import stats
import numpy as np
# Generate a sample of size 50 from a normal distribution
np.random.seed(0)
sample = np.random.normal(loc=0, scale=1, size=50)
# One-sample KS Test
d_statistic, p_value = stats.kstest(sample, 'norm')
print("One-sample KS Test:")
print("D statistic:", d_statistic)
print("p-value:", p_value)
輸出
One-sample KS Test: D statistic: 0.10706475374815838 p-value: 0.5781417630622738
在此程式碼中,我們透過在kstest函式中使用'norm'引數將樣本與標準正態分佈進行比較。如果p值小於顯著性水平(通常為0.05),則拒絕原假設。這意味著資料可能不服從正態分佈。
示例2:Python中的雙樣本KS檢驗
假設您想比較來自城市A和城市B的人的體重,以檢視它們是否來自相同的分佈。在這種情況下,雙樣本KS檢驗是理想的選擇。執行此操作的Python程式碼如下:
# Generate another sample of size 50 from a normal distribution
sample_2 = np.random.normal(loc=0.5, scale=1.5, size=50)
# Two-sample KS Test
d_statistic_2, p_value_2 = stats.ks_2samp(sample, sample_2)
print("\nTwo-sample KS Test:")
print("D statistic:", d_statistic_2)
print("p-value:", p_value_2)
ks_2samp函式比較兩個樣本的分佈。如果p值小於我們的顯著性水平,我們拒絕原假設,並得出結論:城市A和城市B的體重來自不同的分佈。
利用Kolmogorov-Smirnov檢驗的力量
由於其適應性,KS檢驗在許多領域都是有用的工具。金融分析師使用該檢驗來確定特定股票的回報是否服從正態分佈。在環境科學中,該檢驗可用於比較兩個不同地區的降雨模式。
KS檢驗在資料科學和機器學習領域也非常有用。例如,在構建預測二元事件的模型時,KS檢驗可以用來比較陽性結果和陰性結果的預測機率分佈。較高的KS統計量表示這些分佈之間存在顯著差異,表明模型成功。
KS檢驗對於數字廣告行業理解使用者行為非常有幫助。例如,該檢驗可以檢查使用者在網頁上花費的時間是否服從特定分佈,從而使公司能夠做出資料驅動的決策。
結論
在統計分析領域,Kolmogorov-Smirnov檢驗是一種強大的非引數技術,用於評估擬合優度和比較不同的樣本。該檢驗在眾多領域的廣泛適用性突顯了它在當今資料驅動環境中的重要性。
KS檢驗易於訪問且易於使用Python實現,可提供可靠的統計洞察。無論您是嘗試驗證機器學習模型效能的資料科學家、檢查資料假設的金融分析師,還是比較資料集的研究人員,KS檢驗都可以成為您進行全面統計檢驗的首選工具。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP