Kiểm định giả thuyết thống kê (Toán Thống kê Phần 2)

Mở đầu

Kiểm định giả thuyết thống kê là một trong những phương pháp quan trọng nhằm đưa ra kết luận về tập hợp dữ liệu, dựa vào một mẫu dữ liệu nhỏ hơn lấy từ tập hợp đó.
Bài viết dưới đây sẽ đề cập đến 3 vấn đề chính:

  • Giới thiệu bài toán kiểm định giả thuyết thống kê, cộng với phương hướng giải.
  • Ví dụ bài toán, cách giải và code về kiểm định giả thuyết thống kê về tỷ lệ
  • Ví dụ bài toán, cách giải và code về kiểm định giả thuyết thống kê về trung bình.

Người đọc bài viết này nên có những kiến thức cơ bản về phân bố chuẩn, cách tính trung bình, độ lệch chuẩn, và lập trình Python

Kiểm định giả thuyết thống kê (Hypothesis Testing)

Bài toán

Một nhà thần kinh học muốn kiểm tra ảnh hưởng của một loại thuốc đến phản xạ của động vật. Trong thí nghiệm tiêm thuốc vào chuột, kích thích thần kinh, sau đó kiểm tra thời gian phản xạ của chuột.
Nhà thần kinh học tiêm thuốc vào 100 con chuột. Với thí nghiệm trướ,c ông biết rằng: Nếu không tiêm thuốc, thời gian trung bình của thời gian phản xạ của chuột là 1.2 giây. Với thí nghiệm mới, thời gian phản xạ trung bình của chuột được tiêm thuốc là 1.05 giây, và độ lệch chuẩn là 0.5 giây.
Nhà thần kinh học quyết định rằng : Thuốc có tác dụng nếu thời gian phản xạ của chuột thấp hơn so với bình thường.
Giả sử phản xạ của chuột không thay đổi khi tiêm hoặc không thuốc. Nếu khả năng thời gian phản xạ trung bình của chuột tiêm thuốc thấp hơn 5%, ông sẽ kết luận là thuốc có tác dụng.
Hỏi thuốc có tác dụng hay không?

Tạo giả thuyết

Để giải bài toán kiểm định giả thuyết thống kê, đầu tiên ta phải định nghĩa 2 giả thuyết:

  • "Giả thuyết không" (null hypothesis) là giả thuyết nói rằng số liệu thống kê giống với suy đoán trước, không có gì mới.
  • "Giả thuyết nghịch" (alternative hypothesis) được viết dựa theo giả thuyết là số liệu thống kê đã thay đổi. Nếu giả thuyết này được chấp nhận thì đó là thông tin mới.

Ví dụ ở bài toán này giả thuyết sẽ được định nghĩa như sau:

  • Giả thuyết không: Đây là điều nhà thần kinh đã biết. Nhà thần kinh biết thời gian phản xạ trung bình của chuột là 1.2 giây. Giả thuyết không là kể cả nếu tiêm thuốc thì phản xạ của chuột cũng không có gì thay đổi.Nói một cách khác:

H0:thời gian phản xạ trung bình chuột tiêm thuốc = 1.2 giây.

  • Giả thuyết nghịch: Nếu giả thuyết này được chấp nhận thì đây là điều mới đối với nhà thần kinh họ. Nếu tiêm thuốc thì thời gian phản xạ nhỏ hơn so với bình thường.

Ha:thời gian phản xạ trung bình chuột tiêm thuốc < 1.2 giây.

Dựa vào các tính toán sau đây về nghiên cứu và mức ý nghĩa thống kê, ta sẽ đưa ra 1 trong 2 kết luận về giả thuyết:

  1. Bác bỏ giả thuyết không và chấp nhận giả thuyết nghịch
  2. Chúng ta thất bại trong việc bác bỏ giả thuyết không.

Tính z-score (hoặc t-score)

