Thống kê 5 — Kiểm định giả thuyết
Vì sao cần kiểm định giả thuyết?
Bài Thống kê 4 — Ước lượng & khoảng tin cậy trả lời câu hỏi "giá trị thật nằm trong khoảng nào". Kiểm định giả thuyết (hypothesis testing) trả lời một câu hỏi khác, có tính quyết định hơn: "sự khác biệt tôi quan sát được là thật, hay chỉ là nhiễu do lấy mẫu?".
Đây là công cụ ra quyết định dưới sự không chắc chắn. Marketing bảo chiến dịch email mới làm tăng tỷ lệ mở thẻ tín dụng từ 4% lên 4,6%. Con số cao hơn thật — nhưng nếu chỉ chạy trên 500 khách thì chênh lệch đó hoàn toàn có thể là ngẫu nhiên. Kiểm định giả thuyết cho ta một khung định lượng để nói: "với dữ liệu này, mức chênh 0,6 điểm phần trăm là đáng tin hay không đáng tin."
Bài này dựng khung tổng quát, sau đó điểm qua các test thông dụng và những cái bẫy diễn giải mà dân phân tích ngân hàng hay dính.
1. Khung kiểm định: H0 và H1
Mọi kiểm định bắt đầu bằng việc phát biểu hai giả thuyết đối lập, loại trừ nhau:
- Giả thuyết không (null hypothesis, H0): phát biểu "không có gì xảy ra" — không khác biệt, không hiệu ứng, không mối liên hệ. Đây là giả thuyết ta mặc định đúng cho đến khi có đủ bằng chứng chống lại nó.
- Giả thuyết thay thế (alternative hypothesis, H1 hoặc Ha): điều ta thật sự muốn chứng minh — có khác biệt, có hiệu ứng.
Ví dụ so sánh số dư trung bình hai nhóm khách A và B:
- H0: μ_A = μ_B (số dư trung bình hai nhóm bằng nhau).
- H1: μ_A ≠ μ_B (khác nhau).
Điểm cốt lõi thường bị hiểu sai: ta không bao giờ "chứng minh H0 đúng". Ta chỉ có thể bác bỏ H0 (reject) hoặc không bác bỏ được H0 (fail to reject). Giống toà án: bị cáo được coi là vô tội (H0) cho đến khi có bằng chứng đủ mạnh; không đủ bằng chứng không có nghĩa là "chứng minh được vô tội", chỉ là "chưa kết tội được".
1.1 Một phía hay hai phía?
Cách phát biểu H1 quyết định kiểm định một phía (one-tailed) hay hai phía (two-tailed):
| Loại | H1 | Khi nào dùng |
|---|---|---|
| Hai phía | μ_A ≠ μ_B | Quan tâm khác biệt theo cả hai hướng (mặc định, an toàn) |
| Một phía (phải) | μ_A > μ_B | Chỉ quan tâm A lớn hơn B |
| Một phía (trái) | μ_A < μ_B | Chỉ quan tâm A nhỏ hơn B |
Kiểm định một phía có sức mạnh (power) cao hơn với cùng cỡ mẫu, nhưng chỉ được dùng khi bạn có lý do khẳng định hướng trước khi nhìn dữ liệu. Chọn một phía sau khi đã thấy kết quả nghiêng về đâu là gian lận thống kê. Khi phân vân, chọn hai phía.
2. Alpha, miền bác bỏ, test statistic và p-value
2.1 Mức ý nghĩa alpha và miền bác bỏ
Mức ý nghĩa (significance level, α) là ngưỡng rủi ro ta chấp nhận khi bác bỏ H0 dù nó thật ra đúng. Quy ước phổ biến: α = 0,05 (5%), đôi khi 0,01 cho quyết định quan trọng. Alpha phải được chọn trước khi xem dữ liệu.
Miền bác bỏ (rejection region / critical region) là vùng giá trị của test statistic mà nếu rơi vào đó, ta bác bỏ H0. Với kiểm định hai phía α = 0,05, miền bác bỏ nằm ở hai đuôi, mỗi đuôi 2,5% diện tích của phân phối dưới H0.
2.2 Test statistic
Test statistic là một con số tóm tắt dữ liệu mẫu, đo "dữ liệu quan sát lệch khỏi H0 bao xa, tính theo đơn vị sai số chuẩn". Dạng tổng quát:
test statistic = (ước lượng quan sát − giá trị dưới H0) / (sai số chuẩn của ước lượng)
Ví dụ với t-test hai mẫu:
t = (x̄_A − x̄_B) / SE(x̄_A − x̄_B)
Test statistic càng lớn (về trị tuyệt đối) thì dữ liệu càng "xa" H0, càng nhiều bằng chứng chống lại H0.
2.3 p-value — ĐỊNH NGHĨA CHÍNH XÁC
Đây là khái niệm bị hiểu sai nhiều nhất trong toàn bộ thống kê ứng dụng, nên hãy đọc thật kỹ.
p-value là xác suất quan sát được dữ liệu cực đoan như dữ liệu thực tế HOẶC hơn thế, VỚI GIẢ ĐỊNH rằng H0 đúng.
Viết gọn: p-value = P(dữ liệu cực đoan như vậy hoặc hơn | H0 đúng).
Nói cách khác: "nếu thực sự không có khác biệt gì (H0 đúng), thì việc bốc ngẫu nhiên ra một mẫu cho kết quả lệch nhiều như thế này (hoặc hơn) xảy ra với xác suất bao nhiêu?". p-value nhỏ nghĩa là dữ liệu quan sát rất khó xảy ra dưới H0 → H0 đáng ngờ.
p-value KHÔNG PHẢI những thứ sau (rất hay bị nhầm):
| Diễn giải SAI | Vì sao sai |
|---|---|
| Xác suất H0 đúng | p-value có điều kiện giả định H0 đúng rồi; nó không nói gì về P(H0). Muốn P(H0 | dữ liệu) phải dùng Bayes. |
| Xác suất H1 sai / kết quả do may rủi | Cùng lỗi như trên. |
| p = 0,03 nghĩa là "hiệu ứng chỉ 3% khả năng là thật" | Sai hoàn toàn; p-value không đo độ lớn hay độ chắc chắn của hiệu ứng. |
| p lớn nghĩa là H0 đúng | Chỉ nghĩa là chưa đủ bằng chứng bác bỏ H0. |
Giữ đúng định nghĩa này là điều tách một analyst nghiêm túc khỏi người dùng công cụ theo quán tính.
3. Quy tắc quyết định
Sau khi có p-value và alpha đã chọn trước:
- Nếu p-value < α → bác bỏ H0 ("kết quả có ý nghĩa thống kê / statistically significant").
- Nếu p-value ≥ α → không bác bỏ được H0 ("chưa đủ bằng chứng").
Tương đương: nếu test statistic rơi vào miền bác bỏ thì bác bỏ H0. Hai cách (p-value và miền bác bỏ) luôn cho cùng kết luận.
4. Hai loại sai lầm: Type I và Type II
Vì ta ra quyết định dưới sự không chắc chắn, luôn tồn tại khả năng sai. Có đúng hai kiểu sai:
- Sai lầm loại I (Type I error): bác bỏ H0 trong khi H0 thật ra đúng — báo động giả. Xác suất mắc = α.
- Sai lầm loại II (Type II error): không bác bỏ H0 trong khi H0 thật ra sai — bỏ sót hiệu ứng thật. Xác suất mắc = β.
Ma trận sau tóm gọn:
| H0 đúng | H0 sai | |
|---|---|---|
| Bác bỏ H0 | Type I error (α) — báo động giả | Đúng ✅ (power = 1 − β) |
| Không bác bỏ H0 | Đúng ✅ (1 − α) | Type II error (β) — bỏ sót |
4.1 Power và cách tăng power
Power (sức mạnh kiểm định) = 1 − β = xác suất phát hiện đúng một hiệu ứng thật (bác bỏ H0 khi H0 thực sự sai). Chuẩn ngành thường nhắm power ≥ 0,80 (80%).
Bốn cách tăng power:
- Tăng cỡ mẫu (n) — cách trực tiếp và đáng tin cậy nhất; giảm sai số chuẩn.
- Chấp nhận α cao hơn — nhưng đánh đổi bằng nhiều báo động giả hơn (thường không nên).
- Tăng effect size cần phát hiện — chỉ đòi phát hiện những khác biệt đủ lớn.
- Giảm phương sai dữ liệu — đo lường chính xác hơn, dùng thiết kế ghép cặp (paired), phân tầng (stratified), hoặc biến đồng hành (CUPED trong A/B testing).
Có sự đánh đổi cơ bản: giảm α (ít báo động giả hơn) sẽ làm tăng β (bỏ sót nhiều hơn) nếu giữ nguyên cỡ mẫu. Chỉ có tăng n mới cải thiện được cả hai cùng lúc. Vì vậy phân tích power (power analysis) để tính cỡ mẫu cần thiết trước khi chạy thí nghiệm là bước không thể bỏ — chi tiết ở bài A/B testing.
5. Catalog các test thông dụng: dùng cái nào khi nào?
Chọn test phụ thuộc vào: loại dữ liệu (định lượng/định tính), số nhóm so sánh, và giả định về phân phối.
| Test | Câu hỏi trả lời | Khi nào dùng |
|---|---|---|
| z-test | So sánh trung bình/tỷ lệ | Cỡ mẫu lớn (n ≳ 30) VÀ biết σ tổng thể, hoặc test tỷ lệ với n lớn |
| t-test một mẫu | Trung bình mẫu có khác một giá trị chuẩn? | So μ với một hằng số (vd số dư TB có khác 50 triệu?) |
| t-test hai mẫu độc lập | Trung bình hai nhóm khác nhau? | Hai nhóm khách độc lập, dữ liệu định lượng |
| t-test ghép cặp (paired) | Trước/sau trên cùng đối tượng khác nhau? | Đo lặp trên cùng khách (số dư trước và sau chiến dịch) |
| Chi-square độc lập | Hai biến phân loại có liên hệ? | Bảng chéo (contingency table), dữ liệu đếm |
| ANOVA | Trung bình ≥ 3 nhóm có khác nhau? | So sánh nhiều nhóm cùng lúc |
5.1 z-test vs t-test
Cả hai so sánh trung bình. Khác biệt: z-test dùng khi biết độ lệch chuẩn tổng thể σ (hiếm trong thực tế) hoặc cỡ mẫu rất lớn; t-test dùng phân phối Student-t để bù cho việc phải ước lượng σ từ mẫu, phù hợp cỡ mẫu nhỏ. Trong thực tế ngân hàng, khi so sánh trung bình gần như luôn dùng t-test vì σ tổng thể không biết. Khi n lớn, phân phối t hội tụ về z nên hai test cho kết quả gần như y hệt.
Ba biến thể t-test cần phân biệt rõ:
- Một mẫu: so trung bình một nhóm với giá trị cố định.
- Hai mẫu độc lập: hai nhóm khác nhau về đối tượng (nhóm A vs nhóm B). Lưu ý biến thể Welch's t-test không giả định hai nhóm cùng phương sai — nên dùng mặc định.
- Ghép cặp: cùng đối tượng đo hai lần (trước/sau). Dùng sai (lấy paired data mà chạy two-sample) làm mất sức mạnh và sai kết luận.
5.2 Chi-square: kiểm định tính độc lập
Chi-square test of independence kiểm tra hai biến phân loại có liên hệ với nhau không, qua bảng chéo. Ví dụ: "nhóm tuổi" có liên quan tới "có/không mở thẻ tín dụng"? So sánh tần suất quan sát với tần suất kỳ vọng nếu hai biến độc lập; lệch càng lớn thì thống kê chi-square càng cao. Cảnh báo: cần tần suất kỳ vọng mỗi ô ≥ 5, nếu không dùng Fisher's exact test.
5.3 ANOVA (điểm qua)
ANOVA (Analysis of Variance) mở rộng t-test cho ≥ 3 nhóm. Đừng chạy nhiều t-test từng cặp — làm vậy khiến α tích luỹ (chạy 10 cặp ở α=0,05 → xác suất có ít nhất một báo động giả lên tới ~40%). ANOVA kiểm định một lần "có nhóm nào khác nhóm nào không?" qua thống kê F. Nếu ANOVA có ý nghĩa, dùng post-hoc test (Tukey HSD) có hiệu chỉnh để tìm cặp nào khác. Vấn đề so sánh bội (multiple comparisons) này được bàn kỹ ở bẫy thống kê.
6. Effect size: ý nghĩa thống kê ≠ ý nghĩa thực tiễn
Đây là bài học đắt giá nhất của phần này.
p-value chỉ nói khác biệt có tồn tại hay không, KHÔNG nói khác biệt lớn tới đâu. Với cỡ mẫu đủ lớn, gần như mọi khác biệt dù nhỏ xíu đều trở nên "có ý nghĩa thống kê". Chạy test trên 5 triệu khách hàng, chênh số dư trung bình 1.000 đồng cũng có thể ra p < 0,001 — nhưng 1.000 đồng thì chẳng ai quan tâm.
Vì vậy luôn báo cáo effect size bên cạnh p-value:
- Cohen's d: khác biệt trung bình chuẩn hoá (0,2 nhỏ / 0,5 vừa / 0,8 lớn — chỉ là quy ước tham khảo).
- Khác biệt tuyệt đối kèm khoảng tin cậy: "chiến dịch tăng tỷ lệ mở thẻ 0,6 điểm phần trăm, CI 95% = [0,1; 1,1]" — thông tin này hữu ích cho quyết định kinh doanh hơn hẳn con số p đơn lẻ.
Nguyên tắc thực chiến: luôn hỏi "khác biệt này có đủ lớn để đáng thay đổi hành động không?" trước khi hỏi "nó có ý nghĩa thống kê không?". Ngưỡng khác biệt tối thiểu đáng quan tâm (MDE — minimum detectable effect) nên được thống nhất với business trước khi chạy test. Tư duy này song hành với việc chọn metric đánh giá mô hình, xem ml-05-evaluation-metrics.
Use case thực tế
Bối cảnh tại NCB. Phòng Thẻ chạy chiến dịch email cá nhân hoá (nhóm treatment) so với email chuẩn (nhóm control), mục tiêu tăng tỷ lệ mở thẻ tín dụng trong 30 ngày. Song song, phòng Phân tích muốn biết hai phân khúc khách "thành thị lớn" và "còn lại" có số dư trung bình khác nhau không.
Bước 1 — Lấy đại lượng nhóm bằng SQL. SQL không chạy được test, nhưng dùng để tính đầu vào (n, trung bình, độ lệch chuẩn) cho công cụ thống kê. So sánh số dư trung bình theo thành phố:
-- ▶ Chạy được
SELECT
CASE WHEN c.city IN ('Ha Noi','Ho Chi Minh') THEN 'thanh_thi_lon'
ELSE 'con_lai' END AS nhom,
COUNT(*) AS n,
AVG(a.balance) AS mean_balance,
STDDEV(a.balance) AS sd_balance
FROM accounts a
JOIN customers c ON c.id = a.customer_id
WHERE a.currency = 'VND'
GROUP BY 1;
Kết quả (minh hoạ): nhóm thành thị lớn n=2.400, mean=58,2 triệu, sd=41 triệu; nhóm còn lại n=3.100, mean=52,7 triệu, sd=38 triệu.
Bước 2 — Chọn test. So trung bình hai nhóm độc lập, σ không biết → Welch's two-sample t-test, hai phía, α=0,05.
- H0: μ_thành_thị = μ_còn_lại; H1: khác nhau.
- Tính SE của chênh lệch ≈ √(41²/2400 + 38²/3100) ≈ 1,08 triệu.
- t = (58,2 − 52,7) / 1,08 ≈ 5,1 → p < 0,001 → bác bỏ H0.
Bước 3 — Effect size. Chênh 5,5 triệu (CI 95% ≈ [3,4; 7,6]), Cohen's d ≈ 0,14 — có ý nghĩa thống kê nhưng effect nhỏ. Kết luận cho business: khác biệt là thật nhưng không đủ lớn để làm cơ sở duy nhất cho việc phân bổ hạn mức; cần thêm biến khác.
Bước 4 — Chiến dịch thẻ (test tỷ lệ). Control mở 4,0% (200/5.000), treatment 4,7% (235/5.000). Two-proportion z-test một phía (H1: treatment > control): z ≈ 1,74 → p ≈ 0,041 < 0,05 → bác bỏ H0, chiến dịch có hiệu quả. Nhưng lưu ý: nếu ban đầu định làm hai phía thì p ≈ 0,082 > 0,05 — cho thấy tầm quan trọng của việc chốt một phía/hai phía trước khi nhìn dữ liệu. Đây chính là ranh giới dẫn sang A/B testing bài bản.
Bước 5 — Kiểm định độc lập. Muốn biết "phân khúc khách" có liên hệ với "phản hồi chiến dịch" không → lập bảng chéo phân khúc × (mở/không mở), chạy chi-square test of independence.
Ghi nhớ
- H0 = "không có gì xảy ra"; ta chỉ bác bỏ hoặc không bác bỏ được H0, không bao giờ "chứng minh H0 đúng".
- Chọn một phía/hai phía và alpha TRƯỚC khi xem dữ liệu; hai phía là mặc định an toàn.
- p-value = P(dữ liệu cực đoan như vậy hoặc hơn | H0 đúng) — KHÔNG phải xác suất H0 đúng, KHÔNG đo độ lớn hiệu ứng.
- Quy tắc quyết định: p < α → bác bỏ H0; p ≥ α → chưa đủ bằng chứng.
- Type I (α) = báo động giả; Type II (β) = bỏ sót; power = 1 − β, nhắm ≥ 0,80.
- Tăng power tốt nhất bằng tăng cỡ mẫu; giảm α mà giữ n thì tăng β.
- Chọn test: t-test (so trung bình, σ chưa biết — một mẫu/hai mẫu độc lập/ghép cặp), z-test (n lớn/biết σ, test tỷ lệ), chi-square (biến phân loại, bảng chéo), ANOVA (≥ 3 nhóm — đừng chạy nhiều t-test từng cặp).
- Luôn báo cáo effect size kèm p-value: ý nghĩa thống kê ≠ ý nghĩa thực tiễn; với n rất lớn, khác biệt vô nghĩa vẫn ra p nhỏ.
- SQL (AVG/STDDEV/COUNT GROUP BY) tính đầu vào cho test, không tự chạy test.
Bài viết liên quan
Bài mở đầu series thống kê: đo xu hướng trung tâm và độ phân tán, phân vị và five-number summary, hình dạng phân phối, và cách xử lý dữ liệu lệch phải điển hình trong ngân hàng. Kèm SQL chạy được trên PostgreSQL sandbox.
Phân biệt ước lượng điểm và ước lượng khoảng, cách xây khoảng tin cậy (CI) bằng margin of error z*·SE / t*·SE, đánh đổi mức 90/95/99%, và cách DIỄN GIẢI ĐÚNG khoảng tin cậy (95% CI không phải xác suất tham số nằm trong khoảng). Có CI cho trung bình và cho tỷ lệ, ảnh hưởng của cỡ mẫu, cùng ví dụ ngân hàng về tỷ lệ nợ xấu và số dư trung bình.
Chọn biểu đồ đúng cho từng loại dữ liệu, nguyên tắc thiết kế dashboard, và kể chuyện bằng dữ liệu.
A/B testing từ thiết kế đến phân tích: chọn metric chính và guardrail, randomization, tính cỡ mẫu trước khi chạy (MDE/alpha/power/baseline), two-proportion z-test và t-test, đọc p-value và khoảng tin cậy cho lift. Điểm mặt các bẫy phổ biến (peeking, multiple testing, novelty, sample ratio mismatch) và giới thiệu sequential/Bayesian A/B, với ví dụ onboarding app, offer thẻ tín dụng và email nhắc thanh toán.