Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?


Phân phối theo cấp số nhân là một phân phối xác suất được sử dụng để mô hình hóa thời gian chúng ta phải đợi cho đến khi một sự kiện nhất định xảy ra.

Nếu một biến ngẫu nhiên x tuân theo phân phối theo cấp số nhân, thì chức năng phân phối tích lũy của & nbsp; có thể được viết là:he cumulative distribution function of X can be written as:

F (x; λ) = 1-e-λx

where:

  • λ: tham số tốc độ (được tính là = 1/μ) the rate parameter (calculated as λ = 1/μ)
  • E: Một hằng số gần bằng 2,718 A constant roughly equal to 2.718

Hướng dẫn này giải thích cách sử dụng phân phối theo cấp số nhân trong Python.

Cách tạo phân phối theo cấp số nhân

Bạn có thể sử dụng hàm expon.rvs (tỷ lệ, kích thước) từ thư viện SCIPY trong Python để tạo các giá trị ngẫu nhiên từ phân phối theo cấp số nhân với tham số tốc độ cụ thể và kích thước mẫu:expon.rvs(scale, size) function from the SciPy library in Python to generate random values from an exponential distribution with a specific rate parameter and sample size:

from scipy.stats import expon

#generate random values from exponential distribution with rate=40 and sample size=10
expon.rvs(scale=40, size=10)

array([116.5368323 ,  67.23514699,  12.00399043,  40.74580584,
        34.60922432,   2.68266663,  22.70459831,  97.66661811,
         6.64272914,  46.15547298])

Lưu ý: Bạn có thể tìm thấy tài liệu đầy đủ cho thư viện SCIPY tại đây.: You can find the complete documentation for the SciPy library here.

Cách tính xác suất bằng cách sử dụng phân phối theo cấp số nhân

Giả sử số phút trung bình giữa các vụ phun trào đối với một mạch nước phun nhất định là 40 phút. Xác suất mà chúng ta sẽ phải đợi dưới 50 phút cho một vụ phun trào là gì?

Để giải quyết điều này, trước tiên chúng ta cần tính toán tham số tỷ lệ:

  • = 1/μ
  • = 1/40
  • = .025

Chúng ta có thể cắm λ = .025 và x = 50 vào công thức cho CDF:

  • P (x ≤ x) = 1-e-λx
  • P (x ≤ 50) = 1-E-.025 (50)
  • P (x ≤ 50) = 0,7135

Xác suất mà chúng tôi sẽ phải chờ ít hơn 50 phút cho vụ phun trào tiếp theo là & nbsp; 0,7135.0.7135.

Chúng ta có thể sử dụng hàm expon.cdf () từ SCIPY để giải quyết vấn đề này trong Python:expon.cdf() function from SciPy to solve this problem in Python:

from scipy.stats import expon

#calculate probability that x is less than 50 when mean rate is 40
expon.cdf(x=50, scale=40)

0.7134952031398099

Xác suất mà chúng tôi sẽ phải chờ ít hơn 50 phút cho vụ phun trào tiếp theo là & nbsp; 0,7135.0.7135.

Chúng ta có thể sử dụng hàm expon.cdf () từ SCIPY để giải quyết vấn đề này trong Python:

Điều này phù hợp với giá trị mà chúng tôi tính bằng tay.

Cách vẽ sơ đồ phân phối theo cấp số nhân

from scipy.stats import expon
import matplotlib.pyplot as plt

#generate exponential distribution with sample size 10000
x = expon.rvs(scale=40, size=10000)

#create plot of exponential distribution
plt.hist(x, density=True, edgecolor='black')

Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?

Bạn có thể sử dụng cú pháp sau để vẽ phân phối theo cấp số nhân với tham số tỷ lệ đã cho:

Tài nguyên bổ sung

Các hướng dẫn sau đây giải thích cách sử dụng các phân phối phổ biến khác trong Python:
How to Use the t Distribution in Python
How to Use the Uniform Distribution in Python

