Python來作假設檢驗

對於任何一個頻率派的數據科學家而言,平常作數據分析不免仍是會用到一些假設檢驗方法作一個數據探索和相關性、差別性分析,而且這也是作後續統計模型(機器學習類預測模型能夠略過)預測的第一步。python

這篇博文目的就是整理基本的假設檢驗方法、適用條件和調用Python(主要是scipy模塊)的哪些方法。api

正態性檢驗

這個是不少統計建模的第一步,例如,普通線性迴歸就對殘差有正態性要求。機器學習

K-S檢驗

特色是比較嚴格,基於的原理是CDF,理論上能夠檢驗任何分佈。學習

scipy.stats.kstest(a_vector_like_data, 'norm')

Shapiro檢驗

專門用來檢驗正態分佈。code

scipy.stats.shapiro(a_vector_like_data)

Normal檢驗

原理是基於數據的skewness和kurtosis,如不明白這兩個意思,自行百度。orm

scipy.stats.normaltest(a_vector_like_data)

Anderson檢驗

是ks檢驗的正態檢驗增強版。ip

scipy.stats.anderson(a_vector_like_data, dist='norm')

檢驗方差是否齊

Bartlett檢驗

對數據有正態性要求ci

scipy.stats.bartlett(a, b)

Levene檢驗

在數據非正態的狀況下,精度比Bartlett檢驗好,可調中間值的度量數據分析

scipy.stats.levene(a, b, center = 'trimmed')

Fligner-Killeen檢驗

非參檢驗,不依賴於分佈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)

多組數之間的比較

參數方法(1-way anova)

scipy.stats.f_oneway(a, b, c, ...)

非參數方法(Kruskal-Wallis H方法)

scipy.stats.kruskal(a, b, c,..., nan_policy='omit')

(附送)相關性

相關性能夠作簡單的特徵工程(特徵篩選)來作監督學習以及做爲類似度(1 - 距離)來作非監督學習。

參數(Pearson相關係數)

scipy.stats.pearsonr(a, b)

非參數(Spearman相關係數)

scipy.stats.spearmanr(a, b)

二元值和連續值之間的關係(Point-biserial相關係數)

scipy.stats.pointbiserialr(a, b)

分參數的Kendall's Tau

理論上是檢驗兩個變量是否具備單調關係

scipy,stats.kendalltau(a, b, initial_lexsort=None, nan_policy='omit')
相關文章
相關標籤/搜索