正態檢驗與R語言
1.Kolmogorov–Smirnov test
R函數:
ks.test(x, y, ..., alternative = c("two.sided", "less", "greater"), exact = NULL)
使用說明:
參數設置:
x:觀測值向量
y:第二觀測值向量或者累計分布函數,如pnorm(正態分布函數,一般做正態檢測的時候直接輸入pnorm),只對連續CDF有效
alternative = c("two.sided", "less", "greater"):雙側檢驗還是單側檢驗
exact:默認為NULL,也可以是其他邏輯值,表明是否需要計算精確的P值
結果解釋:
D:D值越小,越接近0,表示樣本數據越接近正態分布(簡單來說,D越小越好)
p:p-value小於顯著性水平α(0.05),則拒絕H0(p越大越好)
注意事項:
在做單樣本K-S檢驗或者正態檢驗時,有時會有錯誤提示“Kolmogorov - Smirnov檢驗里不應該有連結”,這是因為K-S檢驗只對連續CDF有效,而連續CDF中出現相同值的概率為0,也就是說數據中倘出現相同值,則連續分布的假設不成立,因此R會報錯。這也提醒我們,在做正態性檢驗之前,要先對數據進行描述性分析,對數據整體要先有個大致的認識,這也才后續才能選擇正確的檢驗方法。
Example:
例:35位健康男性在未進食前的血糖濃度如表所示,試測驗這組數據是否來自均值μ=80,標准差σ=6的正態分布 87 77 92 68 80 78 84 77 81 80 80 77 92 86 76 80 81 75 77 72 81 90 84 86 80 68 77 87 76 77 78 92 75 80 78 (n=35)
H0:健康成人男性血糖濃度服從正態分布
H1: 健康成人男性血糖濃度不服從正態分布
blo<-c(87,77,92,68,80,78,84,77,81,80,80,77,92,86,76,80,81,75,77,72,81,90,84,86,80,68,77,87,76,77,78,92,75,80,78) aa<-scale(blo)#標准化 ks.test(aa,pnorm)
結果解釋:D小,p大,故不能拒絕H0,即健康成年男人血糖濃度服從正態分布。
data: aa D = 0.16523, p-value = 0.2949 alternative hypothesis: two-sided
2.Anderson–Darling test
Anderson–Darling檢驗是一種用來檢驗給定的樣本是否來自於某個確定的概率分布的統計檢驗方法。在R語言中,我們可以從nortest包中的ad.test()進行檢驗。
R函數:
ad.test(x)
使用說明:
參數設置:
x:觀測值向量,是數字向量即可,可以存在缺失值;非缺失值數量必須>7。
結果解釋:
A值:A越小,越接近0,表示樣本數據越接近正態分布
p值:如果p-value小於顯著性水平α(0.05),則拒絕H0
Example:
library("nortest") x<-rnorm(10,0,2) ad.test(x) Anderson-Darling normality test data: x A = 0.22765, p-value = 0.7452
3.Shapiro-Wilk test
Shapiro-Wilk檢驗在小樣本情況下,是很普通的正態性檢驗方法,Shapiro.test()在默認安裝的stats包中。原假設H0:數據符合正態分布。然而, 因為樣本量的大小會導致檢驗存在偏差,檢驗在任何大樣品中可能有統計學意義上的正態分布。因此, 除了Shapiro-Wilk test 之外, 還需要進行 Q–Q 的圖形驗證。
(檢驗統計量W)
R函數:
shapiro.test(x)
使用說明:
參數設置:
x:觀測值向量,是數字向量即可,可以存在缺失值;非缺失值數量必須>3且<5000。
結果解釋:
W值:W越小,越接近0,表示樣本數據越接近正態分布
p值:如果p-value小於顯著性水平α(0.05),則拒絕H0
Example:
x<-rnorm(10,0,2) shapiro.test(x) Shapiro-Wilk normality test data: x W = 0.92412, p-value = 0.3926
4.Lilliefor test
Lilliefor test是基於Kolmogorov–Smirnov test的一種正態性檢驗。原假設H0:數據符合正態分布,其檢驗沒有確定來自哪一個具體的正態分布。lillie.test()也在nortest包中。
R函數:
lillie.test(x)
使用說明:
參數設置:
x:觀測值向量,是數字向量即可,可以存在缺失值;非缺失值數量必須>4。
結果解釋:
D值:D越小,越接近0,表示樣本數據越接近正態分布
p值:如果p-value小於顯著性水平α(0.05),則拒絕H0
Example:
library("nortest") x<-rnorm(10,0,2) lillie.test(x) Lilliefors (Kolmogorov-Smirnov) normality test data: x D = 0.20253, p-value = 0.2906