Một trong số những số liệu toán thống kê ta phải tính là z-score (hoặc t-score). Các bạn có thể tự tìm hiểu thêm về số liệu này.
Z-score là số liệu thống kê cho biết: giá trị ta muốn tìm hiểu cách trung bình của phân bố chuẩn bằng bao nhiêu độ lệch chuẩn. Ví dụ z-score = 1 có nghĩa là giá trị bây giờ hơn trung bình 1 độ lệch chuẩn.

Công thức được viết như ở dưới đây:

z-score càng lớn thì giá trị mẫu của ta càng xa trung bình. Điều đấy cũng có nghĩa là với phân bố từ giả thuyết không, xác xuất ta có một mẫu có giá trị trung bình cách xa giá trị trung bình từ giả thuyết không rất thấp. Một giả thuyết khác xảy ra, hợp lý hơn giả thuyết không.

Với bài toán trên ta muốn tìm khả năng ta lấy một mẫu chuật có phản xạ <1.05 giây là bao nhiêu, nếu "thời gian phản xạ trung bình chuột tiêm thuốc = 1.2 giây".

Giả sử giả thuyết không là đúng, ta có phân bố như sau. Ta tính diện tích màu đỏ để tìm khả năng ta lấy một mẫu chuật có phản xạ <1.05 giây là bao nhiêu. Để làm vậy, trước tiên ta tìm z-score.

Theo đề bài:

  • Giá trị mẫu trung bình ta có được là: 1.05 giây. Đây là giá trị ta muốn tìm hiểu
  • Độ lệch chuẩn của mẫu là: 0.5 giây
  • Giá trị trung bình là 1.2 giây
  • Số dữ liệu trong mẫu là 100

Theo công thức trên:
z-score = (1.05 - 1.2)/(0.5/sqrt(100)) = (-0.15)/(0.5/10) = -0.15/0.05 = -3

Tính p-value

Ta muốn tính p-value, xác xuất lấy được một mẫu dữ liệu từ giả thuyết nghịch. Trong bài toán này, p-value là: ta muốn tìm khả năng nhà thần kinh học, lấy một mẫu thấp hơn hoặc bằng với giá trị mẫu lấy được từ thí nghiệm (trung bình thời gian phản xạ <= 1.05).

Có nhiều cách để tính xác xuất ta tìm được một giá trị nhỏ hay lớn hơn độ lệch chuẩn. Ví dụ như:

  • z-table
  • Luật 68% - 95% - 99.7% theo độ lệch chuẩn
  • hàm phân bối tích lũy (cumulative distribution function)

Luật 68% - 95% - 99.7% nói rằng với độ lệch chuẩn từ -1 đến 1, số lượng quan sát sẽ là 68% trong tổng số quan sát trong tập hợp. Từ -2 đến 2 là 95%, -3 đến 3 là 99.7%.
Sử dụng luật 68% - 95% - 99.7%, ta biết là khả năng có một mấu với với độ lệch chuẩn từ -3 đến 3 là 99.7%.

Vậy khả năng có một mẫu với độ lệch chuẩn (z-score) nhỏ hơn -3 sẽ bằng:
(100% - 99.7%)/2 = 0.15%

0.15% là xác xuất ta có được một mẫu với "thời gian phản xạ trung bình chuột tiêm thuốc < 1.05 giây" gỉa sử "thời gian phản xạ trung bình chuột tiêm thuốc là 1.2 giây" là đúng. Ta thấy là xác xuất này rất thấp.

Đưa kết luận

Ta đưa ra kết luận về giả thuyết dựa vào p-value và mức ý nghĩa thống kê. Mức ý nghĩa thống kê sẽ được đề cập kỹ hơn ở mục sau.
Như đã nói ở trên, p-value là số liệu thống kê, giả sử là "giả thuyết không" là đúng, "xác xuất lấy một mẫu dữ liệu hoàn toàn theo ngẫu nhiên mà có số liệu thống kê là như thế này" là bao nhiêu.

  • Ta sẽ kiểm tra p-value, nếu p-value nhỏ hơn mức ý nghĩa thống kê, ta bác bỏ giả thuyết không và chấp nhận giả thuyết nghịch là đúng.
  • Nếu p-value lớn hơn mức ý nghĩa thống kê, ta thất bại trong việc bác bỏ giả thuyết không.
  • Một điều lưu ý: Thất bại trong việc bác bỏ giả thuyết không, không có nghĩa là ta chấp nhận giả thuyết không là đúng.