Phân phối theo cấp số nhân là phân phối xác suất của thời gian giữa các sự kiện trong quá trình điểm Poisson, tức là, một quá trình trong đó các sự kiện xảy ra liên tục và độc lập với tốc độ trung bình không đổi. Đó là một trường hợp cụ thể của phân phối gamma. Ví dụ: khách hàng đến cửa hàng, yêu cầu tệp trên máy chủ, v.v.

Hàm mật độ xác suất (PDF) của phân phối theo cấp số nhân được định nghĩa là:probability density function (pdf) of exponential distribution is defined as:

Trong đó, là tham số tỷ lệ là nghịch đảo của tham số tốc độ = 1/.

Một phân phối theo cấp số nhân có giá trị trung bình β và phương sai 2.

Hàm phân phối tích lũy (CDF) được đánh giá tại X, là xác suất mà biến ngẫu nhiên (x) sẽ có giá trị nhỏ hơn hoặc bằng x. CDF của phân phối theo cấp số nhân được định nghĩa là:cumulative distribution function (cdf) evaluated at x, is the probability that the random variable (X) will take a value less than or equal to x. The cdf of exponential distribution is defined as:

Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?

Hàm ngẫu nhiên numpy.Exential () trả về các mẫu ngẫu nhiên từ phân phối theo cấp số nhân.random.exponential() function returns random samples from a exponential distribution.

Cú pháp

numpy.random.exponential(scale=1.0, size=None)


Thông số

scale
from scipy.stats import expon

#calculate probability that x is less than 50 when mean rate is 40
expon.cdf(x=50, scale=40)

0.7134952031398099
0Specify tham số tỷ lệ, = 1/. float hoặc mảng_Lik của phao. Phải không âm. Mặc định là 1.0.
from scipy.stats import expon

#calculate probability that x is less than 50 when mean rate is 40
expon.cdf(x=50, scale=40)

0.7134952031398099
1
from scipy.stats import expon

#calculate probability that x is less than 50 when mean rate is 40
expon.cdf(x=50, scale=40)

0.7134952031398099
0Specify hình dạng đầu ra. int hoặc tuple của ints. Nếu hình dạng đã cho là (m, n, k), thì các mẫu m * n * k được vẽ. Nếu kích thước không có (mặc định), một giá trị duy nhất được trả về nếu tỷ lệ là vô hướng. Mặt khác, np.array (tỷ lệ). Các mẫu kích thước được rút ra.


Giá trị trả về

Trả về các mẫu từ phân phối theo cấp số nhân được tham số hóa. ndarray hoặc vô hướng.

Ví dụ: Các giá trị từ phân phối theo cấp số nhân

Trong ví dụ dưới đây, hàm ngẫu nhiên

import numpy as np

size = (5,3)

sample = np.random.exponential(1, size)
print(sample)

Đầu ra có thể của mã trên có thể là:

[[0.71318134 0.51261985 2.21255627]
 [0.38593481 0.54545811 0.39075276]
 [0.56583485 1.59475025 0.13879821]
 [0.82487244 0.20735562 1.33014896]
 [0.21085364 1.06640552 1.33323175]]

Ví dụ: Biểu đồ mật độ

Matplotlib là một thư viện sơ đồ cho python có thể được sử dụng để vẽ đồ thị hàm mật độ xác suất (PDF) của phân phối theo cấp số nhân sử dụng hàm hist ().

import matplotlib.pyplot as plt
import numpy as np

#fixing the seed for reproducibility
#of the result
np.random.seed(10)

size = 10000
#drawing 10000 sample from 
#exponential distribution
sample = np.random.exponential(1, size)
bin = np.arange(0,10,0.1)

plt.hist(sample, bins=bin, edgecolor='blue') 
plt.title("Exponential Distribution") 
plt.show()

Đầu ra của mã trên sẽ là:

Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?


Ví dụ: So sánh PDFS

Nhiều hàm mật độ xác suất có thể được so sánh bằng đồ họa sử dụng hàm kdeplot () seeborn. Trong ví dụ dưới đây, PDF của ba phân phối theo cấp số nhân (với yếu tố tỷ lệ 1, 2 và 3 tương ứng) được so sánh.kdeplot() function. In the example below, pdf of three exponential distributions (with scale factor 1, 2 and 3 respectively) are compared.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#fixing the seed for reproducibility
#of the result
np.random.seed(10)

