對於任何一個頻率派的數據科學家而言,平常作數據分析不免仍是會用到一些假設檢驗方法作一個數據探索和相關性、差別性分析,而且這也是作後續統計模型(機器學習類預測模型能夠略過)預測的第一步。python
這篇博文目的就是整理基本的假設檢驗方法、適用條件和調用Python(主要是scipy
模塊)的哪些方法。api
這個是不少統計建模的第一步,例如,普通線性迴歸就對殘差有正態性要求。機器學習
特色是比較嚴格,基於的原理是CDF,理論上能夠檢驗任何分佈。學習
scipy.stats.kstest(a_vector_like_data, 'norm')
專門用來檢驗正態分佈。code
scipy.stats.shapiro(a_vector_like_data)
原理是基於數據的skewness和kurtosis,如不明白這兩個意思,自行百度。orm
scipy.stats.normaltest(a_vector_like_data)
是ks檢驗的正態檢驗增強版。ip
scipy.stats.anderson(a_vector_like_data, dist='norm')
對數據有正態性要求ci
scipy.stats.bartlett(a, b)
在數據非正態的狀況下,精度比Bartlett檢驗好,可調中間值的度量數據分析
scipy.stats.levene(a, b, center = 'trimmed')
非參檢驗,不依賴於分佈it
scipy.stats.fligner(a, b, center='mean')
# 獨立兩樣本t檢驗 scipy.stats.ttest_ind(a, b, equal_var=True, nan_policy='omit') # 成對兩樣本t檢驗 scipy.stats.ttest_rel(a, b, equal_var=True, nan_policy='omit') # 經過基本統計量來作獨立兩樣本檢驗 scipy.stats.ttest_ind_from_stats(20.06, 2.902, 50, 13.26, 1.977, 50, equal_var=False)
# wilcox秩序和檢驗,n < 20時獨立樣本效果比較好 scipy.stats.ranksums(a, b) # Mann-Whitney U檢驗, n > 20時獨立樣本,比wilcox秩序和檢驗更穩健 scipy.stats.mannwhitneyu(a, b) # Wilcox檢驗,成對數據 scipy.stats.wilcoxn(a, b, zero_method='wilcox', correction=False)
scipy.stats.f_oneway(a, b, c, ...)
scipy.stats.kruskal(a, b, c,..., nan_policy='omit')
相關性能夠作簡單的特徵工程(特徵篩選)來作監督學習以及做爲類似度(1 - 距離)來作非監督學習。
scipy.stats.pearsonr(a, b)
scipy.stats.spearmanr(a, b)
scipy.stats.pointbiserialr(a, b)
理論上是檢驗兩個變量是否具備單調關係
scipy,stats.kendalltau(a, b, initial_lexsort=None, nan_policy='omit')