Trong đề bài, nhà thần kinh học nói rằng: "Giả sử phản xạ của chuột không thay đổi khi tiểm thuốc. Nếu xác xuất thời gian phản xạ trung bình của chuột tiêm thuốc trong thí nghiệm này thấp hơn 5%, ông sẽ bác bỏ giả thuyết là thuốc không hoạt động". Ở trên ta tính được xác xuất này là 0.15%, xác xuất này nhỏ hơn 5%. Nên nhà thần kinh học có thể kết luận rằng thuốc có tác dụng.

Mức ý nghĩa thống kê (significance level)

Trước khi kiểm định giả thuyết thống kê, ta cần phải chọn mức ý nghĩa thống kê (significance level). Việc quan trọng là mức ý nghĩa thống kê này cần được quy định trước khi ta bắt đầu kiểm định, để đảm bảo tính khách quan.

Mức ý nghĩa thống kê kết hợp với p-value, sẽ cho ta biết là nên kết luận như thes nào

Ở bài toán trên nhà thần kinh học định mức ý nghĩa thống kê là 5%.

Giả sử người nhiên cứu không chọn trước mức ý nghĩa thống kê, và ngay lập tức đi vào kiểm định. Người nghiên cứu thấy kết quả cho thấy là "giả thuyết không" không thể được bác bỏ, nhưng vì người nghiên cứu có định kiến trước rất muốn chấp nhận "giả thuyết nghịch", nên họ thay đổi mức ý nghĩa thống kê đủ thấp để chấp nhận giả thuyết họ muốn. Chọn mức ý nghĩa thống kê trước là việc quan trọng, liên quan đến đạo đức nghiên cứu.

Giả sử với một thí nghiệm khác, nhà thần kinh học quên mất không đặt mức ý nghĩa thống kê. Sau khi tính toán xong p-value, thấy "thời gian phản xạ trung bình chuột tiêm thuốc < 1.05 giây" là 9%.
Nếu ông ta chọn xác xuất thí nghiệm trên mẫu 100 con chuột và có thời gian phản xạ trung bình nhỏ hơn 1.2 giây xác xuất tối đa là 5% (mức thống kê có ý nghĩa là 5%), thì ông ta không thể chấp nhận giả thuyết là thuốc có tác dụng.
Nhưng vì nhà thần kinh học muốn nhanh chóng đưa thuốc ra ngoài thị trường và kiếm tiền từ loại thuốc này, ông cố tình đặt mức ý nghĩa thống kê sau khi nghiên cứu là 10%, để cố tình chấp nhận giả thuyết là thuốc có tác dụng (trong khi thuốc có thể không có tác dụng). Nếu sau này ông quyết định đưa loại thuốc không có tác dụng này sang cho người, thì ông ta sẽ gặp rắc rối về luật pháp.

Vậy ghi nhớ là ta nên chọn mức ý nghĩa thống kê trước khi tính toán gì. Lý do tôi đề cập vấn đề này ở đây chứ không phải trước đấy vì bây giờ bạn mới hiểu p-value là gì, và tính toán như thế nào.

Kiểm định một đuôi và hai đuôi (One-tailed vs two tailed)

Xác định bài toán là một đuôi hay hai đuôi quan trọng trong việc tính p-value.

Một đuôi

Bài toán trên là bài toán một đuôi. Bài toán một đuôi có giả thuyết nghịch lớn hơn hoặc nhỏ hơn so với số liệu thống kê theo giả thuyết không.

Ở bài toán trên, giả thuyết nghịch là:
Ha:thời gian phản xạ trung bình chuột tiêm thuốc < 1.2 giây.

Nếu bài toán là một đuôi, ta chỉ tính p-value một bên của phân bố chuẩn.

Bài toán trên chúng ta làm là tính theo 1 đuôi, và p-value là 0.15%. Lưu ý là trong trường hợp dùng luật 68% - 95% - 99.7%, ta chia p-value cho 2 để tìm p-value một đuôi

