Hướng dẫn how do you plot a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của 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.

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 a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của một 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

Nhập Numpy như NP Nhập matplotlib. Pyplot khi nhập khẩu PLT Seaborn như SNS #Fixing hạt giống để tái sản xuất #of kết quả NP. ....

Nhập Numpy khi nhập NP Matplotlib ..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 a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của một 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 a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của một 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 a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của một 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 a cdf of an exponential distribution in python? - làm thế nào để bạn vẽ một cdf của một phân phối theo cấp số nhân trong python?

Làm thế nào để bạn vẽ một CDF trong Python?

Matplotlib với Python..
Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ ..
Khởi tạo một biến N cho số lượng dữ liệu mẫu ..
Tạo dữ liệu ngẫu nhiên bằng cách sử dụng Numpy ..
Tính biểu đồ của một tập hợp dữ liệu với dữ liệu và thùng = 10 ..
Tìm hàm phân phối xác suất (PDF) ..

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

Âm mưu phân phối theo cấp số nhân..
Nhập matplotlib.Pyplot khi nhập khẩu PLT Numpy khi NP #Fixing hạt giống để tái sản xuất #of kết quả NP.....
Nhập Numpy như NP Nhập matplotlib.Pyplot khi nhập khẩu PLT Seaborn như SNS #Fixing hạt giống để tái sản xuất #of kết quả NP.....
Nhập Numpy khi nhập NP Matplotlib ..

CDF của theo cấp số nhân là gì?

Thông tin chi tiết.Hàm CDF cho phân phối theo cấp số nhân trả về xác suất quan sát từ phân phối theo cấp số nhân, với tham số tỷ lệ, nhỏ hơn hoặc bằng x.returns the probability that an observation from an exponential distribution, with the scale parameter λ, is less than or equal to x.