> ## Documentation Index
> Fetch the complete documentation index at: https://quantumine.net/learn/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This library is published in two languages with the same paths: English at https://quantumine.net/learn/<path> and Vietnamese at https://quantumine.net/learn/vi/<path>. Add .md to either address for the Markdown version.
> llms.txt and llms-full.txt list the English pages only. When the reader writes in Vietnamese, read and cite the Vietnamese page.
> To search the library, connect to the MCP server at https://quantumine.net/learn/mcp. Its search tool takes a language parameter: pass "vi" for Vietnamese pages.
> The library is licensed under CC BY 4.0: it may be quoted, reused and used to train models. Credit Quantumine and link to the page you used.

# Thống kê mô tả (descriptive statistics)

> Thống kê mô tả (descriptive statistics) tóm tắt dữ liệu bằng vài con số: trung bình và median cho biết dữ liệu nằm ở đâu, độ lệch chuẩn cho biết dữ liệu trải rộng bao nhiêu, quantile cho biết vị trí của một giá trị. Giá trị cực đoan kéo độ lệch chuẩn đi, còn quartile gần như đứng yên.

Thống kê mô tả (descriptive statistics) là những con số tóm tắt và mô tả dữ liệu đang có, không suy ra điều gì vượt ra ngoài dữ liệu đó ([Lane](https://onlinestatbook.com/2/introduction/descriptive.html)). Bốn nhóm con số hay dùng là trung bình, median, độ lệch chuẩn cùng phương sai và quantile.

## Các con số của thống kê mô tả cho biết gì và dùng để làm gì?

Lấy lợi suất theo giờ của BTCUSDT (bitcoin giao dịch với USDT trên Binance) từ 1/1/2025 đến 14/8/2026 làm ví dụ. Lợi suất một giờ là phần trăm thay đổi của giá đóng cửa so với giờ trước, tính trên [nến 1 giờ](https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints) theo giờ UTC, nên có 14.184 giá trị. Histogram dưới đây chia các giá trị vào những khoảng rộng 0,05% rồi đếm số giờ trong mỗi khoảng, và đánh dấu trung bình, median, nửa giữa của dữ liệu (Q1 đến Q3) và khoảng trung bình ± 1 độ lệch chuẩn.

> [tab] Hình

> [tab] Code Python
>
> ```python theme={null}
> import numpy as np
> import pandas as pd
> import requests
>
>
> def utc_ms(time):
>     return int(pd.Timestamp(time, tz="UTC").timestamp() * 1000)
>
>
> def hourly_closes(symbol, start, end):
>     """Giá đóng cửa các nến 1 giờ mở từ start đến end (UTC), mỗi lần lấy tối đa 1.000 nến."""
>     closes, t = [], utc_ms(start)
>     while t <= utc_ms(end):
>         klines = requests.get(
>             "https://data-api.binance.vision/api/v3/klines",
>             params={"symbol": symbol, "interval": "1h", "startTime": t, "endTime": utc_ms(end), "limit": 1000},
>         ).json()
>         closes += [float(k[4]) for k in klines]
>         t = klines[-1][0] + 3_600_000   # mở nến kế tiếp
>     return pd.Series(closes)
>
>
> close = hourly_closes("BTCUSDT", "2024-12-31 23:00", "2026-08-14 23:00")   # 14.185 giá đóng cửa
> ret = close.pct_change().dropna() * 100                                     # lợi suất theo giờ (%): 14.184 giá trị
>
> x = np.sort(ret.to_numpy())                                  # x(1) <= x(2) <= ... <= x(N)
> N = len(x)
> mean = x.sum() / N
> median = x[N // 2] if N % 2 else (x[N // 2 - 1] + x[N // 2]) / 2
> var = ((x - mean) ** 2).sum() / (N - 1)
> std = var ** 0.5
>
>
> def quantile(p):
>     h = p * (N - 1)                                          # vị trí trong x, đếm từ 0
>     j = int(h)
>     return x[j] + (h - j) * (x[j + 1] - x[j])                # nội suy giữa hai giá trị kề nhau
>
>
> q1, q3 = quantile(0.25), quantile(0.75)
> print(N, round(mean, 4), round(median, 4))                   # số giá trị, trung bình, median: 14184 -0.0017 0.0008
> print(round(var, 4), round(std, 4))                          # phương sai và độ lệch chuẩn: 0.2233 0.4725
> print(round(q1, 4), round(q3, 4), round(q3 - q1, 4))         # Q1, Q3 và IQR: -0.1983 0.2022 0.4004
> print(round(ret.mean(), 4), round(ret.median(), 4), round(ret.var(), 4), round(ret.std(), 4), ret.quantile([0.25, 0.75]).round(4).tolist())   # pandas ra cùng các số trên: -0.0017 0.0008 0.2233 0.4725 [-0.1983, 0.2022]
> print(round(ret.std(ddof=0), 4))                             # độ lệch chuẩn chia cho N thay vì N - 1: 0.4725
> print(round(ret.min(), 2), round(ret.max(), 2))              # nhỏ nhất và lớn nhất: -4.9 5.03
>
> extreme = ret.abs() > 2                                      # giờ giá đổi hơn 2%
> kept = ret[~extreme]
> print(int(extreme.sum()))                                    # số giờ giá đổi hơn 2%: 96
> print(round(((ret[extreme] - ret.mean()) ** 2).sum() / ((ret - ret.mean()) ** 2).sum(), 2))   # phần tổng bình phương độ lệch của chúng: 0.22
> print(round(kept.mean(), 4), round(kept.median(), 4), round(kept.std(), 4), round(kept.quantile(0.75) - kept.quantile(0.25), 4))   # khi bỏ chúng, trung bình, median, độ lệch chuẩn, IQR: -0.0004 0.001 0.4183 0.3974
>
> counts, _ = np.histogram(ret, bins=np.linspace(-2, 2, 81))   # số giờ trong 80 khoảng rộng 0,05% từ -2% đến 2%
> print(counts.tolist(), int((ret < -2).sum()), int((ret > 2).sum()))   # số giờ ở từng khoảng, rồi số giờ dưới -2% và trên 2%: [5, 4, 5, ..., 3] 51 45
> ```

Gọi $x_1, x_2, \dots, x_N$ là $N$ giá trị, ở đây $N = 14\,184$ lợi suất, $\sum$ là tổng trên cả $N$ giá trị, và $x_{(1)} \le x_{(2)} \le \dots \le x_{(N)}$ là chúng sau khi xếp từ nhỏ đến lớn. Với quantile, $p$ là một tỷ lệ từ 0 đến 1, còn $j$ và $g$ là phần nguyên và phần thập phân của $p(N - 1) + 1$, nên $Q_p$ nội suy giữa hai giá trị kề nhau. Bảng dưới cho công thức và ý nghĩa của từng con số.

| Con số | Công thức | Ý nghĩa |
| - | - | - |
| Trung bình (mean) | $\bar{x} = (x_1 + x_2 + \dots + x_N) / N$ | Tâm của dữ liệu. Mọi giá trị đều góp vào, nên giá trị cực đoan kéo nó đi |
| Median | $N$ lẻ: $x_{((N+1)/2)}$ $N$ chẵn: $(x_{(N/2)} + x_{(N/2+1)}) / 2$ | Giá trị đứng giữa, một nửa dữ liệu nhỏ hơn nó. Chỉ dựa trên thứ tự, nên một giá trị cực đoan dù lớn đến đâu cũng chỉ chiếm một vị trí và [không làm nó lệch đi](https://www.itl.nist.gov/div898/handbook/eda/section3/eda351.htm) |
| Phương sai (variance) | $s^2 = \sum (x_i - \bar{x})^2 / (N - 1)$ | Độ trải của dữ liệu quanh trung bình, tính từ bình phương độ lệch nên có đơn vị là %², khác đơn vị của dữ liệu |
| Độ lệch chuẩn (standard deviation) | $s = \sqrt{s^2}$ | [Căn bậc hai](https://www.itl.nist.gov/div898/handbook/eda/section3/eda356.htm) của phương sai, đưa độ trải về cùng đơn vị với dữ liệu (%). Giá trị cực đoan làm nó phình ra |
| Quantile (percentile, quartile) | $Q_p = x_{(j)} + g\,(x_{(j+1)} - x_{(j)})$ | Phần $p$ của dữ liệu nằm dưới $Q_p$. Q1 là $Q_{0.25}$ và Q3 là $Q_{0.75}$ |
| IQR | $\text{IQR} = Q_3 - Q_1$ | Độ trải của nửa giữa dữ liệu, nên giá trị cực đoan gần như không làm nó đổi |

Trên 14.184 lợi suất, trung bình là −0,0017%, median +0,0008%, độ lệch chuẩn 0,4725% (phương sai 0,2233 %²), Q1 −0,1983%, Q3 +0,2022% và IQR 0,4004 điểm phần trăm.

Thử bỏ 96 giờ giá đổi hơn 2%, tức các giờ nằm ngoài khung của hình. Chúng chỉ là 0,7% số giờ nhưng chiếm 22% tổng bình phương độ lệch, nên độ lệch chuẩn giảm hơn 11% (xuống 0,4183%) còn IQR chưa giảm 1% (xuống 0,3974%). Trung bình đổi sang −0,0004%, median chỉ nhích lên +0,0010%.

Phương sai chia cho $N - 1$ khi dữ liệu là mẫu lấy từ tập lớn hơn, vì chia cho $N$ thường cho kết quả thấp hơn phương sai của cả tập ([Lane](https://onlinestatbook.com/2/summarizing_distributions/variability.html)), còn khi dữ liệu là cả tập thì chia cho $N$. [NumPy](https://numpy.org/doc/stable/reference/generated/numpy.std.html) mặc định chia cho $N$, [pandas](https://pandas.pydata.org/docs/reference/api/pandas.Series.std.html) chia cho $N - 1$, nhưng với 14.184 giá trị cả hai cùng ra 0,4725%.

## Tham khảo

Nguồn: [Lane, Online Statistics Education](https://onlinestatbook.com/2/summarizing_distributions/summarizing_distributions.html) (Đại học Rice), NIST/SEMATECH e-Handbook mục [1.3.5.1](https://www.itl.nist.gov/div898/handbook/eda/section3/eda351.htm) và [1.3.5.6](https://www.itl.nist.gov/div898/handbook/eda/section3/eda356.htm), tài liệu của [NumPy](https://numpy.org/doc/stable/reference/generated/numpy.quantile.html) và pandas. Giá lấy từ API công khai của Binance.

## Đọc tiếp

> [card] [Luật số lớn](https://quantumine.net/learn/learn/vi/foundations/law-of-large-numbers.md)
>
> Trung bình của nhiều lần lặp gần kỳ vọng đến đâu, nhìn qua việc tung đồng xu.

> [card] [Kỳ vọng](https://quantumine.net/learn/learn/vi/foundations/expected-value.md)
>
> Lãi lỗ trung bình mỗi lần đặt tiền, tính từ xác suất thắng và mức lãi lỗ của chiến lược.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.