Biểu đồ Q-Q
(Quantile-Quantile Plot)
Trong hành trình phân tích dữ liệu và thống kê, một trong những bước quan trọng đầu tiên là kiểm tra xem dữ liệu của chúng ta có tuân theo một phân phối lý thuyết nào đó hay không. Trong đại đa số trường hợp, chúng ta thường kỳ vọng dữ liệu của mình mang hình dáng của phân phối chuẩn (Normal distribution). Lý do là bởi hầu hết các mô hình thống kê, từ học máy cơ bản, hồi quy tuyến tính cho đến các kiểm định giả thiết quen thuộc (như t-test, ANOVA), đều được xây dựng dựa trên giả định nền tảng rằng sai số hoặc bản thân dữ liệu phải xấp xỉ chuẩn.
Khi khảo sát dạng phân phối, người mới học thường bắt đầu bằng Histogram. Biểu đồ này hữu ích nhưng nhạy với cách chia bin. Biểu đồ Q-Q (Quantile-Quantile Plot) cung cấp một góc nhìn bổ sung bằng cách so sánh trực tiếp các phân vị mẫu và phân vị lý thuyết.
1. Giới thiệu: Tại sao Histogram chưa đủ tốt và Q-Q Plot ra đời?
Khi muốn kiểm tra phân phối của một tập dữ liệu, phản xạ tự nhiên của nhiều người là sử dụng Biểu đồ tần suất (Histogram).
Tuy nhiên, như đã phân tích trong bài viết về Histogram, hình dạng biểu đồ có thể thay đổi đáng kể theo độ rộng bin (bin width) và điểm neo bắt đầu. Ngay cả mẫu được lấy từ phân phối chuẩn cũng có thể cho một Histogram lởm chởm hoặc nhiều đỉnh, nhất là khi mẫu nhỏ.
Để vượt qua giới hạn này, chúng ta cần một phương pháp so sánh trực tiếp các giá trị của dữ liệu với các giá trị kỳ vọng (lý thuyết) mà không bị phụ thuộc vào bất kỳ sự nhóm gộp (binning) nào. Đó chính là mục đích tồn tại của biểu đồ Q-Q.
Biểu đồ Q-Q (Quantile-Quantile Plot) thực chất là một biểu đồ phân tán (scatter plot). Nó được tạo ra bằng cách vẽ đồ thị hai tập hợp các phân vị (quantiles) so với nhau. Trong ứng dụng phổ biến nhất để kiểm định tính chuẩn mực, biểu đồ này so sánh các phân vị từ tập dữ liệu thực tế (sample quantiles) với các phân vị tương ứng được kỳ vọng từ một phân phối chuẩn lý thuyết (theoretical quantiles).
Nếu dữ liệu phù hợp với phân phối lý thuyết, các điểm Q-Q thường nằm gần một đường thẳng, với độ dao động phụ thuộc cỡ mẫu và cách ước lượng tham số. Vì không cần chia bin, Q-Q plot giúp nhận ra các dạng sai lệch có hệ thống, đặc biệt ở hai đuôi (tails). Tuy vậy, một vài điểm lệch trong mẫu nhỏ chưa đủ để bác bỏ mô hình phân phối.
2. Ý tưởng cốt lõi: Từng bước xây dựng biểu đồ Q-Q
Hoạt ảnh 1: Quá trình xây dựng biểu đồ Q-Q Plot từ dữ liệu thực tế. Bấm Play để xem. (Mã nguồn chính bằng TypeScript của hoạt ảnh này nằm tại `static/animations/qq-plot/src/scenes/qqPlot.tsx` trong repo nếu bạn muốn tìm hiểu cách lập trình `motion-canvas`).
Ta bắt đầu bằng một trực giác đơn giản trước khi viết công thức thống kê.
Hãy tưởng tượng bạn đang xếp hàng cùng 99 người bạn trong lớp học theo thứ tự chiều cao từ thấp đến cao (tổng cộng 100 người). Nếu tôi biết chiều cao của con người tuân theo phân phối chuẩn, tôi không cần đo chiều cao thực tế của bạn, tôi vẫn có thể đoán được. Nếu bạn đứng ở vị trí thứ 50, tôi biết bạn cao xấp xỉ chiều cao trung bình. Nếu bạn đứng ở vị trí thứ 84, tôi biết bạn cao hơn trung bình đúng bằng 1 độ lệch chuẩn. Việc so sánh giữa “chiều cao thực tế của bạn” và “chiều cao tôi đoán dựa trên vị trí xếp hàng của bạn” chính là ý tưởng cốt lõi của biểu đồ Q-Q.
Dưới đây là 4 bước toán học chính xác để xây dựng lên biểu đồ này:
Bước 1: Sắp xếp dữ liệu từ nhỏ đến lớn
Giả sử chúng ta thu thập được một mẫu dữ liệu gồm $n$ quan sát. Bước đầu tiên rất cơ bản: hãy sắp xếp các giá trị này theo thứ tự tăng dần.
Chúng ta gọi các giá trị đã sắp xếp này là các thống kê thứ tự (order statistics), và ký hiệu chúng là $x_{(1)}, x_{(2)}, \dots, x_{(n)}$. Trong đó $x_{(1)}$ là giá trị nhỏ nhất, còn $x_{(n)}$ là giá trị lớn nhất. Tập hợp này đóng vai trò là các phân vị mẫu (sample quantiles) của chúng ta.
Bước 2: Tính xác suất tích lũy thực nghiệm
(Percentiles)
Tiếp theo, với mỗi điểm dữ liệu $x_{(i)}$ (đang đứng ở vị trí thứ $i$), chúng ta cần gán cho nó một phần trăm xác suất. Ta cần biết điểm dữ liệu này vượt qua bao nhiêu phần trăm toàn bộ tập dữ liệu. Ta gọi tỷ lệ phần trăm này là xác suất tích lũy $p_i$.
Công thức phổ biến và tự nhiên nhất để tính $p_i$ là:
$$ p_i = \frac{i - 0.5}{n} $$Bạn có thể thắc mắc: Tại sao không dùng công thức đơn giản là $i/n$? Lý do đến từ mặt toán học. Nếu ta dùng $i/n$, điểm cuối cùng $x_{(n)}$ sẽ tương ứng với xác suất $1.0$ ($100%$). Khi chúng ta đối chiếu xác suất $1.0$ vào phân phối chuẩn lý thuyết (vốn trải dài từ âm vô cực đến dương vô cực), phân vị lý thuyết trả về sẽ là dương vô cực ($+\infty$). Điều này làm hỏng toàn bộ đồ thị. Bằng cách trừ đi một hằng số nhỏ $0.5$ (một kỹ thuật gọi là continuity correction), ta đảm bảo xác suất lớn nhất luôn nhỏ hơn $1$, giúp các điểm dữ liệu nằm trọn vẹn trong một mặt phẳng tọa độ hữu hạn.
Bước 3: Tính toán phân vị lý thuyết
(Theoretical Quantiles)
Sau khi có $p_i$, chúng ta sẽ đặt ra câu hỏi cho phía lý thuyết: “Nếu tôi có một phân phối chuẩn hoàn hảo, thì giá trị nằm ở mốc phần trăm thứ $p_i$ sẽ nằm ở đâu trên trục số?”
Để tìm giá trị này, chúng viết sử dụng hàm phân phối tích lũy nghịch đảo (Inverse Cumulative Distribution Function) — hay còn gọi là hàm Quantile. Chúng ta thường sử dụng phân phối chuẩn tắc $N(0, 1)$ làm hệ quy chiếu lý thuyết.
Chúng ta tính các phân vị lý thuyết (theoretical quantiles) $q_i$ qua công thức:
$$ q_i = \Phi^{-1}(p_i) $$Trong đó, $\Phi^{-1}$ là hàm nghịch đảo của hàm phân phối tích lũy của phân phối chuẩn tắc (thường được ký hiệu là $Z$-score). Ví dụ, nếu $p_i = 0.5$ (phân vị 50%), thì $q_i = 0$. Nếu $p_i \approx 0.84$ (phân vị 84%), thì $q_i \approx 1.0$. Giá trị $q_i$ cho chúng ta biết vị trí lý thuyết trên trục $Z$ mà điểm dữ liệu thứ $i$ nên đứng.
Bước 4: Chấm các tọa độ lên biểu đồ
Khi đã có trong tay cả hai bộ số lượng: phân vị lý thuyết $q_i$ và phân vị mẫu từ thực tế $x_{(i)}$, bước cuối cùng đơn giản là vẽ chúng lên trục tọa độ 2D.
Trục hoành (trục X) luôn biểu diễn các Theoretical Quantiles $q_i$. Trục tung (trục Y) luôn biểu diễn các Sample Quantiles $x_{(i)}$.
Mỗi điểm trên biểu đồ có tọa độ $(q_i, x_{(i)})$. Hình dạng chung của các điểm cho biết mẫu lệch khỏi phân phối tham chiếu theo cách nào.
3. Cách đọc biểu đồ Q-Q: “Bắt mạch” dữ liệu
Việc tính toán và vẽ đồ thị hiện nay hoàn toàn được phần mềm (như Python, R, Excel) lo liệu. Kỹ năng quan trọng nhất của người làm phân tích là đọc biểu đồ.
Nguyên tắc cốt lõi của Q-Q plot rất dễ nhớ: Các điểm dữ liệu càng bám sát vào một đường thẳng chéo (đường tham chiếu $y=x$ hoặc đường đi qua các tứ phân vị), dữ liệu thực tế càng khớp với phân phối lý thuyết.
Đường thẳng tham chiếu này đại diện cho sự khớp nhau 1-1. Sự trệch hướng của các điểm so với đường thẳng ở các vị trí khác nhau sẽ lột trần những đặc tính khác nhau của tập dữ liệu:
Biểu đồ 1: Widget tương tác Q-Q Plot. Kéo thanh trượt để trải nghiệm cảm giác dữ liệu biến dạng từ phân phối chuẩn sang lệch (skewed) hoặc có đuôi nặng/nhẹ (heavy/light tails).
Mẹo trực quan để “đọc vị” phân phối:
1. Bắt bệnh Lệch (Skewness): Sự nhầm lẫn phổ biến nhất là nhìn vào đỉnh của Histogram. Đừng nhìn đỉnh, hãy nhìn vào cái đuôi. Cái đuôi lác đác kéo dài về hướng nào thì ta gọi tên là lệch về hướng đó!
- Lệch trái: Đuôi kéo dài về bên trái (phía âm), phần đỉnh to nhất bị dồn dập sang bên phải. Trên Q-Q Plot, đường cong vồng lên như một mái vòm.
- Lệch phải: Đuôi kéo dài thượt về bên phải (phía dương), phần đỉnh bị dồn dập sang bên trái. Trên Q-Q Plot, đường cong lõm xuống như hình chữ U.
2. Bắt bệnh Đuôi Nặng/Nhẹ (Kurtosis): Thuật ngữ “nặng/nhẹ” ở đây ám chỉ xác suất xuất hiện của các giá trị cực đoan (outliers) ở hai đầu mút (khối lượng của đuôi), chứ không phải là biểu đồ nằm cao hay thấp.
- Đuôi nặng: Dữ liệu có rất nhiều outliers văng rất xa ở cả hai bên so với phân phối chuẩn. Trên Q-Q plot, hai đầu mút uốn cong chệch ra xa khỏi đường chéo (tạo hình chữ S).
- Đuôi nhẹ: Dữ liệu bị “chặn” cứng ở hai đầu (ví dụ như phân phối đều Uniform), hầu như không có giá trị dị biệt nào. Trên Q-Q plot, hai đầu mút uốn cụp vào phía trong (tạo hình chữ S ngược).
Ghi chú: Bản chất toán học: Tại sao lại sinh ra các hình thù này?
Cách để hiểu các hình dáng Q-Q Plot nằm ở việc so sánh trực tiếp trục tung $Y$ (dữ liệu thực tế) với trục hoành $X$ (kỳ vọng lý thuyết). Đường chéo chính là ranh giới $Y = X$.
- Đuôi nặng (Chữ S): Các phân vị ở hai đuôi của dữ liệu nằm xa tâm hơn các phân vị lý thuyết. Đầu trái có $Y<X$, còn đầu phải có $Y>X$, nên các điểm thường tạo dạng chữ S.
- Đuôi nhẹ (Chữ S ngược): Dữ liệu thực tế bị “cụt” (bounded). Đầu bên trái không thể âm sâu như lý thuyết mong đợi ($Y > X$) nên ngoi lên. Đầu bên phải không thể to bằng lý thuyết ($Y < X$) nên cắm xuống.
- Lệch phải (Chữ U): Dữ liệu có nhiều giá trị dương khổng lồ ($Y > X$ ở bên phải $\rightarrow$ vút lên), trong khi đầu bên trái thường bị chặn đáy (ví dụ: không thể nhỏ hơn 0, nên $Y > X$ so với số âm lý thuyết $\rightarrow$ cũng nằm trên đường chéo). Cả 2 đầu đều $Y > X$, tạo thành mặt lõm hướng lên (chữ U).
- Lệch trái (Mái vòm úp): Với kiểu lệch trái điển hình, đuôi trái kéo dài hơn còn phía phải ngắn hơn; so với đường tham chiếu, cả hai đầu có thể nằm thấp hơn và tạo dạng cong úp xuống.
Nhờ việc làm quen với những hình thù này, biểu đồ Q-Q mang lại một “tầm nhìn X-quang”, giúp bạn hiểu sâu sắc về cấu trúc vi mô của dữ liệu thay vì chỉ nhìn vào bề nổi.
4. Tổng kết
Tóm lại, Biểu đồ Q-Q (Quantile-Quantile Plot) đối chiếu các phân vị mẫu với phân vị của một phân phối tham chiếu. Histogram cho cái nhìn tổng quát nhưng nhạy với cách chia khoảng; Q-Q plot tránh lựa chọn bin và làm rõ hơn một số sai lệch có hệ thống.
Bằng cách liên kết trực tiếp Sample Quantiles với Theoretical Quantiles, công cụ này đặc biệt hữu ích để kiểm tra hai đuôi phân phối. Việc diễn giải vẫn cần xét cỡ mẫu, cách ước lượng tham số và dải bất định; Q-Q plot là công cụ chẩn đoán chứ không phải một kiểm định kết luận tự động.
Lần tới, trước khi bạn áp dụng một mô hình hồi quy tuyến tính, hay chạy một kiểm định giả thiết t-test, hãy dành ra một dòng code nhỏ để vẽ biểu đồ Q-Q. Hiểu rõ dữ liệu của mình bằng Q-Q plot chính là bước đầu tiên để trở thành một nhà phân tích chuyên nghiệp và vững vàng hơn!