Hi, I am

Ngô Tôn

I am a programmer.

Home / HCMUS / Probability and Statistics / Kiểm định giả thuyết thống kê trong R

Kiểm định giả thuyết thống kê trong R

1.  Kiểm định tỉ lệ

Giả sử ta muốn khảo sát tỉ lệ giới tính trong một tổng thể (population) là tất cả cư dân của một thành phố. Từ tổng thể, ta thu thập được một mẫu dữ liệu ngẫu nhiên (random sample) gồm 100 người trong đó có 60 nữ và 40 nam. Dựa vào mẫu dữ liệu này, ta kiểm định nghi vấn “tỉ lệ nữ của thành phố là cao hơn nam” với mức ý nghĩa (significance level) 5%.

Các bước tính toán có thể thực hiện trong R như sau:

Hoặc có thể thực hiện nhanh bằng hàm prop.test như sau:

Lưu ý, vì prop.test dùng công thức khác (có hiệu chỉnh liên tục với phân phối Chi-bình phương) nên kết quả tính có khác chút xíu so với cách dùng công thức dựa trên phân phối chuẩn ở trên.

Ta cũng có thể xây dựng khoảng tin cậy trên 1 − α cho e là [a, 1] với

a = ê − |zα|se = 0.6 − 1.6449 × 0.05 = 0.5178

Từ đó, khoảng tin cậy 95% trên cho e là [0.52, 1]. Vì eO = 0.5 không nằm trong khoảng tin cậy này nên ta bác bỏ HO với mức ý nghĩa 1 − 0.95 = 0.05.

Kiểm định bằng mô phỏng randomization:

Mô tả dữ liệu và thống kê tương ứng

Một mẫu randomization (randomization sample) là mẫu cùng kích thước như mẫu được cho, lấy theo phương pháp lấy mẫu tương ứng với giả sử giả thuyết mặc định đúng. Bằng cách lấy nhiều mẫu randomization và tính thống kê tương ứng, ta có tập kết quả thể hiện sự biến động của thống kê kiểm định theo mẫu (khi giả thuyết mặc định đúng), gọi là phân phối randomization (randomization distribution). Kĩ thuật mô phỏng này được gọi là randomization.

Chạy với số lượng mẫu randomization B đủ lớn thì phâp phối randomization có thể được dùng để “xấp xỉ” phân phối mẫu mặc định. Từ đó ta có thể xấp xỉ p-value cần tính bằng tỉ lệ điểm “khó xảy ra như hoặc hơn” giá trị tương ứng của thống kê trên mẫu được cho. Cũng lưu ý là mỗi lần chạy sẽ có kết quả khác nhau do ngẫu nhiên.

Chẳng hạn thử với B = 10000

Vậy p-value xấp xỉ bằng randomization là 0.0271. Kết quả này rất giống với kết quả tính bằng công thức lý thuyết.

Ta cũng có thể xây dựng khoảng tin cậy bằng bootstrap và kiểm định như sau:

2.  Kiểm định kì vọng

Giả sử ta muốn khảo sát chiều cao trung bình của một tổng thể là tất cả cư dân của một thành phố. Từ tổng thể, ta thu thập được một mẫu dữ liệu ngẫu nhiên gồm chiều cao của 40 người như bảng dưới. Dựa vào mẫu dữ liệu này, ta kiểm định nghi vấn “chiều cao trung bình của cư dân thành phố là 1.60 mét” với mức ý nghĩa 5%.

Bảng dữ liệu chiều cao 40 người (đơn vị mét)

1.56 1.47 1.59 1.65 1.62 1.78 1.69 1.49 1.92 1.55
1.65 1.52 1.65 1.60 1.71 1.48 1.69 1.65 1.59 1.74
1.70 1.61 1.58 1.65 1.75 1.65 1.46 1.53 1.59 1.62
1.60 1.55 1.57 1.46 1.57 1.63 1.46 1.68 1.53 1.48

 

Các bước tính toán có thể thực hiện trong R như sau:

sample1  <-  c(1.56, 1.47, 1.59, 1.65, 1.62, 1.78, 1.69, 1.49, 1.92, 1.55,
1.65, 1.52, 1.65, 1.60, 1.71, 1.48, 1.69, 1.65, 1.59, 1.74,
1.70, 1.61, 1.58, 1.65, 1.75, 1.65, 1.46, 1.53, 1.59, 1.62,
1.60, 1.55, 1.57, 1.46, 1.57, 1.63, 1.46, 1.68, 1.53, 1.48)

 

