# Biểu đồ tần suất (Histogram): Lăng kính đầu tiên của dữ liệu


Khi có trong tay một tập dữ liệu mới, điều đầu tiên chúng ta muốn biết thường là: *Dữ liệu này phân bố như thế nào? Chỗ nào tập trung đông nhất? Có giá trị nào quá khác biệt (outlier) không?* 

Để trả lời nhanh chóng những câu hỏi này, **Biểu đồ tần suất (Histogram)** chính là công cụ phổ biến và trực quan nhất.

## 1. Histogram là gì?

Khác với biểu đồ cột (Bar chart) dùng để đếm các danh mục rời rạc (ví dụ: số người thích màu Đỏ, Xanh, Vàng), **Histogram** dùng để hiển thị sự phân bố của một biến **liên tục** (như chiều cao, cân nặng, hoặc điểm số).

Cách Histogram hoạt động rất đơn giản:
1. Chia toàn bộ dải giá trị của dữ liệu thành các khoảng bằng nhau (gọi là các **bins**).
2. Đếm số lượng điểm dữ liệu (tần suất) rơi vào mỗi khoảng đó.
3. Vẽ các cột liền kề nhau, với chiều cao của cột tương ứng với tần suất đếm được.

## 2. Một ví dụ đơn giản

Giả sử chúng ta có điểm thi của 30 học sinh (thang điểm 10) như sau:
`3.6, 3.9, 4.4, 4.4, 4.8, 5.0, 5.1, 5.6, 5.7, 5.7, 5.8, 5.8, 5.8, 6.1, 6.1, 6.1, 6.2, 6.3, 6.6, 6.7, 6.9, 7.0, 7.1, 7.2, 7.3, 7.5, 7.7, 8.7, 8.8, 8.9`

Nếu chúng ta chia điểm số thành các khoảng (bins) có độ rộng là 2 điểm:
- **Bin [0 - 2):** 0 học sinh
- **Bin [2 - 4):** 2 học sinh
- **Bin [4 - 6):** 11 học sinh
- **Bin [6 - 8):** 14 học sinh
- **Bin [8 - 10]:** 3 học sinh

Khi dựng các cột tương ứng với tần suất đếm được, chúng ta sẽ có ngay một biểu đồ Histogram trực quan. Qua đó, ta thấy ngay điểm số tập trung đông đảo nhất ở mức trung bình khá (6 - 8 điểm), và rất ít người bị điểm yếu (dưới 4) hay xuất sắc (trên 8).

<script src="https://cdn.plot.ly/plotly-2.32.0.min.js"></script>
<div id="histogram-example-plot" style="width: 100%; max-width: 600px; margin: 0 auto; height: 400px;"></div>
<script src="/js/histogram-example.js"></script>
<p align="center"><i><b>Biểu đồ 1:</b> Biểu đồ Histogram thể hiện phân bố điểm số của 30 học sinh với độ rộng bin = 2.</i></p>

## 3. Vấn đề của Histogram: Độ rộng Bin và Điểm Neo

Mặc dù rất trực quan, Histogram có một "gót chân Achilles" lớn. Như đã được đề cập trong bài viết về [Q-Q Plot]({{< ref "qq-plot.md" >}}), biểu đồ Histogram có một hạn chế lớn:

> Tuy nhiên, hình dạng của một chiếc Histogram phụ thuộc cực kỳ lớn vào hai yếu tố chủ quan: độ rộng của bin (bin width) và điểm neo bắt đầu của các bin. Nếu bạn có một tập dữ liệu nhỏ hoặc vừa phải, việc thay đổi số lượng bin từ 10 sang 15 có thể biến một hình chuông hoàn hảo thành một biểu đồ lởm chởm, đa đỉnh. Dữ liệu thực sự có thể tuân theo phân phối chuẩn, nhưng một Histogram với việc chia bin kém tinh tế sẽ trông méo mó, khiến bạn đưa ra những kết luận sai lệch.

Để thấy rõ điều này, hãy thử tương tác với biểu đồ dưới đây. Tập dữ liệu bên dưới là **cố định** (được lấy mẫu từ một phân phối chuẩn). Hãy thử thay đổi **Độ rộng Bin** và **Điểm neo bắt đầu** để xem hình dáng của phân phối bị bóp méo như thế nào chỉ bằng những thiết lập chia nhóm chủ quan:

<link rel="stylesheet" href="/css/histogram-interactive.css">
<div class="histogram-widget" id="histogram-interactive-widget">
  <div class="histogram-controls">
    <div class="control-group">
      <label for="hist-bin-width">Độ rộng Bin (Bin Width):</label>
      <select id="hist-bin-width">
        <option value="2">2 (Rất hẹp - Đa đỉnh, lởm chởm)</option>
        <option value="5" selected>5 (Vừa phải - Hình chuông đẹp)</option>
        <option value="10">10 (Hơi rộng)</option>
        <option value="20">20 (Quá rộng - Mất chi tiết)</option>
      </select>
    </div>
    <div class="control-group">
      <label for="hist-offset">Điểm neo bắt đầu (Offset):</label>
      <select id="hist-offset">
        <option value="-2">-2</option>
        <option value="0" selected>0</option>
        <option value="2">+2</option>
        <option value="3">+3 (Có thể làm méo phân phối)</option>
      </select>
    </div>
  </div>
  <div class="histogram-chart-container" id="hist-chart-area"></div>
  <div class="histogram-x-axis" id="hist-x-axis"></div>
</div>
<script src="/js/histogram-interactive.js"></script>

<p align="center"><i><b>Biểu đồ 2:</b> Tương tác thay đổi Bin Width và Offset để thấy rõ sự biến dạng của Histogram trên cùng một tập dữ liệu chuẩn.</i></p>

Đây cũng là lý do ở những bài toán cần phân tích hình dáng phân phối thực sự, người ta thường tìm đến các công cụ sắc bén, khách quan hơn như **Q-Q Plot**. Tuy vậy, Histogram vẫn luôn là bước thăm dò (Exploratory Data Analysis) đầu tiên không thể thiếu.