Bài toán hai đuôi đuôi có giả thuyết nghịch lớn hơn và nhỏ hơn (khác với) số liệu thống kê theo giả thuyết không.

Hai đuôi

Trường hợp toán 2 đuôi là:
Ha:thời gian phản xạ trung bình chuột tiêm thuốc ≠ 1.2 giây.

Trong trường hợp bài toán là hai đuôi câu hỏi sẽ không phải là phản xạ của chuột sẽ nhanh hơn khi tiêm thuốc hay không. Mà là chuột tiêm thuốc có thời gian phản xạ khác với phản xạ của chuột không tiêm thuốc hay không (thuốc có thể khiến thời gian phản xạ của chuột có thể nhanh hơn, có thể chậm hơn).

Nếu bài toán là hai đuôi, ta tính p-value 2 bên của phân bố chuẩn.

Bài toán trên chúng ta làm là tính theo 2 đuôi, dựa theo uật 68% - 95% - 99.7%, với độ lệch chuẩn từ -3 và 3 là 99.7%, nên p-value sẽ là 100% - 99.7% = 0.3%,. Lưu ý trong trường hợp 2 đuôi, ta không cần chia p-value cho 2.

Kiểm định giả thuyết thống kê về tỷ lệ (Hypothesis Test about proportion)

Điều kiện

Khi kiểm định giả thuyết thống kê về tỷ lệ, độ chính xác dựa vào một số điều kiện. Trước khi kiểm định giả thuyết thống kê, nên ta nên kiểm tra các điều kiện này để đảm bảo tính toán và kết luận chính xác.

  • Mẫu dữ liệu được lấy ngẫu nhiên, hoặc kết quả dựa vào thí nghiệm ngẫu nhiên. Nếu mẫu dữ liệu không được lấy ngẫu nhiên, thì dữ liệu mẫu bình thường hay có độ lệch so với tập hợp ta lấy dữ liệu. Sẽ có rủi ro (bias) nếu ta sử dụng dữ liệu mẫu lệch với tập hợp, sau đó đưa ra kết luận về tập hợp.
  • Mỗi quan sát trong dữ liệu đều độc lập: (Lấy mẫu có hoàn loại). Trong trường hợp lấy mẫu không hoàn lại, thì mẫu phải nhỏ hơn 10% so với tập hợp. Tính độ lệch chuẩn đòi hỏi mỗi quan sát phải độc lập. Khi lấy mẫu không hoàn lại, các quan sát không độc lập. Vì khi lấy mỗi quan sát, ta thay đổi tập hợp ban đầu.
    Nếu lấy mẫu nhỏ hơn 10% thì ta có thể coi là mỗi quan sát độc lập vì loại bỏ mỗi quan sát từ tập hợp không thay đổi tập hợp quá nhiều. Ví dụ nếu số quan sát trong mẫu là n=150, thì điều kiện số quan sát trong tập hợp là N >= 1500.
  • Tỷ lệ của mẫu có phân bố chuẩn Trong mẫu có ít nhất 10 lần thành công và 10 lần thất bại.
    Nếu p là tỷ lệ của giả thuyết không, và n là số dữ liệu trong mẫu.

Bài toán

Chúng ta sẽ thử làm một bài toán ví dụ.
Tuấn đọc một báo cáo năm ngoái nói rằng 6% người lớn ở Hà Nội đi làm bằng xe đạp. Cậu muốn thí nghiệm xem số liệu này có thay đổi hay không. Tuấn lấy mẫu ngẫu nhiên 240 người lớn ở Hà Nội để kiểm tra giả thuyết này. Cậu thấy trong mẫu có 24 người đi làm bằng xe đạp.
Giả sử các điều kiện để kiểm định giả thuyết thống kê về tỷ lệ được thỏa mãn.
Hỏi tỷ lệ người Hà Nội đi xe đạp bây giờ, có thay đổi so với báo cáo năm ngoái không?

Tạo giả thuyết

Bài toán đã đề cập là các điều kiện để kiểm định thống kê về tỷ lệ đã được thỏa mãn. Ta có thể trực tiếp tạo giả thuyết.

