ks检验正态分布结果_统计学里的数据正态性检验
在前面的文章中講過,很多模型的假設條件都是數據是服從正態分布的。這篇文章主要講講如何判斷數據是否符合正態分布。主要分為兩種方法:描述統計方法和統計檢驗方法。
01.描述統計方法
描述統計就是用描述的數字或圖表來判斷數據是否符合正態分布。常用的方法有Q-Q圖、P-P圖、直方圖、莖葉圖。
1.1 Q-Q圖
此Q-Q非用于聊天的QQ,Q是quantile的縮寫,即分位數。分位數就是將數據從小到大排序,然后切成100份,看不同位置處的值。比如中位數,就是中間位置的值。
Q-Q圖的x軸為分位數,y軸為分位數對應的樣本值。x-y是散點圖的形式,通過散點圖可以擬合出一條直線,如果這條直線是從左下角到右上角的一條直線,則可以判斷數據符合正態分布,否則則不可以。
擬合出來的這條直線和正態分布之間有什么關系呢?為什么可以根據這條直線來判斷數據是否符合正態分布呢。
我們先來想一下正態分布的特征,正態分布的x軸為樣本值,從左到右x是逐漸增大的,y軸是每個樣本值對應的出現的概率。概率值先上升后下降,且在中間位置達到最高。
可以把Q-Q圖中的y軸理解成正態分布中的x軸,如果擬合出來的直線是45度,可以保證中位數兩邊的數值分布是一樣的,即正態分布中基于中位數左右對稱。
在Python中可以使用如下代碼來繪制Q-Q圖:
from scipy import stats fig = plt.figure() res = stats.probplot(x, plot=plt) plt.show()與Q-Q圖類似的是P-P圖,兩者的區別是前者的y軸是具體的分位數對應的樣本值,而后者是累計概率。
1.2 直方圖
直方圖分為兩種,一種是頻率分布直方圖,一種是頻數分布直方圖。頻數就是樣本值出現的次數,頻率是某個值出現的次數與所有樣本值出現總次數的比值。
在Python中我們可以使用如下代碼來繪制頻數分布直方圖:
import matplotlib.pyplot as plt plt.hist(x,bins = 10)可以使用如下代碼來繪制頻率分布直方圖:
import seaborn as sns sns.distplot(x)與直方圖類似的還有莖葉圖,莖葉圖是類似于表格形式去表示每個值出現的頻次。
02.統計檢驗方法
講完了描述統計的方法,我們來看一下統計檢驗的方法。統計檢驗的方法主要有SW檢驗、KS檢驗、AD檢驗、W檢驗。
SW檢驗中的S就是偏度,W就是峰度,峰度和偏度與正態的關系我們在前面的文章有講過。
2.1 KS檢驗
KS檢驗是基于樣本累積分布函數來進行判斷的。可以用于判斷某個樣本集是否符合某個已知分布,也可以用于檢驗兩個樣本之間的顯著性差異。
如果是判斷某個樣本是否符合某個已知分布,比如正態分布,則需要先計算出標準正態分布的累計分布函數,然后在計算樣本集的累計分布函數。兩個函數之間在不同的取值處會有不同的差值。我們只需要找出來差值最大的那個點D。然后基于樣本集的樣本數和顯著性水平找到差值邊界值(類似于t檢驗的邊界值)。判斷邊界值和D的關系,如果D小于邊界值,則可以認為樣本的分布符合已知分布,否則不可以。
PDF( probability density function):概率密度函數。CDF( cumulative distribution function):累積分布函數,是概率密度函數的積分。
在Python中有現成的包可以直接用于KS檢驗:
from scipy.stats import kstest kstest(x,cdf = "norm")x表示待檢驗的樣本集,cdf用來指明要判斷的已知分布類型,有:‘norm’,’expon’,’logistic’,’gumbel’,’gumbel_l’, gumbel_r’,
‘extreme1’值可以選,其中norm表示正態分布檢驗。
kstest會返回兩個值:D和對應的p_value值。
2.2 AD檢驗
AD檢驗是在KS基礎上進行改造的,KS檢驗只考慮了兩個分布之間差值最大的那個點,但是這容易受異常值的影響。AD檢驗考慮了分布上每個點處的差值。
在Python中可以用如下代碼:
from scipy.stats import anderson anderson(x, dist='norm')x為待檢驗的樣本集,dist用來指明已知分布的類型。可選值與ks檢驗中可選值一致。
上面代碼會返回三個結果: 第一個為統計值,第二個為評判值,第三個為每個評判值對應的顯著性水平
AD檢驗和anderson有啥關系呢?anderson發明了AD檢驗。
2.3 W檢驗
W檢驗(Shapiro-Wilk的簡稱)是基于兩個分布的相關性來進行判斷,會得出一個類似于皮爾遜相關系數的值。值越大,說明兩個分布越相關,越符合某個分布。
在Python中的實現代碼如下:
from scipy.stats import shapiro shapiro(x)上面的代碼會返回兩個結果:W值和其對應的p_value。
shapiro是專門用于正態性檢驗的,所以不需要指明分布類型。且 shapiro 不適合做樣本數>5000的正態性檢驗。
03.非正態數據的處理辦法
一般數據不是正態就是偏態,如果偏態不嚴重可以對數據取平方根來進行轉換。如果偏態很嚴重,則可以對數據進行對數轉換。轉換方法在偏態文章中也有講過。
總結
以上是生活随笔為你收集整理的ks检验正态分布结果_统计学里的数据正态性检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7驱动程序未经签名可以使用吗_如何
- 下一篇: vins中imu融合_双目版 VINS