n  <-  length(sample1);  mu0  <-  1.6;

(x_bar  <-  mean(sample1))

anpha <- 0.05
1.60675    
(se  <-  sd(sample1)/sqrt(n)) 0.01557606

(t  <-  (x_bar  –  mu0)/se)

   
0.4333572

(p_value <- 2*(1 – pt(t, df = n –

 

1)))

 
0.6671428

(crit_val  <-  qt(1  –  anpha/2,  df  =

 

n – 1))

 
2.022691

p_value  <  anpha;  crit_val  <  t FALSE FALSE

   

 

Hoặc có thể thực hiện nhanh bằng hàm t.test như sau:

Ta cũng có thể xây dựng khoảng tin cậy giữa 1 − α cho µ là [a, b] với

1–α/2
[a, b] = x̅ ± tn–1 se = 1.6068 ± 2.0227 × 0.0156 = [1.5752, 1.6384]

 

Từ đó, khoảng tin cậy 95% giữa cho µ là [0.52, 1]. Vì µO = 1.60 nằm trong khoảng tin cậy này nên ta không bác bỏ HO với mức ý nghĩa 1 − 0.95 = 0.05.

Kiểm định bằng mô phỏng randomization:

Để giả thuyết HO: µ = µO = 1.60 đúng, ta cần dịch (shift) các dữ liệu trong mẫu được cho một khoảng là µO − x̅ trước khi lấy mẫu randomization.

Với dữ liệu đã được nhập như trên, ta mô tả thêm thống kê tương ứng (ở đây là trung bình mẫu) và hàm thực hiện randomization như phần 1

Chạy thử với B = 10000

Vậy p-value xấp xỉ bằng randomization là 0.6668. Kết quả này rất giống với kết quả tính bằng công thức lý thuyết.

Từ mẫu dữ liệu được cho ở trên, ta cũng có thể xây dựng khoảng tin cậy bằng bootstrap và kiểm định như sau:

Lưu ý là code chạy mô phỏng trong phần 2 này rất giống code chạy mô phỏng trong phần 1, chỉ khác hàm tính thống kê (ở đây là trung bình mẫu so với phần 1 là tỉ lệ mẫu) và hiệu chỉnh cho kiểm định hai phía (so với phần 1 là kiểm định một phía).

3. Kiểm định trung vị

Giả sử cùng tổng thể và mẫu dữ liệu ở phần 2 nhưng ta muốn kiểm định trung vị (median) thay vì trung bình chiều cao. Mặc dù trung bình thường được sử dụng như là con số mô tả trọng tâm của phân phối, nó lại rất nhạy cảm với ngoại lệ (outlier). Nghĩa là, trung bình thay đổi rất nhiều khi mẫu dữ liệu có ngoại lệ. Chẳng hạn trong mẫu dữ liệu ở phần 2 ta có một dữ liệu là 1.92, lớn hơn rất nhiều so với các dữ liệu còn lại. (Trong trường hợp này, đây có thể là chiều cao của một người nước ngoài, đã bị lấy mẫu nhầm:)).

Trong những trường hợp như thế này ta có thể dùng trung vị là một thống kê ít bị ảnh hưởng bởi ngoại lệ. Việc xây dựng khoảng tin cậy cho trung vị phức tạp hơn cho trung bình. Tuy nhiên, với phương pháp tổng quát và đơn giản như randomization, ta dễ dàng làm được điều này.

Với dữ liệu và đoạn mã randomization như phần 2, ta chỉ cần sửa lại thống kê tương ứng để tính trung vị của mẫu thay vì trung bình

Chạy thử với B = 10000

Vậy p-value xấp xỉ bằng randomization là 0.8533 > α = 0.05, do đó ta không bác bỏ giả thuyết HO: median= 1.60 (với đối thuyết H1: median≠ 1.60). Lưu ý là code chạy mô phỏng trong phần này hoàn toàn giống code chạy mô phỏng trong 2 phần trên, chỉ khác hàm tính thống kê (ở đây là trung vị mẫu).

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Leave a Reply

avatar
  Subscribe  
Notify of