R101 - Bài 4: Thống Kê Mô Tả - Kể Chuyện Bằng Những Con Số
Mean, Median, Mode là gì? Tại sao "Thu nhập bình quân" lại là cú lừa thế kỷ? Hãy cùng giải mã những con số biết nói.

Trước khi chạy mô hình cao siêu, bạn phải hiểu dữ liệu của mình mặt mũi ra sao đã. Đó là nhiệm vụ của Thống kê mô tả (Descriptive Statistics).
Nhưng cẩn thận, những con số này biết nói dối đấy. Ví dụ kinh điển: Lớp có 9 bạn nghèo rớt mồng tơi (thu nhập 5 triệu/tháng). Bỗng nhiên tỷ phú Phạm Nhật Vượng bước vào lớp (thu nhập 1000 tỷ/tháng).
-> Bùm! Thu nhập TRUNG BÌNH (Mean) của cả lớp vọt lên 100 tỷ/tháng.
-> Kết luận: Cả lớp giàu nứt đố đổ vách? Sai bét!
Đó là lý do ta cần phân biệt Mean và Median.

Khi dữ liệu bị lệch (như Thu nhập), Mean (Trung bình) sẽ bị kéo lệch đi. Median (Trung vị) mới là chân ái.
1. Bộ ba quyền lực: Mean - Median - Mode
- Mean (Trung bình): Cộng lại chia đều. Dễ bị tỷ phú làm lệch.
- Median (Trung vị): Thằng đứng chính giữa. Tỷ phú vào thì kệ tỷ phú, thằng đứng giữa vẫn nghèo. -> Dùng khi dữ liệu có biến động lớn (Outlier).
- Mode (Yếu vị): Giá trị xuất hiện nhiều nhất. (Hợp để tìm "Size áo nào bán chạy nhất").
Trong R:
`mean(df$Income)`
`median(df$Income)`
2. Độ lệch chuẩn (SD) - Ai ổn định hơn?
Có 2 nhân viên Sale cùng bán được trung bình 100 triệu/tháng. Nhưng ông A tháng nào cũng 100tr, ông B tháng 0 đồng tháng 200tr.
Nhìn SD để biết:
SD ông A = 0 (Rất ổn định).
SD ông B = 100 (Rất bấp bênh).
Trong R: `sd(df$Income)`
3. Có "bình thường" không? (Kiểm định phân phối chuẩn)
Mean và SD chỉ có ý nghĩa khi dữ liệu phân phối chuẩn (hình chuông). Nếu dữ liệu méo mó, dùng Median an toàn hơn.
Góc nhìn khoa học: Để chắc chắn, hãy dùng Shapiro-Wilk test:
`shapiro.test(df$Income)`
- Nếu p < 0.05 -> Không chuẩn -> Nên báo cáo Median (IQR).
- Nếu p > 0.05 -> Chuẩn -> Báo cáo Mean (SD).
Làm đúng quy trình này thì Reviewer chỉ có gật gù khen bạn chuyên nghiệp.
4. Table 1 thần thánh
Làm bài báo khoa học thì cái bảng đầu tiên (Table 1) luôn là "Thông tin nhân khẩu học".
Trong R, chỉ 1 dòng code với gói `tableone`:
`library(tableone)`
`CreateTableOne(data = df)`
Kết quả nó tự vẽ ra (tưởng tượng nhé):

