Phân phối Poisson trong Python

Phân phối Poisson là phân phối xác suất của các lần xuất hiện độc lập trong một khoảng. Phân phối Poisson được sử dụng cho các phân phối dựa trên số lượng khi các sự kiện này xảy ra với tỷ lệ trung bình đã biết và không phụ thuộc vào thời gian kể từ sự kiện cuối cùng. Ví dụ: Nếu số lượng ô tô trung bình băng qua một con phố cụ thể trong một ngày là 25, thì bạn có thể tìm xác suất để 28 ô tô chạy qua đường đó bằng cách sử dụng công thức poisson cho bởi

e là cơ số của logarit tự nhiên [2. 7183]
μ là số lần xuất hiện trung bình [25 trong trường hợp này]
x là số lần xuất hiện trong câu hỏi [28 trong trường hợp này]

Vào bất kỳ ngày nào chúng ta có thể thấy 0,1,2,3,…. 25. 30. số ô tô trên phố với trung bình khoảng 25 ô tô. Vì vậy, để tìm 28 chiếc xe, chúng ta sẽ phải tính toán

Với hàm Poisson, chúng ta xác định giá trị trung bình là 25 ô tô. Hàm python đưa ra xác suất nằm trong khoảng [0. 0632] 6%, tức là 28 ô tô sẽ đi qua phố

Công thức có vẻ phức tạp để giải bằng tay nhưng với các thư viện python thì đó là một miếng bánh

Trong bài viết này, chúng ta sẽ xem cách chúng ta có thể tạo biểu đồ hàm khối lượng xác suất Poisson trong Python. Trong lý thuyết xác suất và thống kê, phân phối Poisson là một phân phối xác suất rời rạc biểu thị xác suất của một số sự kiện nhất định xảy ra trong một khoảng thời gian hoặc không gian cố định nếu các sự kiện này xảy ra với tốc độ trung bình không đổi đã biết và không phụ thuộc vào thời gian kể từ khi . Phân phối Poisson cũng có thể được sử dụng cho số lượng sự kiện trong các khoảng thời gian được chỉ định khác, chẳng hạn như khoảng cách, diện tích hoặc thể tích.  

Để vẽ sơ đồ phân phối Poisson, chúng tôi sẽ sử dụng mô-đun scipy. SciPy là một thư viện Python mã nguồn mở và miễn phí được sử dụng cho tính toán khoa học và tính toán kỹ thuật. SciPy chứa các mô-đun để tối ưu hóa, đại số tuyến tính, tích hợp, nội suy, các chức năng đặc biệt, FFT, xử lý tín hiệu và hình ảnh, bộ giải ODE và các nhiệm vụ phổ biến khác trong khoa học và kỹ thuật

Số sự kiện dự kiến ​​xảy ra trong một khoảng thời gian cố định, phải >= 0. Một trình tự phải được phát trên kích thước được yêu cầu

size int hoặc bộ số nguyên, tùy chọn

hình dạng đầu ra. Nếu hình dạng đã cho là, e. g. , [m, n, k], sau đó mẫu m * n * k được rút ra. Nếu kích thước là None [mặc định], một giá trị duy nhất được trả về nếu lam là một số vô hướng. Nếu không, các mẫu np.array[lam].size được rút ra

Trả về . ra ndarray hoặc vô hướng

Các mẫu được rút ra từ phân phối Poisson được tham số hóa

Xem thêm

cái nào nên được sử dụng cho mã mới

ghi chú

Phân phối Poisson

\[f[k; \lambda]=\frac{\lambda^k e^{-\lambda}}{k. }\]

