Hướng dẫn fitting gamma distribution in python - phù hợp phân phối gamma trong python

Tôi đã không hài lòng với chức năng ss.gamma.rvs vì nó có thể tạo ra các số âm, điều mà sự phân phối gamma được cho là không có. Vì vậy, tôi đã trang bị mẫu thông qua giá trị dự kiến ​​= trung bình [dữ liệu] và phương sai = var [dữ liệu] [xem wikipedia để biết chi tiết] và viết một hàm có thể mang lại các mẫu ngẫu nhiên của phân phối gamma mà không cần SCIPY [mà tôi thấy khó cài đặt đúng cách, còn một chú ý đáng nói]:

import random
import numpy

data = [6176, 11046, 670, 6146, 7945, 6864, 767, 7623, 7212, 9040, 3213, 6302, 10044, 10195, 9386, 7230, 4602, 6282, 8619, 7903, 6318, 13294, 6990, 5515, 9157]

# Fit gamma distribution through mean and average
mean_of_distribution = numpy.mean[data]
variance_of_distribution = numpy.var[data]

def gamma_random_sample[mean, variance, size]:
    """Yields a list of random numbers following a gamma distribution defined by mean and variance"""
    g_alpha = mean*mean/variance
    g_beta = mean/variance
    for i in range[size]:
        yield random.gammavariate[g_alpha,1/g_beta]

# force integer values to get integer sample
grs = [int[i] for i in gamma_random_sample[mean_of_distribution,variance_of_distribution,len[data]]]

print["Original data: ", sorted[data]]
print["Random sample: ", sorted[grs]]

# Original data: [670, 767, 3213, 4602, 5515, 6146, 6176, 6282, 6302, 6318, 6864, 6990, 7212, 7230, 7623, 7903, 7945, 8619, 9040, 9157, 9386, 10044, 10195, 11046, 13294]
# Random sample:  [1646, 2237, 3178, 3227, 3649, 4049, 4171, 5071, 5118, 5139, 5456, 6139, 6468, 6726, 6944, 7050, 7135, 7588, 7597, 7971, 10269, 10563, 12283, 12339, 13066]

scipy.stats.gamma=[source]#gamma=[source]#

Một biến ngẫu nhiên liên tục gamma.

Là một ví dụ của lớp rv_continuous, đối tượng gamma kế thừa từ nó một tập hợp các phương thức chung [xem bên dưới để biết danh sách đầy đủ] và hoàn thành chúng với chi tiết cụ thể cho phân phối cụ thể này.

Ghi chú

Hàm mật độ xác suất cho gamma là:

\ [f [x, a] = \ frac {x^{a-1} e^{-x}} {\ gamma [a]}} \]

cho \ [x \ ge 0 \], \ [a> 0 \]. Ở đây \ [\ gamma [a] \] đề cập đến hàm gamma.\[x \ge 0\], \[a > 0\]. Here \[\Gamma[a]\] refers to the gamma function.

gamma lấy

>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
2 làm tham số hình dạng cho \ [a \].\[a\].

Khi \ [a \] là một số nguyên, gamma giảm xuống phân phối erlang và khi \ [a = 1 \] cho phân phối theo cấp số nhân.\[a\] is an integer, gamma reduces to the Erlang distribution, and when \[a=1\] to the exponential distribution.

Phân phối Gamma đôi khi được tham số hóa với hai biến, với hàm mật độ xác suất của:

A

Lưu ý rằng tham số hóa này tương đương với những điều trên, với

>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
4.

Mật độ xác suất ở trên được xác định ở dạng tiêu chuẩn hóa trên mạng. Để thay đổi và/hoặc tỷ lệ phân phối, sử dụng các tham số

>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
5 và
>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
6. Cụ thể,
>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
7 tương đương với
>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
8 với
>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]
9. Lưu ý rằng việc dịch chuyển vị trí của một phân phối không làm cho nó trở thành một phân phối không tập trung vào; Tổng quát hóa không tập trung của một số phân phối có sẵn trong các lớp riêng biệt.

Ví dụ

>>> from scipy.stats import gamma
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots[1, 1]

Tính bốn khoảnh khắc đầu tiên:

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']

Hiển thị hàm mật độ xác suất [

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
0]:

>>> x = np.linspace[gamma.ppf[0.01, a],
...                 gamma.ppf[0.99, a], 100]
>>> ax.plot[x, gamma.pdf[x, a],
...        'r-', lw=5, alpha=0.6, label='gamma pdf']

Ngoài ra, đối tượng phân phối có thể được gọi [như một hàm] để sửa các tham số hình dạng, vị trí và tỷ lệ. Điều này trả về một đối tượng RV Frozen Frozen, giữ các tham số đã cho được sửa.

Đóng băng phân phối và hiển thị

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
0 đóng băng:

>>> rv = gamma[a]
>>> ax.plot[x, rv.pdf[x], 'k-', lw=2, label='frozen pdf']

Kiểm tra độ chính xác của

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
2 và
>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
3:

>>> vals = gamma.ppf[[0.001, 0.5, 0.999], a]
>>> np.allclose[[0.001, 0.5, 0.999], gamma.cdf[vals, a]]
True