Trong bài toán này, giả thuyết không là "Tỷ lệ người lớn ở Hà Nội đi làm bằng xe đạp là 6%"

Giả thuyết nghịch là "Tỷ lệ người lớn ở Hà Nội đi làm bằng xe đạp khác với 6%"

Ta đồng thời cũng sẽ chọn mức ý nghĩa là 5%
Bài toán được viết trong Python như sau:

sample_size = 240 # Số người lớn trong mẫu (Số quan sát trong mẫu)
sample_true_size= 24 # Số người lớn đi xem đạp đi làm
null_h_p = 0.06 # Tỷ lệ trong giả thuyết không
sig_level = 0.05

Tính tỷ lệ mẫu

Để giải bài toán, đầu tiên, ta tính tỷ lệ mẫu là bao nhiêu. Trong trường hợp này, tỷ lệ mẫu sẽ là 10%:

sample_p = sample_true_size/sample_size   # Tỷ lệ trong mẫu
sample_p # 0.1

Tính z-score

Đầu tiên ta tính z-score, để biết tỷ lệ lấy được trong dữ liệu mẫu các với tỷ lệ của giả thuyết không là bao nhiêu độ lệch chuẩn.

Công thức tính độ lệch chuẩn chó kiểm định giả thuyết thống kê về tỷ lệ. Công thức tính độ lệch chuẩn của tập hợp, dựa theo công thức tính độ lệch chuẩn cho phân bố nhị phân (không cần quan tâm đến chi tiết, có thể đề cập trong bài viết sau)

Sử dụng công thức trên, ta tính được độ lệch chuẩn của tập hợp:

# Độ lệch chuẩn của tỷ lệ trong tập hợp
std_dev = math.sqrt((null_h_p*(1 - null_h_p))/sample_size) 
std_dev # 0.015329709716755891

Công thức tính z-score

Sử dụng công thức trên, ta tính được z-score:

z_score = (sample_p - null_h_p)/std_dev
z_score # 2.6093122922137693

Tính p-value

Trong bài toán này. p-value nghĩa là, giả sử 6% người lớn ở Hà Nội đi làm bằng xe đạp, khả năng ta lấy được một mẫu ngẫu nhiên có 10% người lớn Hà Nội đi làm bằng xe đạp là bao nhiêu?

Đây là two-tailed test. Ta phải tính khả năng số liệu mẫu có z-score > 2.609z-score < -2.609. Với phân bố chuẩn, giá trị trung bình, chia xác xuất phân bố bằng hai phần cân đối. Vậy Khả năng độ lệch chuẩn z-score > 2.6 sẽ bằng khả năng độ lệch chuẩn trong mẫu có z-score <= -2.6.

Đầu tiên ta tính khả năng độ lệch chuẩn trong mẫu có z-score > 2.6 sử dụng CDF:

Ta muốn tính khả năng giá trị có độ lệch chuẩn lớn hơn z_score, nên ta phải tính 1 - CDF(z_score)
p_one_way_value = 1 - stats.norm.cdf(z_score)

Bây giờ chúng ta tính khả năng số liệu mẫu có z-score > 2.609z-score < -2.609.

# " khả năng số liệu có z-score > 2.6" = "khả năng giá trị có z-score <= -2.6" sẽ giống hệt nên ta nhân với 2
p_value = p_one_way_value * 2 
p_value # 0.009072440449271912

Ta có p-value gần bằng 0.01. Nó có ý nghĩa là giả sử 6% người lớn ở Hà Nội đi làm bằng xe đạp, khả năng ta lấy được một mẫu ngẫu nhiên có 10% người lớn Hà Nội đi làm bằng xe đạp là 1%.

Đưa ra kết luận

Ta sử dụng code sau để kiểm tra p-value với mức ý nghĩa là 0.05, như định nghĩa ở trên.

p_value < sig_level # True khi sig_level=0.05

