Nội dung

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ả thuyế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 đối mặt với bài toán kiểm tra phân phối, phản xạ tự nhiên và phổ biến nhất của người mới học là vẽ ngay một biểu đồ tần suất (Histogram). Tuy nhiên, Histogram tiềm ẩn những hạn chế có thể đánh lừa trực giác của bạn. Trong bài viết này, chúng ta sẽ cùng khám phá một công cụ toán học trực quan, mạnh mẽ và đáng tin cậy hơn: Biểu đồ Q-Q (Quantile-Quantile Plot).

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 trực quan trong bài viết về Histogram, hình dạng của nó phụ thuộc cực kỳ lớn vào cách ta chọn độ rộng của bin (bin width)điểm neo bắt đầu. Một tập dữ liệu tuân theo phân phối chuẩn hoàn hảo vẫn có thể biến thành một biểu đồ lởm chởm, đa đỉnh nếu ta chia bin kém tinh tế, dẫn đến những kết luận sai lệch.

Để 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 thực sự tuân theo phân phối lý thuyết đó, cả hai bộ phân vị này sẽ đồng biến chặt chẽ với nhau và các điểm trên đồ thị sẽ nằm xấp xỉ trên một đường thẳng. Điểm mạnh của biểu đồ Q-Q nằm ở tính khách quan cao. Nó cho phép ta nhìn nhận rõ ràng những sự sai lệch dù là nhỏ nhất ở từng điểm dữ liệu đơn lẻ. Đặc biệt ở hai phần đuôi (tails) của phân phối — nơi mà Histogram thường khó quan sát vì dữ liệu quá thưa thớt — Q-Q plot lại thể hiện rất rõ ràng.

2. Ý tưởng cốt lõi: Từng bước xây dựng biểu đồ Q-Q

Thay vì ngay lập tức bị choáng ngợp bởi những công thức thống kê khô khan, hãy bắt đầu bằng một trực giác đơn giản.

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 được chấm trên biểu đồ mang tọa độ $(q_i, x_{(i)})$. Bức tranh toàn cảnh của tập hợp hàng loạt các chấm nhỏ này sẽ kể cho chúng ta nghe một câu chuyện rõ ràng về bản chất của dữ liệu.

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:

Lệch trái Lệch phải

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).

[!TIP] 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).

[!NOTE] 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): Dữ liệu thực tế quá cực đoan ở cả 2 đầu. Đầu bên trái, nó âm sâu hơn lý thuyết ($Y < X$) nên chúi cắm xuống dưới đường chéo. Đầu bên phải, nó dương to hơn lý thuyết ($Y > X$) nên vút lên trên đường chéo.
  • Đ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): Ngược lại hoàn toàn, dữ liệu có nhiều số âm sâu thẳm và bị chặn trần ở bên phải, khiến cả hai đầu đều $Y < X$, tạo thành mái vòm ú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. Motion Canvas Animation

Để giúp bạn hiểu sâu sắc nhất từng bước hình thành nên Q-Q Plot, tôi đã chuẩn bị sẵn một Motion Canvas Animation tương tác. Thay vì chỉ đưa ra biểu đồ tĩnh cuối cùng, animation này sẽ mô tả sinh động quá trình:

  1. Lấy mẫu điểm dữ liệu thô (Raw Data)
  2. Sắp xếp chúng theo thứ tự từ nhỏ đến lớn
  3. Tính toán và đối chiếu với phân vị lý thuyết (Theoretical Quantiles)
  4. Di chuyển và dóng điểm trên mặt phẳng toạ độ 2D
  5. Vẽ đường thẳng lý tưởng $y=x$ để so sánh

Bấm nút Play trên màn hình dưới đây để xem Animation ngay trên trình duyệt của bạn (Tua lại/Phóng to tùy ý nhé)!

Hoạt ảnh 1: Quá trình xây dựng biểu đồ Q-Q Plot từ dữ liệu thực tế. (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).

5. Tổng kết

Tóm lại, Biểu đồ Q-Q (Quantile-Quantile Plot) không chỉ là một đồ thị học thuật rườm rà, mà nó thực sự là một “chiếc kính lúp” soi rọi vào bản chất phân phối của dữ liệu. Trong khi Histogram mang lại một cái nhìn bao quát nhanh chóng nhưng dễ bị thao túng bởi cách chia khoảng (bins), thì Q-Q plot lại đem đến một sự đối sánh ở cấp độ vi mô, chi tiết tới từng điểm dữ liệu đơn lẻ.

Bằng cách giảm thiểu sự chủ quan của việc thiết lập bin width và liên kết trực tiếp Sample Quantiles với các mốc Theoretical Quantiles, công cụ này cung cấp một phương pháp đánh giá sắc bén. Nó đặc biệt nhạy cảm với các hành vi bất thường ở hai đuôi phân phối — nơi mà những sai lệch trong dự báo thống kê thường xuyên ẩn nấp.

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ả thuyế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!