1. Phân phối nhị thức trong Numpy

Phân phối nhị thức là một phân phối rời rạc các kết quả theo được biểu diễn theo các số nhị phân 0 hoặc 1. Nếu kết quả là 1 thì tương ứng với , ngược lại nếu kết quả là 0 thì tương ứng với không. Phân phối nhị thức cũng cho chúng ta biết xác suất thành công trong n thử nghiệm độc lập.

Phân phối rời rạc: Là phân phối được xác định tại các tập hợp sự kiện riêng biệt, ví dụ: kết quả của một lần tung đồng xu là rời rạc vì nó có thể chỉ là “mặt sấp” hoặc “mặt ngửa”.

Trong Numpy, để tạo ra mảng dựa theo phân phối nhị thức ta sẽ cần sử dụng hàm random.binomial() – hàm này yêu cầu 3 tham số:

  • Tham số n – là số lần thử nghiệm.
  • Tham số p – là xác suất xuất hiện của mỗi lần thử
  • Tham số size – là kích thước mảng cần trả về

Ví dụ dưới đây, sử dụng hàm random.binomial() để tạo ra một mảng 1 chiều có kích thước 1 x 10, các giá trị theo phân phối nhị thức với số lần thử nghiệm bằng 10 (nghĩa là n = 10) và xác xuất xuất hiện tương ứng của mỗi lần thử nghiệm là 0.5 (nghĩa là p = 0.5) như sau:

from numpy import random

x = random.binomial(n=10, p=0.5, size=10)

print(x)

Kết quả:

[4 7 4 6 4 4 2 2 5 4]

2. Trực quan hóa phân phối nhị thức

Chúng ta có thể trực quan hóa các phân phối nhị thức thông qua hàm sns.distplot() trong mô-đun Seaborn.

Ví dụ dưới đây, trực quan hóa phân phối nhị thức có số lần thử nghiệm là 10 và xác suất xuất hiện tương ứng của mỗi lần thử nghiệm là 0.5 bằng hàm sns.distplot() như sau:
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=False)

plt.show()

3. Sự khác biệt giữa phân phối chuẩn và nhị thức

Sự khác biệt rõ rệt nhất giữa phân phối chuẩn và phân phối nhị thức đó là: Phân phối chuẩn là liên tục trong khi phân phối nhị thức lại là phân phối rời rạc.

  • Liên tục nghĩa là các giá trị trải dài trên một khoảng nào đó
  • Rời rạc nghĩa là các giá trị chỉ có thể thuộc trong một tập xác định

Nhưng nếu phân phối nhị thức có nhiều giá trị hơn trong tập xác định của nó, khi đó phân phối nhị thức sẽ dần trở thành phân phối chuẩn.

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(loc=50, scale=5, size=1000), hist=False, label='normal')
sns.distplot(random.binomial(n=100, p=0.5, size=1000), hist=False, label='binomial')

plt.show()