Thống kê 6 — Tương quan & Hồi quy
Từ "mô tả một biến" sang "hai biến liên hệ thế nào"
Các bài trước trong series này tập trung vào một biến: thống kê mô tả tóm tắt phân phối của số dư hay thu nhập, phân phối xác suất mô hình hóa nó. Nhưng phần lớn câu hỏi nghiệp vụ ngân hàng lại là câu hỏi hai biến: "khách thu nhập cao hơn thì có xài hạn mức thẻ cao hơn không?", "số dư tài khoản có liên quan tới số giao dịch không?", "tuổi hồ sơ vay ảnh hưởng thế nào tới tỷ lệ vỡ nợ?".
Hai công cụ nền tảng: tương quan (correlation) — đo mức độ hai biến đi cùng nhau, và hồi quy (regression) — dựng mô hình định lượng để dự báo và diễn giải quan hệ. Bài này đi từ hiệp phương sai → tương quan → cạm bẫy nhân quả → hồi quy → giả định và các bẫy thường gặp.
1. Hiệp phương sai và tương quan
1.1 Hiệp phương sai (covariance)
Hiệp phương sai đo hai biến X, Y có cùng lệch khỏi trung bình của chúng theo cùng hướng hay không:
Cov(X, Y) = trung bình của (xᵢ − x̄)(yᵢ − ȳ)
- Cov > 0: khi X trên trung bình thì Y cũng có xu hướng trên trung bình (cùng chiều).
- Cov < 0: ngược chiều.
- Cov ≈ 0: không có xu hướng tuyến tính rõ.
Vấn đề của hiệp phương sai: đơn vị của nó phụ thuộc đơn vị của X và Y, nên Cov giữa thu nhập và số dư là con số khổng lồ vô nghĩa, không so sánh được với cặp biến khác. Ta cần chuẩn hóa.
1.2 Hệ số tương quan Pearson
Chia hiệp phương sai cho tích hai độ lệch chuẩn để ra một số không thứ nguyên trong khoảng [−1, 1]:
r = Cov(X, Y) / (σ_X · σ_Y)
Đây là hệ số tương quan Pearson (Pearson correlation coefficient). Nó đo quan hệ tuyến tính:
- r = +1: quan hệ tuyến tính dương hoàn hảo (các điểm nằm đúng trên một đường thẳng đi lên).
- r = −1: tuyến tính âm hoàn hảo.
- r = 0: không có quan hệ tuyến tính (nhưng có thể vẫn có quan hệ phi tuyến — xem 1.4).
Bảng diễn giải độ mạnh thường dùng (chỉ là quy ước, tùy lĩnh vực):
| |r| | Diễn giải (kinh nghiệm) | |---|---| | 0.0 – 0.1 | Gần như không có | | 0.1 – 0.3 | Yếu | | 0.3 – 0.5 | Trung bình | | 0.5 – 0.7 | Khá mạnh | | 0.7 – 1.0 | Mạnh |
Trong dữ liệu ngân hàng thực tế, tương quan giữa các biến hành vi hiếm khi vượt 0.6–0.7; con số > 0.95 giữa hai biến nghiệp vụ khác nhau thường là dấu hiệu rò rỉ (leakage) hoặc hai biến thực chất là một.
1.3 Hệ số tương quan Spearman
Pearson chỉ bắt quan hệ tuyến tính và rất nhạy với outlier. Khi quan hệ đơn điệu nhưng phi tuyến (X tăng thì Y luôn tăng, nhưng không theo đường thẳng — ví dụ cong lồi), hãy dùng Spearman rank correlation.
Cách hoạt động: thay giá trị bằng hạng (rank) rồi tính Pearson trên hạng. Vì vậy Spearman:
- Bắt được mọi quan hệ đơn điệu (monotonic), kể cả cong.
- Bền với outlier (một giá trị cực lớn chỉ chiếm 1 hạng, không kéo lệch).
- Cũng nằm trong [−1, 1].
Quy tắc chọn nhanh: quan hệ có vẻ thẳng và ít outlier → Pearson; quan hệ cong đơn điệu hoặc dữ liệu lệch nặng (thu nhập, số dư thường lệch phải) → cân nhắc Spearman.
1.4 Cạm bẫy: r = 0 không có nghĩa "không liên quan"
Ví dụ kinh điển: Y = X². Với X đối xứng quanh 0, Pearson r ≈ 0 dù Y bị X quyết định hoàn toàn. Bài học: luôn vẽ scatter plot trước khi tin vào một con số r. Bộ dữ liệu Anscombe's quartet cho thấy bốn tập dữ liệu rất khác nhau có cùng r ≈ 0.816.
2. TƯƠNG QUAN ≠ NHÂN QUẢ
Đây là sai lầm tốn kém nhất trong phân tích dữ liệu, cần nhấn mạnh riêng một mục.
Hai biến tương quan mạnh không cho phép kết luận biến này gây ra biến kia. Có ít nhất bốn khả năng khi thấy X và Y tương quan:
- X gây ra Y.
- Y gây ra X (đảo chiều nhân quả — reverse causation).
- Một biến thứ ba Z gây ra cả X và Y — biến gây nhiễu (confounder).
- Trùng hợp ngẫu nhiên (spurious correlation), đặc biệt khi dò nhiều cặp biến.
Ví dụ ngân hàng — confounder: Ta thấy khách có nhiều thẻ tín dụng thì tổng chi tiêu cao. Kết luận "phát nhiều thẻ để tăng chi tiêu" là sai. Biến gây nhiễu là thu nhập: người thu nhập cao vừa được cấp nhiều thẻ, vừa chi tiêu nhiều. Nếu chỉ nhìn trong nhóm cùng mức thu nhập, quan hệ số-thẻ ↔ chi-tiêu có thể biến mất.
Ví dụ đảo chiều: Khách gọi tổng đài nhiều thì tỷ lệ rời bỏ (churn) cao. Không phải "gọi tổng đài gây churn" mà "khách sắp bỏ mới gọi nhiều để khiếu nại".
Muốn kết luận nhân quả cần thử nghiệm ngẫu nhiên có đối chứng (A/B testing) — xem stat-07 — hoặc phương pháp nhân quả quan sát. Hồi quy có thể kiểm soát confounder khi đưa nó vào mô hình (mục 3.2), nhưng chỉ với những confounder ta biết và đo được.
3. Hồi quy tuyến tính
3.1 Hồi quy tuyến tính đơn
Hồi quy đi xa hơn tương quan: nó dựng một phương trình để dự báo biến phụ thuộc Y (target) từ biến độc lập X (predictor):
y = b₀ + b₁·x + ε
- b₀ (intercept): giá trị dự báo của y khi x = 0.
- b₁ (slope, hệ số): y thay đổi bao nhiêu khi x tăng 1 đơn vị.
- ε (phần dư/nhiễu): phần y mà mô hình không giải thích được.
Ví dụ: hạn_mức_thẻ = 5.000.000 + 2.3 × thu_nhập_tháng. Đọc là: cứ mỗi 1 đồng thu nhập tăng thêm, hạn mức dự báo tăng 2.3 đồng; khách thu nhập 0 vẫn được dự báo hạn mức nền 5 triệu.
Quan hệ với Pearson: trong hồi quy đơn, b₁ = r · (σ_Y / σ_X). Dấu của slope trùng dấu của r. Và R² = r² — điều này dẫn ta sang phần đo chất lượng.
3.2 Hồi quy tuyến tính bội (multiple regression)
Thực tế Y phụ thuộc nhiều biến cùng lúc:
y = b₀ + b₁·x₁ + b₂·x₂ + ... + bₖ·xₖ + ε
Ví dụ hạn mức thẻ: = b₀ + b₁·thu_nhập + b₂·số_năm_làm_việc + b₃·số_dư_bình_quân.
Điểm mấu chốt về diễn giải hệ số trong mô hình bội: bⱼ là ảnh hưởng của xⱼ khi GIỮ NGUYÊN các biến khác ("holding all else equal"). Đây chính là cơ chế kiểm soát confounder: nếu đưa thu_nhập vào mô hình, hệ số của số_thẻ sẽ phản ánh ảnh hưởng của số thẻ sau khi đã trừ đi phần do thu nhập.
3.3 Bình phương tối thiểu (OLS) — trực giác
Làm sao chọn b₀, b₁? Phương pháp bình phương tối thiểu thông thường (Ordinary Least Squares, OLS): chọn đường thẳng sao cho tổng bình phương phần dư nhỏ nhất.
Vì sao bình phương mà không phải trị tuyệt đối? Bình phương phạt nặng sai số lớn và cho nghiệm giải tích duy nhất. Hệ quả phụ: OLS rất nhạy với outlier — một điểm lệch xa bị phạt bình phương sẽ kéo cả đường. Về hình học, OLS tìm đường "đi qua giữa đám mây điểm" theo phương dọc (đo phần dư theo trục y).
3.4 R² — mô hình giải thích được bao nhiêu?
R² (coefficient of determination, hệ số xác định) trả lời: bao nhiêu phần trăm phương sai của Y được mô hình giải thích?
R² = 1 − SSE/SST = (phương sai giải thích được) / (tổng phương sai)
- R² = 0.65 nghĩa là mô hình giải thích 65% biến thiên của Y; 35% còn lại là phần dư.
- R² ∈ [0, 1]. R² = 1 là khớp hoàn hảo (đáng ngờ với dữ liệu thực).
- R² luôn tăng khi thêm biến, kể cả biến vô nghĩa → dùng R² hiệu chỉnh (adjusted R²) khi so sánh mô hình nhiều biến, vì nó phạt số biến thừa.
Cảnh báo: R² cao không đảm bảo mô hình đúng hay dự báo tốt trên dữ liệu mới — nó chỉ nói mức khớp trên dữ liệu huấn luyện. Đánh giá dự báo cần tách tập test và các chỉ số như RMSE/MAE (xem ml-05-evaluation-metrics).
3.5 Phần dư (residual) — công cụ chẩn đoán số 1
Phần dư eᵢ = yᵢ − ŷᵢ (thực trừ dự báo). Vẽ residual plot (phần dư theo giá trị dự báo) là cách nhanh nhất phát hiện mô hình có vấn đề:
- Phần dư rải ngẫu nhiên quanh 0, không có hình dạng → tốt.
- Phần dư cong hình chữ U → quan hệ thật là phi tuyến, đường thẳng không hợp.
- Phần dư loe rộng dần (hình phễu) → phương sai không đồng nhất (heteroscedasticity).
4. Giả định của hồi quy tuyến tính và hệ quả khi vi phạm
OLS chỉ cho kết luận (đặc biệt là sai số chuẩn và p-value của hệ số) đáng tin khi thỏa các giả định sau — nhớ bằng cụm L-I-N-E:
| Giả định | Nội dung | Hệ quả khi vi phạm |
|---|---|---|
| Linearity (tuyến tính) | Quan hệ giữa X và E[Y] là tuyến tính | Hệ số bị lệch, dự báo sai; residual cong |
| Independence (độc lập) | Các phần dư độc lập nhau | Sai số chuẩn sai → p-value/CI sai. Hay gặp ở chuỗi thời gian (tự tương quan) |
| Normality (phần dư chuẩn) | Phần dư phân phối gần chuẩn | Ảnh hưởng CI/p-value ở mẫu nhỏ; mẫu lớn ít nhạy nhờ CLT |
| Equal variance (phương sai đồng nhất, homoscedasticity) | Phương sai phần dư không đổi theo x | Sai số chuẩn sai → suy diễn thống kê không tin được |
Lưu ý quan trọng: giả định về phân phối chuẩn áp cho phần dư, KHÔNG phải cho biến X hay Y. Nhầm chỗ này rất phổ biến. Với dữ liệu ngân hàng lệch nặng (thu nhập, số dư), thường phải biến đổi log biến target để residual gần chuẩn và khắc phục heteroscedasticity cùng lúc.
4.1 Đa cộng tuyến (multicollinearity)
Trong hồi quy bội, khi hai biến độc lập tương quan cao với nhau (ví dụ thu_nhập và số_dư_bình_quân cùng đo "sự giàu có"), ta gặp đa cộng tuyến:
- Hệ số trở nên không ổn định: đổi một chút dữ liệu, hệ số nhảy loạn, thậm chí đổi dấu.
- Sai số chuẩn phình to → khó biết biến nào thực sự quan trọng.
- Nhưng khả năng dự báo tổng thể thường không bị ảnh hưởng nhiều — vấn đề chủ yếu ở diễn giải hệ số.
Chẩn đoán bằng VIF (Variance Inflation Factor): VIF > 5–10 là đáng lo. Cách xử lý: bỏ bớt biến trùng lặp, gộp thành chỉ số, hoặc dùng hồi quy có ràng buộc (Ridge/Lasso).
4.2 Overfitting sơ lược
Overfitting (quá khớp): mô hình học cả nhiễu của dữ liệu huấn luyện, cho R² rất cao trên tập huấn luyện nhưng dự báo tệ trên dữ liệu mới. Dấu hiệu và cách phòng:
- Quá nhiều biến so với số quan sát → mô hình "học thuộc lòng".
- R² huấn luyện cao nhưng R² trên tập test thấp → khoảng chênh lớn = overfit.
- Phòng chống: tách tập train/test, cross-validation, ưu tiên mô hình đơn giản (Occam), regularization. Chủ đề này được đào sâu ở 03-classic-ml.
5. Tính tương quan & hồi quy ngay trên Postgres
PostgreSQL có sẵn các hàm tổng hợp thống kê. Lưu ý thứ tự tham số: CORR(Y, X), REGR_SLOPE(Y, X), REGR_INTERCEPT(Y, X), REGR_R2(Y, X) — biến phụ thuộc Y đứng trước, X sau.
Ví dụ 1 — Tương quan giữa số dư tài khoản và số giao dịch mỗi tài khoản. Trước hết đếm số giao dịch mỗi account trong một CTE, JOIN vào accounts, rồi tính tương quan:
-- ▶ Chạy được
WITH tx_count AS (
SELECT account_id, COUNT(*) AS n_tx
FROM transactions
GROUP BY account_id
)
SELECT
CORR(a.balance, t.n_tx) AS pearson_r,
REGR_SLOPE(a.balance, t.n_tx) AS slope_balance_per_tx,
REGR_R2(a.balance, t.n_tx) AS r_squared,
COUNT(*) AS n_accounts
FROM accounts a
JOIN tx_count t ON t.account_id = a.id;
Đọc kết quả: pearson_r cho biết số dư và mức độ hoạt động (số giao dịch) đi cùng nhau mạnh tới đâu; slope_balance_per_tx ước lượng số dư tăng bao nhiêu VND ứng với mỗi giao dịch tăng thêm; r_squared là % phương sai số dư giải thích được bởi số giao dịch.
Ví dụ 2 — Hồi quy đầy đủ (slope + intercept + R²) giữa số dư và tổng số tiền giao dịch mỗi tài khoản, kèm số quan sát để tự đánh giá độ tin cậy:
-- ▶ Chạy được
WITH tx_agg AS (
SELECT account_id,
SUM(amount) AS total_amount,
COUNT(*) AS n_tx
FROM transactions
GROUP BY account_id
)
SELECT
REGR_INTERCEPT(a.balance, x.total_amount) AS b0_intercept,
REGR_SLOPE(a.balance, x.total_amount) AS b1_slope,
REGR_R2(a.balance, x.total_amount) AS r_squared,
REGR_COUNT(a.balance, x.total_amount) AS n_used
FROM accounts a
JOIN tx_agg x ON x.account_id = a.id;
Mô hình ngầm: balance ≈ b0_intercept + b1_slope × total_amount.
Ví dụ 3 — So sánh tương quan theo từng loại tiền tệ để xem quan hệ có đồng nhất giữa các nhóm không (một cách thô để phát hiện confounder nhóm):
-- ▶ Chạy được
WITH tx_count AS (
SELECT account_id, COUNT(*) AS n_tx
FROM transactions
GROUP BY account_id
)
SELECT
a.currency,
COUNT(*) AS n_accounts,
ROUND(CORR(a.balance, t.n_tx)::numeric, 3) AS pearson_r
FROM accounts a
JOIN tx_count t ON t.account_id = a.id
GROUP BY a.currency
HAVING COUNT(*) >= 3
ORDER BY pearson_r DESC NULLS LAST;
Nếu pearson_r khác nhau rõ giữa các currency, quan hệ số dư–giao dịch không đồng nhất — gộp chung tất cả có thể che giấu cấu trúc thật (một biểu hiện của nghịch lý Simpson).
Use case thực tế
Bối cảnh: Khối Thẻ NCB muốn xây quy tắc gợi ý hạn mức thẻ tín dụng dựa trên dữ liệu khách hiện có, thay cho việc duyệt thủ công.
Bước 1 — Khám phá tương quan. Analyst tính Pearson giữa hạn_mức_hiện_tại và các biến ứng viên trên 8.400 khách: thu_nhập (r = 0.62), số_dư_bình_quân (r = 0.55), số_năm_quan_hệ (r = 0.21), số_giao_dịch/tháng (r = 0.08). Scatter cho thấy thu_nhập lệch phải mạnh nên bổ sung Spearman (ρ = 0.68, cao hơn Pearson → quan hệ đơn điệu nhưng hơi cong).
Bước 2 — Hồi quy bội. Mô hình log(hạn_mức) = b0 + b1·log(thu_nhập) + b2·log(số_dư) + b3·số_năm. Biến đổi log để residual gần chuẩn (khắc phục heteroscedasticity). Kết quả: adjusted R² = 0.58, tức mô hình giải thích 58% biến thiên hạn mức.
Bước 3 — Bắt lỗi. VIF của thu_nhập và số_dư = 6.3 → đa cộng tuyến: hai biến cùng đo "sức mạnh tài chính". Nhóm quyết định gộp thành một chỉ số tài chính, VIF hạ về 1.8, hệ số ổn định trở lại.
Bước 4 — Chống overfitting & suy diễn nhân quả. R² tập train 0.61 vs test 0.57 → chênh nhỏ, không overfit. Nhóm nhắc nhau: mô hình chỉ nói khách giàu thường được cấp hạn mức cao (tương quan trong dữ liệu lịch sử), không chứng minh "tăng hạn mức làm khách chi nhiều hơn". Câu hỏi nhân quả đó phải kiểm bằng A/B test trên một nhóm được nâng hạn mức ngẫu nhiên.
Ghi nhớ
- Hiệp phương sai đo cùng chiều/ngược chiều nhưng phụ thuộc đơn vị; tương quan Pearson r chuẩn hóa về [−1, 1], đo quan hệ tuyến tính.
- Pearson cho quan hệ thẳng, nhạy outlier; Spearman (trên hạng) cho quan hệ đơn điệu phi tuyến, bền với outlier và dữ liệu lệch.
- r = 0 chỉ nói "không tuyến tính" — luôn vẽ scatter trước khi kết luận.
- TƯƠNG QUAN ≠ NHÂN QUẢ: coi chừng đảo chiều nhân quả và biến gây nhiễu (confounder); muốn kết luận nhân quả cần A/B test.
- Hồi quy tuyến tính y = b₀ + b₁x + ...; OLS chọn đường tối thiểu tổng bình phương phần dư (nhạy outlier).
- Hệ số bội bⱼ đọc là "ảnh hưởng của xⱼ khi giữ nguyên biến khác" — cơ chế kiểm soát confounder đã biết.
- R² = % phương sai giải thích được; luôn tăng khi thêm biến → dùng adjusted R². R² cao không đảm bảo dự báo tốt.
- Giả định L-I-N-E: tuyến tính, độc lập, phần dư chuẩn, phương sai đồng nhất. Chuẩn áp cho phần dư, không phải X/Y.
- Đa cộng tuyến (VIF > 5–10) làm hệ số bất ổn; overfitting khi R² train ≫ test — tách train/test và giữ mô hình đơn giản.
- Postgres tính sẵn:
CORR(y,x),REGR_SLOPE(y,x),REGR_INTERCEPT(y,x),REGR_R2(y,x)— nhớ Y đứng trước X.
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.