Đối với các sự kiện có khoảng cách dự kiến ​​ \[\lambda\] phân phối Poisson \[f . describes the probability of \[k\] events occurring within the observed interval \[\lambda\].

Bởi vì đầu ra bị giới hạn trong phạm vi của loại C int64, ValueError được nâng lên khi lam nằm trong 10 sigma của giá trị biểu thị tối đa

Người giới thiệu

[ 1 ]

Weisstein, Eric W. “Phân bố chất độc. ” Từ MathWorld–A Wolfram Web Resource. http. //thế giới toán học. chó sói. com/PoissonDistribution. html

Phân phối Poisson là phân phối cho biết số lần có thể xảy ra một sự kiện trong một khoảng thời gian xác định trước. Nó được sử dụng cho các sự kiện độc lập xảy ra với tốc độ không đổi trong một khoảng thời gian nhất định. Phân phối Poisson là một hàm rời rạc, có nghĩa là sự kiện chỉ có thể được đo khi xảy ra hoặc không xảy ra, nghĩa là biến chỉ có thể được đo bằng số nguyên

Chúng tôi sử dụng thư viện seaborn python có các hàm dựng sẵn để tạo các biểu đồ phân phối xác suất như vậy. Ngoài ra, gói scipy giúp tạo phân phối nhị thức

from scipy.stats import poisson
import seaborn as sb

data_binom = poisson.rvs[mu=4, size=10000]
ax = sb.distplot[data_binom,
                  kde=True,
                  color='green',
                  hist_kws={"linewidth": 25,'alpha':1}]
ax.set[xlabel='Poisson', ylabel='Frequency']

Đầu ra của nó như sau -

Để tiếp tục làm theo hướng dẫn này, chúng ta sẽ cần các thư viện Python sau. scipy, numpy và matplotlib

Nếu bạn chưa cài đặt, vui lòng mở “Command Prompt” [trên Windows] và cài đặt nó bằng mã sau


pip install scipy
pip install numpy
pip install matplotlib

một quá trình Poisson là gì

Quá trình điểm Poisson [hay đơn giản là quá trình Poisson] là một tập hợp các điểm được đặt ngẫu nhiên trong không gian toán học

Do một số tính chất của nó, quá trình Poisson thường được xác định trên một đường thực, nơi nó có thể được coi là một quá trình ngẫu nhiên [ngẫu nhiên] trong một chiều. Điều này tiếp tục cho phép xây dựng các hệ thống toán học và nghiên cứu các sự kiện nhất định xuất hiện một cách ngẫu nhiên

Một trong những tính chất quan trọng của nó là mỗi điểm của quy trình độc lập ngẫu nhiên với các điểm khác trong quy trình.

Như một ví dụ, chúng ta có thể nghĩ về một ví dụ trong đó quá trình như vậy có thể được quan sát trong cuộc sống thực. Giả sử bạn đang nghiên cứu tần suất lịch sử của các cơn bão. Đây thực sự là một quá trình ngẫu nhiên, vì số cơn bão năm nay không phụ thuộc vào số cơn bão năm ngoái, v.v. Tuy nhiên, theo thời gian, bạn có thể quan sát một số xu hướng, tần suất trung bình, v.v.

Nói một cách toán học, trong trường hợp này, quá trình tính điểm phụ thuộc vào một thứ có thể là hằng số, chẳng hạn như tỷ lệ trung bình [ví dụ: số lượng khách hàng gọi trung bình]

Một quá trình Poisson được xác định bởi một phân phối Poisson

Phân phối Poisson là gì?

Phân phối Poisson là phân phối xác suất rời rạc của một số sự kiện xảy ra trong một khoảng thời gian cố định với hai điều kiện

  1. Các sự kiện xảy ra với một tỷ lệ trung bình không đổi
  2. Các sự kiện độc lập với nhau và không phụ thuộc vào thời gian

Để đặt điều này trong một số bối cảnh, hãy xem xét ví dụ của chúng tôi về tần suất bão từ phần trước

Giả sử rằng khi chúng ta có dữ liệu quan sát các cơn bão trong khoảng thời gian 20 năm. Chúng tôi thấy rằng số cơn bão trung bình mỗi năm là 7. Mỗi năm độc lập với các năm trước, có nghĩa là nếu chúng ta quan sát được 8 cơn bão trong năm nay, điều đó không có nghĩa là chúng ta sẽ quan sát được 8 cơn bão vào năm tới

PMF [hàm khối lượng xác suất] của phân phối Poisson được cho bởi

$$p[k, \lambda] = \frac{\lambda^{k}e^{-\lambda}}{k. }$$

ở đâu

  • \[\lambda\] là một số thực dương được cho bởi \[\lambda = E[X] = \mu\]
  • \[k\] là số lần xuất hiện
  • \[e = 2. 71828\]

\[Pr[X=k]\] có thể được đọc là. Xác suất Poisson của k sự kiện trong một khoảng thời gian

Và CDF [hàm phân phối tích lũy] của phân phối Poisson được cho bởi

$$F[k, \lambda] = \sum^{k}_{i=0} \frac{\lambda^{i}e^{-\lambda}}{i. }$$

Ví dụ phân phối Poisson

Bây giờ chúng ta đã biết một số công thức để làm việc, hãy xem chi tiết một ví dụ

Nhớ lại dữ liệu về bão chúng tôi đã đề cập trong các phần trước. Chúng tôi biết rằng tần suất lịch sử của các cơn bão là 7 cơn bão mỗi năm [là tỷ lệ \[\mu\] và điều này tạo thành giá trị \[\lambda\] của chúng tôi [vì \[\lambda=\mu\]]

$$\lambda = 7$$

Câu hỏi đặt ra là xác suất quan sát chính xác 5 cơn bão trong năm nay là bao nhiêu?

$$k = 5$$

Sử dụng công thức từ phần trước, chúng ta có thể tính xác suất Poisson

$$p[5, 7] = \frac{[7^{5}][e^{-7}]}{5. } = 0. 12772 \xấp xỉ 12. 77\%$$

Do đó, xác suất quan sát đúng 5 cơn bão trong năm tới bằng 12. 77%

Đương nhiên, chúng tôi tò mò về xác suất của các tần số khác

Poisson PMF [hàm khối xác suất]

Xem xét bảng dưới đây cho thấy xác suất Poisson của tần suất bão [0-15]

\[k\]\[p[k, \lambda]\]%00. 000910. 09%10. 006380. 64%20. 022342. 23%30. 052135. 21%40. 091239. 12%50. 1277212. 77%60. 1490014. 9%70. 1490014. 9%80. 1303813. 04%90. 1014010. 14%100. 070987. 01%110. 045174. 52%120. 026352. 64%130. 014191. 42%140. 007090. 71%150. 003310. 33%160. 001450. 15%

Sử dụng bảng trên, chúng ta có thể tạo trực quan hóa hàm khối xác suất Poisson sau đây cho ví dụ này

Poisson PMF

Poisson CDF [hàm phân phối tích lũy]

Xem xét bảng dưới đây cho thấy xác suất tích lũy Poisson của tần suất bão [0-15]

\[k\]\[F[k, \lambda]\]%00. 000910. 09%10. 007300. 73%20. 029642. 96%30. 081778. 18%40. 1729917. 3%50. 3007130. 07%60. 4497144. 97%70. 5987159. 87%80. 7290972. 91%90. 8305083. 05%100. 9014890. 15%110. 9466594. 67%120. 9730097. 3%130. 9871998. 72%140. 9942899. 43%150. 9975999. 76%160. 9990499. 9%

Sử dụng bảng trên, chúng ta có thể tạo hình ảnh trực quan sau đây của hàm phân phối tích lũy Poisson cho ví dụ này

Poisson CDF

Bảng cũng cho phép chúng tôi trả lời một số câu hỏi thú vị

Ví dụ, điều gì sẽ xảy ra nếu chúng ta muốn tìm xác suất nhìn thấy tới 5 cơn bão [về mặt toán học. \[k\leq5\]], chúng ta có thể thấy rằng đó là \[0. 30071\] hoặc \[30. 07\%\]

Mặt khác, chúng ta có thể quan tâm đến xác suất quan sát hơn 5 cơn bão [về mặt toán học. \[k>5\]], sẽ là \[1-p[5,7] = 1-0. 30071 = 0. 69929\] hoặc \[69. 93\%\]

Ví dụ phân phối Poisson trong Python

Trong phần trước chúng ta đã tính toán hàm khối lượng xác suất và hàm phân phối tích lũy bằng tay. Trong phần này, chúng tôi sẽ tái tạo các kết quả tương tự bằng Python

Chúng tôi sẽ bắt đầu với việc nhập các phụ thuộc cần thiết


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson

Tiếp theo, chúng ta sẽ cần một mảng các giá trị \[k\] mà chúng ta sẽ tính Poisson PMF. Trong phần trước, chúng ta đã tính nó cho 16 giá trị của \[k\] từ 0 đến 16, vì vậy hãy tạo một mảng với các giá trị này


k = np.arange[0, 17]

print[k]

bạn nên lấy

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]

Trong các phần sau, chúng tôi sẽ tập trung vào tính toán PMF và CDF bằng Python

Poisson PMF [hàm khối xác suất] trong Python

Để tính toán Poisson PMF bằng Python, chúng tôi sẽ sử dụng. phương thức pmf[] của scipy. máy phát điện độc. Nó sẽ cần hai tham số

  1. Giá trị \[k\] [mảng k mà chúng ta đã tạo]
  2. Giá trị \[\mu\] [mà chúng tôi sẽ đặt thành 7 như trong ví dụ của chúng tôi]

Và bây giờ chúng ta có thể tạo một mảng với các giá trị xác suất Poisson


pmf = poisson.pmf[k, mu=7]
pmf = np.round[pmf, 5]

print[pmf]

Và bạn sẽ nhận được

[0.00091 0.00638 0.02234 0.05213 0.09123 0.12772 0.149   0.149   0.13038 0.1014  0.07098 0.04517 0.02635 0.01419 0.00709 0.00331 0.00145]

Ghi chú

Nếu bạn muốn in nó theo cách đẹp hơn với mỗi giá trị \[k\] và xác suất tương ứng.


for val, prob in zip[k,pmf]:
    print[f"k-value {val} has probability = {prob}"]

Và bạn sẽ nhận được

________số 8_______

giống hệt như chúng ta đã thấy trong ví dụ nơi chúng ta tính toán xác suất bằng tay

Vẽ Poisson PMF bằng Python

Chúng ta sẽ cần mảng giá trị k mà chúng ta đã tạo trước đó cũng như mảng giá trị pmf trong bước này

Sử dụng thư viện matplotlib, chúng ta có thể dễ dàng vẽ sơ đồ Poisson PMF bằng Python


plt.plot[k, pmf, marker='o']
plt.xlabel['k']
plt.ylabel['Probability']

plt.show[]

Và bạn sẽ nhận được

Poisson PMF sử dụng Python

Poisson CDF [hàm phân phối tích lũy] trong Python

Để tính toán Poisson CDF bằng Python, chúng tôi sẽ sử dụng. phương thức cdf[] của scipy. máy phát điện độc. Nó sẽ cần hai tham số

  1. Giá trị \[k\] [mảng k mà chúng ta đã tạo]
  2. Giá trị \[\mu\] [mà chúng tôi sẽ đặt thành 7 như trong ví dụ của chúng tôi]

Và bây giờ chúng ta có thể tạo một mảng với các giá trị xác suất tích lũy Poisson


cdf = poisson.cdf[k, mu=7]
cdf = np.round[cdf, 3]

print[cdf]

Và bạn sẽ nhận được


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
0

Ghi chú

Nếu bạn muốn in nó theo cách đẹp hơn với mỗi giá trị \[k\] và xác suất tích lũy tương ứng.


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
1

Và bạn sẽ nhận được


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
2

giống hệt như chúng ta đã thấy trong ví dụ nơi chúng ta tính toán xác suất tích lũy bằng tay

Vẽ Poisson CDF bằng Python

Chúng ta sẽ cần mảng giá trị k mà chúng ta đã tạo trước đó cũng như mảng giá trị pmf trong bước này

Sử dụng thư viện matplotlib, chúng ta có thể dễ dàng vẽ sơ đồ Poisson PMF bằng Python


import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
3

Và bạn sẽ nhận được

Poisson CDF sử dụng Python

Phần kết luận

Trong bài viết này, chúng ta đã khám phá phân phối Poisson và quy trình Poisson, cũng như cách tạo và vẽ sơ đồ phân phối Poisson trong Python

Vui lòng để lại nhận xét bên dưới nếu bạn có bất kỳ câu hỏi nào hoặc có đề xuất cho một số chỉnh sửa và xem thêm các bài viết Thống kê của tôi

Phân phối Poisson có nghĩa là gì trong Python?

Phân phối Poisson là phân phối cho biết số lần có khả năng một sự kiện sẽ xảy ra trong một khoảng thời gian xác định trước . Nó được sử dụng cho các sự kiện độc lập xảy ra với tốc độ không đổi trong một khoảng thời gian nhất định.

Làm cách nào để tạo số ngẫu nhiên với phân phối Poisson trong Python?

Với sự trợ giúp của numpy. ngẫu nhiên. phương pháp poisson[] , chúng ta có thể lấy các mẫu ngẫu nhiên từ phân phối poisson và trả về các mẫu ngẫu nhiên bằng phương pháp này. Trở lại. Trả lại các mẫu ngẫu nhiên dưới dạng mảng numpy.

Phân phối Poisson trong ví dụ về trung tâm cuộc gọi là gì?

Ví dụ: phân phối Poisson thích hợp cho mô hình hóa số lượng cuộc gọi điện thoại mà một văn phòng sẽ nhận được trong giờ trưa, nếu họ biết rằng họ nhận được trung bình 4 cuộc gọi mỗi giờ trong thời gian đó . Mặc dù trung bình là 4 cuộc gọi, nhưng về mặt lý thuyết, họ có thể nhận được bất kỳ số lượng cuộc gọi nào trong khoảng thời gian đó. . Although the average is 4 calls, they could theoretically get any number of calls during that time period.

Hàm phân phối xác suất trong Python là gì?

Phân phối xác suất Python là gì? . Nó mô tả các sự kiện theo xác suất của chúng; . a function under probability theory and statistics- one that gives us how probable different outcomes are in an experiment. It describes events in terms of their probabilities; this is out of all possible outcomes.

Chủ Đề