Trong bài toán này p-value của hai đuôi (0.01) nhỏ hơn mức ý nghĩa thống kê (0.05). Nên ta có thể bác bỏ giả thuyết không, và chấp nhận giả thuyết nghịch.
Nên ta có đủ chứng cứ để kết luận rằng "Tỷ lệ người lớn ở Hà Nội đi làm bằng xe đạp khác với 6%."

Kiểm định giả thuyết thống kê về trung bình (Hypothesis Test about the mean)

Điều kiện để làm t-test

Các điều kiển để kiểm định giả thuyết thống kê về trunh bình gần giống với các điều kiện kiểm định giả thuyết thống kê về tỷ lệ.

  1. Mẫu dữ liệu được lấy ngẫu nhiên, hoặc kết quả dựa vào thí nghiệm ngẫu nhiên. Giống với điều kiện tỷ kệ
  2. Mỗi quan sát trong dữ liệu đều độc lập: (Lấy mẫu có hoàn loại). Trong trường hợp lấy mẫu không hoàn lại, thì mẫu phải nhỏ hơn 10% so với tập hợp. Giống với điều kiện tỷ kệ
  3. Tỷ lệ của mẫu có phân bố chuẩn Điều kiện này khác với kiểm định giả thuyết thống kê về tỷ lệ
  • Nếu ta biết tập hợp mẹ có phân bố chuẩn, thì trung bình của mẫu có phân bố chuẩn.
  • Nếu số dữ liệu của mẫu lớn hơn 30 thì trung bình của mẫu có phân bố chuẩn (dựa vào định lý giới hạn trung tâm)
  • Nếu số dữ liệu của mẫu nhỏ hơn 30, nhưng dữ liệu mẫu là đối xứng, không bị lệch về một bên, và không có giá trị ngoại lệ, thì trung bình của mẫu có phân ố chuẩn.

Bài toán

Một người thanh tra đang tìm hiểu về sản phẩm của một nhà máy sữa bột. Nhà máy sữa đề trên bao bì là một hộp có 3000g sữa. Nếu khối lượng trung bình của các hộp sữa ít nhất là 3000g thì máy đong sữa hoạt động đúng với gì ghi trên bao bì, và đúng với quy định.
Do cơ chế của máy đong sữa, lượng sữa bột sẽ không giống nhau, và khối lượng sữa trong các hộp theo phân bố chuẩn.
Một ngày nhà máy sản xuất 1000 hộp sữa, người thanh tra lấý 10 hộp sữa ngẫu nhiên để kiểm tra khối lượng. Người thanh tra tính toán và thấy 10 hộp sữa có mẫu trung bình là 2929.5, độ lệch chuẩn là 67.40961.
Hỏi có đủ chứng cứ để kết luận rằng nhà máy sữa bột không cung cấp khối lượng sữa như ghi ở trên bao bì không?

Kiểm tra điều kiện:

Ta kiểm tra các điều kiện để kiểm định giả thuyết thống kê về trung bình.

  1. Mẫu dữ liệu được lấy ngẫu nhiên: OK, vì trong đề bài nói là người thanh tra lấy 10 hộp sữa ngẫu nhiên.
  2. Mỗi quan sát trong dữ liệu đều độc lập: OK, mặc dù người thanh tra lấy mẫu không hoàn lại, số mẫu lấy so với tập hợp là 10/1000 = 1%. 1% nhỏ hơn 10% nên việc lấy mẫu không ảnh hưởng nhiều đến việc lấy các mẫu khác. Các mẫu có thể được coi là độc lập.
  3. Phân bố của trung bình của mẫu là phân bố chuẩn:OK, vì trong bài toán, máy đong sữa để cho vào hộp, đong sữa với phân bố chuẩn. Vậy nên phân bố của tập hợp là phân bố chuẩn, nên phân bố trung bình của mẫu cũng là phân bố chuẩn.

Tạo giả thuyết

Theo bài toán. "Nếu khối lượng trung bình của các hộp sữa ít nhất là 3000g thì máy đong sữa hoạt động đúng với gì ghi trên bao bì"
Vậy ta có các giả thuyết như sau:

  • Giả thuyết không: trung bình khối lượng sữa >= 3000
  • Giả thuyết nghịch: trung bình khối lượng sữa < 2929.5