Tạo số ngẫu nhiên:

>>> r = gamma.rvs[a, size=1000]

Và so sánh biểu đồ:

>>> ax.hist[r, density=True, histtype='stepfilled', alpha=0.2]
>>> ax.legend[loc='best', frameon=False]
>>> plt.show[]

Phương pháp

RVS [a, loc = 0, tỷ lệ = 1, kích thước = 1, ngẫu nhiên_state = none]

Biến thể ngẫu nhiên.

PDF [x, a, loc = 0, tỷ lệ = 1]

Hàm mật độ xác suất.

logpdf [x, a, loc = 0, tỷ lệ = 1]

Nhật ký của hàm mật độ xác suất.

CDF [x, a, loc = 0, tỷ lệ = 1]

Chức năng phân phối tích lũy.

logcdf [x, a, loc = 0, tỷ lệ = 1]

Nhật ký của hàm phân phối tích lũy.

SF [x, a, loc = 0, tỷ lệ = 1]

Hàm sinh tồn [cũng được định nghĩa là

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
4, nhưng SF đôi khi chính xác hơn].

logsf [x, a, loc = 0, tỷ lệ = 1]

Nhật ký của chức năng sinh tồn.

ppf [q, a, loc = 0, tỷ lệ = 1]

Chức năng điểm phần trăm [nghịch đảo của

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
2 - phần trăm].

ISF [q, a, loc = 0, tỷ lệ = 1]

Chức năng sống sót nghịch đảo [nghịch đảo của

>>> a = 1.99
>>> mean, var, skew, kurt = gamma.stats[a, moments='mvsk']
6].

mốc [thứ tự, a, loc = 0, tỷ lệ = 1]

Khoảnh khắc không trung tâm của thứ tự được chỉ định.

số liệu thống kê [a, loc = 0, tỷ lệ = 1, khoảnh khắc = mv mv]]

Trung bình [’m,], phương sai [’ v,], độ lệch [‘s,] và/hoặc kurtosis [‘ k,].

entropy [a, loc = 0, tỷ lệ = 1]

[Khác biệt] Entropy của RV.

fit[data]

Ước tính tham số cho dữ liệu chung. Xem scipy.stats.rv_continout.fit để biết tài liệu chi tiết về các đối số từ khóa.

Mong đợi [func, args = [a,], loc = 0, scale = 1, lb = none, ub = none, có điều kiện = false, ** kwds]

Giá trị dự kiến ​​của một hàm [của một đối số] đối với phân phối.

trung bình [a, loc = 0, tỷ lệ = 1]

Trung bình phân phối.

trung bình [a, loc = 0, tỷ lệ = 1]

Trung bình của phân phối.

var [a, loc = 0, tỷ lệ = 1]

Phương sai của phân phối.

STD [a, loc = 0, tỷ lệ = 1]

Độ lệch chuẩn của phân phối.

khoảng thời gian [độ tin cậy, a, loc = 0, tỷ lệ = 1]

Khoảng tin cậy với các khu vực bằng nhau xung quanh trung bình.

Làm thế nào để bạn vẽ một phân phối gamma trong Python?

Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ ..
Tạo X bằng Numpy và Y bằng gamma. hàm pdf [] tại x của RV đã cho ..
Sơ đồ các điểm dữ liệu x và y bằng phương thức Plot [] ..
Sử dụng phương thức Legend [] để đặt các yếu tố huyền thoại cho cốt truyện ..
Để hiển thị hình, sử dụng phương thức show [] ..

Làm thế nào để bạn phù hợp với dữ liệu để phân phối gamma?

Để phù hợp với phân phối gamma theo dữ liệu và tìm các ước tính tham số, sử dụng gamfit, fitdist hoặc mle.Không giống như Gamfit và MLE, trong đó trả về ước tính tham số, FitDist trả về đối tượng phân phối xác suất được trang bị.Các thuộc tính đối tượng A và B lưu trữ các ước tính tham số.use gamfit , fitdist , or mle . Unlike gamfit and mle , which return parameter estimates, fitdist returns the fitted probability distribution object GammaDistribution . The object properties a and b store the parameter estimates.

Làm thế nào để bạn mã hóa gamma trong python?

Một sản phẩm như vậy của Python là hàm gamma [] sẵn có, tính toán giá trị gamma của số được truyền trong hàm ...
Cú pháp: Math.gamma [x].
Thông số :.
X: Số có giá trị gamma cần được tính toán ..

Gamma ở Scipy là gì?

Một biến ngẫu nhiên liên tục gamma.Là một ví dụ của lớp RV_Contination, đối tượng Gamma kế thừa từ nó một tập hợp các phương thức chung [xem bên dưới để biết danh sách đầy đủ] và hoàn thành chúng với chi tiết cụ thể cho phân phối cụ thể này.Xem thêm Erlang, expon.Ghi chú.. As an instance of the rv_continuous class, gamma object inherits from it a collection of generic methods [see below for the full list], and completes them with details specific for this particular distribution. See also erlang , expon. Notes.

Bài Viết Liên Quan

Chủ Đề