🎰 Phân phối rời rạc (Discrete Distributions)
Mục tiêu bài học
Sau bài học này, bạn sẽ:
- Hiểu Random Variable và Distribution
- Nắm vững Binomial Distribution
- Hiểu và áp dụng Poisson Distribution
- Tính Expected Value và Variance
1. Random Variable
1.1 Định nghĩa
Random Variable (Biến ngẫu nhiên) là biến có giá trị được xác định bởi kết quả của thí nghiệm ngẫu nhiên.
| Loại | Ví dụ |
|---|---|
| Discrete | Số mặt ngửa khi tung xu, số khách hàng |
| Continuous | Chiều cao, cân nặng, thời gian |
1.2 Probability Distribution
Probability Distribution mô tả xác suất của mỗi giá trị có thể xảy ra.
1import numpy as np2import matplotlib.pyplot as plt34# Ví dụ: Tung 2 xúc xắc, X = tổng 2 mặt5outcomes = [(i, j) for i in range(1, 7) for j in range(1, 7)]6sums = [i + j for i, j in outcomes]78# Đếm tần suất9from collections import Counter10freq = Counter(sums)1112# Probability distribution13probs = {k: v/36 for k, v in sorted(freq.items())}14print("P(X=x):", probs)1516# Visualization17plt.bar(probs.keys(), probs.values())18plt.xlabel('Sum of 2 dice')19plt.ylabel('Probability')20plt.title('Probability Distribution')21plt.show()2. Expected Value và Variance
2.1 Expected Value (Kỳ vọng)
2.2 Variance
2.3 Tính chất
| Tính chất | Công thức |
|---|---|
| E(aX + b) | aE(X) + b |
| Var(aX + b) | a²Var(X) |
| E(X + Y) | E(X) + E(Y) |
| Var(X + Y) | Var(X) + Var(Y) (nếu độc lập) |
2.4 Ví dụ
Tung 1 xúc xắc, X = số chấm:
1import numpy as np23# Expected value của xúc xắc4X = np.array([1, 2, 3, 4, 5, 6])5P = np.array([1/6] * 6)67E_X = np.sum(X * P)8E_X2 = np.sum(X**2 * P)9Var_X = E_X2 - E_X**21011print(f"E(X) = {E_X:.4f}") # 3.512print(f"Var(X) = {Var_X:.4f}") # 2.916713print(f"Std(X) = {np.sqrt(Var_X):.4f}") # 1.70783. Bernoulli Distribution
3.1 Định nghĩa
Thí nghiệm chỉ có 2 kết quả: Success (1) hoặc Failure (0).
3.2 Tính chất
| Thống kê | Công thức |
|---|---|
| E(X) | p |
| Var(X) | p(1-p) = pq |
3.3 Code Python
1from scipy import stats23# Bernoulli với p = 0.34p = 0.35bernoulli = stats.bernoulli(p)67print(f"P(X=0) = {bernoulli.pmf(0):.4f}") # 0.78print(f"P(X=1) = {bernoulli.pmf(1):.4f}") # 0.39print(f"E(X) = {bernoulli.mean():.4f}") # 0.310print(f"Var(X) = {bernoulli.var():.4f}") # 0.214. Binomial Distribution
4.1 Định nghĩa
n lần thí nghiệm Bernoulli độc lập, mỗi lần có xác suất thành công p.
X = số lần thành công
4.2 Tính chất
| Thống kê | Công thức |
|---|---|
| E(X) | np |
| Var(X) | np(1-p) |
| Std(X) |
4.3 Điều kiện áp dụng
- ✅ Số lần thử n cố định
- ✅ Mỗi lần thử độc lập
- ✅ Chỉ có 2 kết quả (Success/Failure)
- ✅ Xác suất thành công p không đổi
4.4 Ví dụ tính tay
Tung đồng xu 10 lần, P(đúng 6 mặt ngửa)?
n = 10, k = 6, p = 0.5
4.5 Code Python
1from scipy import stats2import numpy as np3import matplotlib.pyplot as plt45# Binomial: n=10, p=0.56n, p = 10, 0.57binomial = stats.binom(n, p)89# P(X = 6)10print(f"P(X=6) = {binomial.pmf(6):.4f}")1112# P(X <= 3)13print(f"P(X≤3) = {binomial.cdf(3):.4f}")1415# P(X >= 7)16print(f"P(X≥7) = {1 - binomial.cdf(6):.4f}")1718# E(X) và Var(X)19print(f"E(X) = {binomial.mean():.4f}") # 520print(f"Var(X) = {binomial.var():.4f}") # 2.52122# Visualization23k = np.arange(0, n+1)24plt.figure(figsize=(10, 5))25plt.bar(k, binomial.pmf(k), color='steelblue', edgecolor='black')26plt.xlabel('Number of Successes (k)')27plt.ylabel('P(X = k)')28plt.title(f'Binomial Distribution (n={n}, p={p})')29plt.xticks(k)30plt.show()4.6 Ứng dụng thực tế
Quality Control:
Lô hàng 1000 sản phẩm, tỷ lệ lỗi 2%. Lấy mẫu 50 sản phẩm.
1n, p = 50, 0.022binom = stats.binom(n, p)34# P(không có lỗi)5print(f"P(X=0) = {binom.pmf(0):.4f}")67# P(nhiều nhất 2 lỗi)8print(f"P(X≤2) = {binom.cdf(2):.4f}")910# P(ít nhất 1 lỗi)11print(f"P(X≥1) = {1 - binom.pmf(0):.4f}")5. Poisson Distribution
5.1 Định nghĩa
Đếm số sự kiện xảy ra trong một khoảng thời gian/không gian cố định.
Trong đó: λ (lambda) = số sự kiện trung bình
5.2 Tính chất
| Thống kê | Công thức |
|---|---|
| E(X) | λ |
| Var(X) | λ |
| Std(X) | √λ |
Với Poisson, Mean = Variance = λ
5.3 Điều kiện áp dụng
- ✅ Sự kiện xảy ra độc lập
- ✅ Tỷ lệ xảy ra không đổi
- ✅ Hai sự kiện không xảy ra đồng thời
5.4 Ví dụ
Call center nhận trung bình 4 cuộc gọi/phút. P(nhận đúng 6 cuộc gọi trong 1 phút)?
λ = 4, k = 6
5.5 Code Python
1from scipy import stats2import numpy as np3import matplotlib.pyplot as plt45# Poisson với λ = 46lam = 47poisson = stats.poisson(lam)89# P(X = 6)10print(f"P(X=6) = {poisson.pmf(6):.4f}")1112# P(X <= 3)13print(f"P(X≤3) = {poisson.cdf(3):.4f}")1415# P(X >= 5)16print(f"P(X≥5) = {1 - poisson.cdf(4):.4f}")1718# E(X) và Var(X)19print(f"E(X) = {poisson.mean():.4f}") # 420print(f"Var(X) = {poisson.var():.4f}") # 42122# Visualization23k = np.arange(0, 15)24plt.figure(figsize=(10, 5))25plt.bar(k, poisson.pmf(k), color='coral', edgecolor='black')26plt.xlabel('Number of Events (k)')27plt.ylabel('P(X = k)')28plt.title(f'Poisson Distribution (λ={lam})')29plt.show()5.6 Poisson với khoảng thời gian khác
Nếu λ = 4 cuộc gọi/phút, trong 2 phút: λ = 8
1# 4 cuộc/phút, trong 2 phút2lam_2min = 4 * 2 # 83poisson_2min = stats.poisson(lam_2min)45# P(nhận 10 cuộc trong 2 phút)6print(f"P(X=10 trong 2 phút) = {poisson_2min.pmf(10):.4f}")6. So sánh Binomial và Poisson
6.1 Khi nào dùng?
| Binomial | Poisson |
|---|---|
| Số lần thử n cố định | Không giới hạn số sự kiện |
| Đếm số "thành công" | Đếm số sự kiện trong khoảng |
| Tung xu, kiểm tra lỗi | Số khách, số cuộc gọi |
6.2 Poisson là xấp xỉ của Binomial
Khi n lớn và p nhỏ (np ≈ constant):
1# So sánh Binomial và Poisson2n, p = 100, 0.03 # n lớn, p nhỏ3lam = n * p # 345binom = stats.binom(n, p)6poisson = stats.poisson(lam)78k = np.arange(0, 15)9plt.figure(figsize=(10, 5))10plt.bar(k - 0.2, binom.pmf(k), width=0.4, label='Binomial(100, 0.03)', alpha=0.7)11plt.bar(k + 0.2, poisson.pmf(k), width=0.4, label='Poisson(3)', alpha=0.7)12plt.xlabel('k')13plt.ylabel('P(X = k)')14plt.title('Binomial vs Poisson Approximation')15plt.legend()16plt.show()7. Geometric Distribution
7.1 Định nghĩa
X = số lần thử cho đến khi có lần thành công đầu tiên.
7.2 Tính chất
| Thống kê | Công thức |
|---|---|
| E(X) | 1/p |
| Var(X) | (1-p)/p² |
7.3 Code Python
1from scipy import stats23# P(thành công) = 0.24p = 0.25geom = stats.geom(p)67# P(thành công lần thử thứ 3)8print(f"P(X=3) = {geom.pmf(3):.4f}")910# P(cần ít nhất 5 lần)11print(f"P(X≥5) = {1 - geom.cdf(4):.4f}")1213# E(X)14print(f"E(X) = {geom.mean():.4f}") # 58. Bảng tóm tắt các phân phối
| Phân phối | PMF | E(X) | Var(X) | Ứng dụng |
|---|---|---|---|---|
| Bernoulli | p, 1-p | p | p(1-p) | 1 lần thử |
| Binomial | np | np(1-p) | n lần thử | |
| Poisson | λ | λ | Đếm sự kiện | |
| Geometric | 1/p | (1-p)/p² | Chờ thành công |
9. Bài tập thực hành
Bài tập 1: Binomial
Một công ty có tỷ lệ chuyển đổi 5%. Trong 100 khách truy cập:
- P(đúng 5 khách mua)?
- P(ít nhất 3 khách mua)?
- E(số khách mua)?
Bài tập 2: Poisson
Trung bình có 2 tai nạn/ngày trên một đoạn đường:
- P(không có tai nạn trong 1 ngày)?
- P(nhiều nhất 3 tai nạn)?
- P(ít nhất 1 tai nạn trong 2 ngày)?
Bài tập 3: So sánh
n = 1000, p = 0.001. So sánh kết quả từ Binomial và Poisson cho P(X = 2).
Tóm tắt
- Binomial: n lần thử độc lập, đếm số thành công
- Poisson: đếm sự kiện trong khoảng, Mean = Variance
- Poisson ≈ Binomial khi n lớn, p nhỏ
- E(X) và Var(X) là 2 thống kê quan trọng nhất
- Chọn phân phối phù hợp với bài toán