Trước khi tính toán ta sẽ lựa chọn mức ý nghĩa thống kê.
Nếu khối lượng sữa mẫu ít hơn so với khối lượng chuẩn (3000g), hoàn toàn do ngẫu nhiên, có xác xuất nhỏ hơn 3%, ta có thể bác bỏ giả thuyết là trung bình khối lượng sữa >= 3000g. Nên ta có thể chọn mức ý nghĩa thống kê là 3%

Trong code bài toán sẽ được trình bày như sau:

    sample_size = 10 
    null_hypothesis_mean = 3000 
    sig_level = 0.05
    sample_mean = 2929.5
    sample_stddev = 67.409610261116

Tính t-score

t-score có cách tính giống y hệt như z-score. Điểm khác nhau t-score sẽ giả sử là phân bố là t-distribution, còn z-score giả sử là phân bố chuẩn tắc.

Vì t-score có cách tính giống z-score, t-score sẽ bằng z-score, nhưng p-value từ t-score sẽ khác với p-value từ z-score.

Chúng ta dùng t-score nếu, thỏa mãn 1 trong 2 điều kiện

  • Số dữ liệu mẫu ít hơn 30
  • Chúng ta không biết độ lệch chuẩn của tập hợp.

Tính t-score ta sẽ công thức tính như sau (giống hệt với công thức tính z-score, nhưng phân bố khác nhau):

Trong bài toán trên về kiểm định giả thuyết thống kê về tỷ lệ, ta có số dữ liệu mẫu (240) lớn hơn 30 và có cách tính được độ lệch chuẩn của tập hợp. Với bài toán này số dữ liệu mẫu ít hơn 30 và ta không biết cả độ lệch chuẩn của tập hợp, nên ta dùng t-score.

Trong code:

    import math
    estimated_pop_stddev = sample_stddev/math.sqrt(sample_size)
    t_score = (sample_mean - null_hypothesis_mean)/estimated_pop_stddev
    t_score # -3.3072520991931906

t-score ước lượng là -3.307.

Tính p-value

Chúng ta có thể tính p-value từ cdf giống như bài toàn trên trên. Lưu ý là bài toán này là một đuôi. Đồng thời t-score là số âm, nên ta có thể trực tiếp tính luôn cdf để đưa ra khả năng ngẩu nhiên trung bình khối lượng sữa nhỏ hơn 2929.5, giả sử giả thuyết không là đúng.

Một điểm cần lưu ý là bây giờ ta dùng stats.t.cdf(t_score), thay bằng stats.norm.(score)

Vậy theo code ta có:

    p_one_way_value = stats.t.cdf(t_score) 
    p_one_way_value  # 0.004561894650979413

p-value có số giá trị là 0.0046.

Note:
Nếu bạn trực tiếp có dữ liệu mẫu, thì các bạn có thể dùng dữ liệu mẫu trức tiếp để tính t-score và p-value. Điểm cần lưu ý là trong scipy API, p-value được tính theo hai đuôi, nên ta chia số đó cho 2 để lấy p-value một đuôi:

import scipy.stats as stats
t_value, two_way_p_value = stats.ttest_1samp(data_df, null_hypothesis_mean)
p_one_way_value = two_way_p_value/2

Kết quả sẽ ra tương tự như ở trên.

Đưa ra kết luận

Bây giờ ta so sánh p-value 0.0046 với mức ý nghĩa là 0.03. Ta thấy p-value nhỏ hơn với mức ý nghĩa. Ta có thể bác bỏ giả thuyết không là khối lượng sữa trung bình >= 3000g, và chấp nhận giả thuyết nghịch là khối lượng sữa trung bình < 3000g. Vậy thanh tra có đủ bằng trứng để kết luận rằng sữa trong hộp ít hơn so với trên bao bì.

Kết luận

Trên tôi có đề cập đến một số bài toán cơ bản trong kiểm định giả thuyết thống kê. Với kiến thức trên, hi vọng các bạn có thể áp dụng cách giải các bài toán này trong các lĩnh vực bạn đang làm việc.
Chúc các bạn may mắn.