Khi chúng ta muốn kiểm định sự khác nhau của 2 phân nhóm hay trong việc phân tích các mô hình hồi quy, thì luôn có một giả thiét rất quan trọng đó là các biến phân tích phải có phân phối chuẩn. Do đó bài này sẽ giúp chúng ta việc đó.

Load Dataset.

rexam  = read.delim("D://Data files/Data files/RExam.dat",header = TRUE)
head(rexam)
##   exam computer lectures numeracy uni
## 1   18       54     75.0        7   0
## 2   30       47      8.5        1   0
## 3   40       58     69.5        6   0
## 4   30       37     67.0        6   0
## 5   40       53     44.5        2   0
## 6   15       48     76.5        8   0

1.Kiểm định phân phối chuẩn bằng biểu đồ.

library(ggplot2)
hist.exam = ggplot(data = rexam,aes(exam))+
  geom_histogram(aes(y=..density..),color="black",fill="white")+
  stat_function(fun = dnorm,
                args = list(mean = mean(rexam$exam,na.rm = TRUE),
                            sd = sd(rexam$exam,na.rm = TRUE)),
                color ='blue',size = 1)
hist.exam

Dựa vào biểu đồ trên ta thấy biểu đồ histogram với đường cong biểu diễn cho phân phối chuẩn không khớp với nhau nên ta có thể nói biến exam không tuân theo phân phối chuẩn.

Và một cách cũng dùng biểu đồ để kiểm định phân bố chuẩn đó là QQ-plot.

library(ggpubr)
qqplot1 = ggqqplot(rexam$exam)
qqplot1

Biểu đồ QQ-plot cho ta thấy những giá trị quan sát đa phần không nằm trên đường thẳng kì vọng của phân phối chuẩn do đó biến exam không có tuân theo phân bố chuẩn.

Một ví dụ khác :

hist.computer = ggplot(data = rexam,aes(lectures))+
  geom_histogram(aes(y=..density..),color="black",fill="white")+
  stat_function(fun = dnorm,
                args = list(mean = mean(rexam$lectures,na.rm = TRUE),
                            sd = sd(rexam$lectures,na.rm = TRUE)),
                color ='blue',size = 1)
hist.computer

Biểu đồ trên cho ta thấy sự trùng khớp đa phần của biểu đồ histgram và đường cong của phân bố chuẩn nên ta có thể kết luận biến lectures tuân theo luật phân bố chuẩn.

Và để yên tâm hơn ta sẽ kiểm tra lại bằng QQ-plot.

ggqqplot(rexam$lectures)

Và biểu đồ QQ-plot cũng cho kết luận biến lectures cũng tuân theo luật phân bố chuẩn.

2 Sử dụng kiểm định Shapiro-Wilk:

Phát biểu giả thuyết thống kê:

\(H_0\): Biến cần kiểm định tuân theo phân phối chuẩn.

\(H_1\): Biến cần kiểm định không tuân theo phân phối chuẩn

Giá trị của thống kê Shapiro-Wilk:

\(W = \dfrac{(\sum_{i=1}^{n}a_{i}x_{i})^2}{\sum_{i=1}^{n}(x_i-\overline{x})^2}\).

Với: \(x_i :\) giá trị thứ i nhỏ nhất của x.

\(a_i:\) Hằng số Shapiro - Wilk.

Xem cụ thể ở đây: “http://www.real-statistics.com/statistics-tables/shapiro-wilk-table/”.

Code trong R:

shapiro.test(rexam$exam)
## 
##  Shapiro-Wilk normality test
## 
## data:  rexam$exam
## W = 0.96131, p-value = 0.004991

Nhìn vào p-value = 0.004991 < 0.05.Ta có thể bác bỏ giả thuyết \(H_0\) hay nói cách khác biến exam không tuân theo luật phân bố chuẩn.

shapiro.test(rexam$lectures)
## 
##  Shapiro-Wilk normality test
## 
## data:  rexam$lectures
## W = 0.97698, p-value = 0.07712

Nhìn vào p-value = 0.07712 > 0.05.Nên ta không đủ cơ sở bác bỏ giả thuyết \(H_0\) hay biến lectures tuân theo luật phân bố chuẩn.

3.Sử dụng kiểm định Anderson-Darling:

Giá trị của thống kê AD:

\(AD = -n-\dfrac{1}{n}\sum_{i=1}^{n}(2i-1)[lnF(x_i)+ln(1-F(x_{n-i+1}))]\).

Với F(x) :hàm phân phối tích lũy của biến cần phân tích.

\(i^{th}\) Giá trị nhỏ nhất thứ i.

Code R:

library(nortest)
ad.test(rexam$exam)
## 
##  Anderson-Darling normality test
## 
## data:  rexam$exam
## A = 1.4031, p-value = 0.001181

Dựa vào p-value = 0.001181 < 0.05.Nên ta có thể bác bỏ giả thuyết \(H_0\) hay biến exam không tuân theo luật phân bố chuẩn.

ad.test(rexam$lectures)
## 
##  Anderson-Darling normality test
## 
## data:  rexam$lectures
## A = 0.49945, p-value = 0.2048

Nhìn vào p-value = 0.2048 > 0.05.Nên ta có không đủ cơ sở bác bỏ \(H_0\) hay biến lectures tuân theo luật phân bố chuẩn.