size = 1000
#plotting 1000 sample from 
#different exponential distribution
sns.kdeplot(np.random.exponential(1, size))
sns.kdeplot(np.random.exponential(2, size))
sns.kdeplot(np.random.exponential(3, size))

plt.legend([r"$\beta = 1$", 
            r"$\beta = 2$", 
            r"$\beta = 3$"])
plt.show()

Đầu ra của mã trên sẽ là:

Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?


Ví dụ: So sánh PDFS

Nhiều hàm mật độ xác suất có thể được so sánh bằng đồ họa sử dụng hàm kdeplot () seeborn. Trong ví dụ dưới đây, PDF của ba phân phối theo cấp số nhân (với yếu tố tỷ lệ 1, 2 và 3 tương ứng) được so sánh.ecdfplot() function. In the example below, cdf of three exponential distributions (with scale factor 1, 2 and 3 respectively) are compared.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#fixing the seed for reproducibility
#of the result
np.random.seed(10)

size = 1000
#plotting 1000 sample from 
#different exponential distribution
sns.ecdfplot(np.random.exponential(1, size))
sns.ecdfplot(np.random.exponential(2, size))
sns.ecdfplot(np.random.exponential(3, size))

plt.legend([r"$\beta = 1$", 
            r"$\beta = 2$", 
            r"$\beta = 3$"])
plt.show()

Đầu ra của mã trên sẽ là:

Hướng dẫn how do you plot an exponential distribution in python? - làm thế nào để bạn vẽ biểu đồ phân phối theo cấp số nhân trong python?

Làm thế nào để bạn tạo một phân phối theo cấp số nhân trong Python?

Phân phối theo cấp số nhân là một phân phối xác suất được sử dụng để mô hình hóa thời gian chúng ta phải đợi cho đến khi một sự kiện nhất định xảy ra. Trong đó: λ: tham số tốc độ (được tính là = 1/μ)..
P (x ≤ x) = 1 - e. -λx.
P (x ≤ 50) = 1 - e. -.025 (50).
P (x ≤ 50) = 0,7135 ..

Làm thế nào để bạn tạo một phân phối theo cấp số nhân?

Các bước liên quan như sau ...
Tính toán CDF của biến ngẫu nhiên mong muốn.Đối với phân phối theo cấp số nhân, CDF là ..
Đặt r = f (x) trên phạm vi của.....
Giải phương trình f (x) = r cho.....
Tạo (khi cần) số ngẫu nhiên đồng nhất và tính toán các biến thể ngẫu nhiên mong muốn bằng cách ..

Làm thế nào để bạn vẽ phân phối xác suất trong Python?

Trước tiên, bạn tạo một AX AX AX.Ở đây, bạn có thể chỉ định số lượng thùng trong biểu đồ, chỉ định màu của biểu đồ và chỉ định tùy chọn sơ đồ mật độ với tùy chọn KDE và lineDwidth với hist_kws.Bạn cũng có thể đặt nhãn cho trục X và Y bằng các đối số XLabel và YLabel.create a plot object ax . Here, you can specify the number of bins in the histogram, specify the color of the histogram and specify density plot option with kde and linewidth option with hist_kws . You can also set labels for x and y axis using the xlabel and ylabel arguments.

Làm thế nào để bạn cho thấy rằng một phân phối là theo cấp số nhân?

Nó có thể được hiển thị cho phân phối theo cấp số nhân rằng giá trị trung bình bằng độ lệch chuẩn;tức là, = = 1/λ Ngoài ra, phân phối theo cấp số nhân là phân phối liên tục duy nhất là "không nhớ", theo nghĩa là p (x> a+b | x> a) = p (x> b).μ = σ = 1/λ Moreover, the exponential distribution is the only continuous distribution that is "memoryless", in the sense that P(X > a+b | X > a) = P(X > b).