python中正態分布檢驗的方法


對數據進行建模處理時,常需要進行數據分布檢驗。

import numpy as np
from scipy import stats

a = np.random.normal(0,1,50)
'''輸出結果中第一個為統計量,第二個為P值(統計量越接近1越表明數據和正態分布擬合的好,
P值大於指定的顯著性水平,接受原假設,認為樣本來自服從正態分布的總體)'''
print(stats.shapiro(a)) 


'''輸出結果中第一個為統計量,第二個為P值(注:統計量越接近0就越表明數據和標准正態分布擬合的越好,
如果P值大於顯著性水平,通常是0.05,接受原假設,則判斷樣本的總體服從正態分布)'''
print(stats.kstest(a, 'norm')) 


'''輸出結果中第一個為統計量,第二個為P值(注:p值大於顯著性水平0.05,認為樣本數據符合正態分布)'''
print(stats.normaltest(a)) 

 

scipy.stats.kstest(K-S檢驗)

kstest 是一個很強大的檢驗模塊,除了正態性檢驗,還能檢驗 scipy.stats 中的其他數據分布類型,僅適用於連續分布的檢驗,

原假設:數據符合正態分布

kstest(rvs, cdf, args=(), N=20, alternative='two_sided', mode='approx', **kwds)

對於正態性檢驗,我們只需要手動設置三個參數即可:

rvs:待檢驗的一組一維數據

cdf:檢驗方法,例如'norm','expon','rayleigh','gamma',這里我們設置為'norm',即正態性檢驗

alternative:默認為雙尾檢驗,可以設置為'less'或'greater'作單尾檢驗

model:'approx'(默認),使用檢驗統計量的精確分布的近視值,

'asymp':使用檢驗統計量的漸進分布

 

scipy.stats.shapiro(W檢驗)

與 kstest 不同,shapiro 是專門用來做正態性檢驗的模塊

原假設:樣本數據符合正態分布

注意:shapiro是用來檢驗小樣本數據(數據量<>

scipy.stats.shapiro(x, a=None, reta=False)

一般我們只用 x 參數就行,x 即待檢驗的數據

 

scipy.stats.normaltest

normaltest 也是專門做正態性檢驗的模塊,原理是基於數據的skewness和kurtosis

scipy.stats.normaltest(a, axis=0, nan_policy='propagate')

a:待檢驗的數據

axis:默認為0,表示在0軸上檢驗,即對數據的每一行做正態性檢驗,我們可以設置為 axis=None 來對整個數據做檢驗

nan_policy:當輸入的數據中有空值時的處理辦法。默認為 'propagate',返回空值;設置為 'raise' 時,拋出錯誤;設置為 'omit' 時,在計算中忽略空值。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM