Traffine I/O

Bahasa Indonesia

Apa itu distribusi gamma

Distribusi gamma adalah distribusi probabilitas yang diikuti oleh X untuk suatu peristiwa yang terjadi rata-rata sekali per \beta selama periode waktu tertentu hingga terjadi \alpha kali. Contoh-contoh berikut dikatakan mengikuti distribusi gamma

  • Berat badan seseorang
  • Masa inkubasi virus
  • Latensi terhadap waktu henti sistem
  • Masa hidup komponen elektronik

Fungsi densitas probabilitas dari distribusi gamma dinyatakan oleh persamaan berikut ini:

P(X)={\begin{cases}{\frac{1}{\beta^\alpha \Gamma(\alpha)}x^{\alpha-1}e^{-\frac{x}{\beta}}}&x\geq 0,\\0&x<0.\end{cases}}
\Gamma(\alpha) = \int_{0}^{\infty}x^{\alpha-1}e^{-x}dx \quad \alpha > 0

Distribusi gamma memiliki \alpha dan \beta sebagai parameter seperti yang ditunjukkan pada gambar di bawah ini.

Gamma distribution

Hubungan dengan distribusi eksponensial

Distribusi eksponensial bertepatan dengan distribusi gamma ketika \alpha=1. Dengan kata lain, distribusi gamma adalah distribusi probabilitas yang diperluas dari distribusi eksponensial.

Dengan mensubstitusikan \alpha=1 untuk distribusi gamma, fungsi densitas probabilitas menjadi

P(X)=\frac{1}{\beta^\alpha \Gamma(\alpha)}x^{\alpha-1}e^{-\frac{x}{\beta}} = \frac{1}{\beta0!}e^{-\frac{x}{\beta}}=\frac{1}{\beta}e^{-\frac{x}{\beta}}

Persamaan di atas konsisten dengan fungsi kepadatan probabilitas dari distribusi eksponensial yang nilai harapannya adalah \beta. Suatu peristiwa yang terjadi rata-rata \frac{1}{\beta} kali per satuan waktu dapat dianggap sebagai distribusi eksponensial yang distribusinya adalah yang diikuti oleh waktu x sampai peristiwa berikutnya terjadi.

Nilai yang diharapkan dan varians dari distribusi gamma

Nilai yang diharapkan dan varians dari distribusi gamma masing-masing adalah:

E(X)=\frac{\alpha}{\beta}
V(X)=\frac{\alpha}{\beta^2}

Pengaruh parameter pada distribusi gamma

Visualisasikan efek dari parameter \alpha dan \beta pada distribusi gamma.

Gamma distribution params

Kita dapat melihat bahwa semakin besar \alpha, semakin banyak puncak densitas probabilitas bergerak ke kanan. Juga, semakin besar \beta, semakin kecil lebar distribusi (varians).

Sifat reproduksi dari distribusi gamma

Misalkan variabel acak X dan Y masing-masing mengikuti distribusi gamma dan independen satu sama lain sebagai berikut.

X \sim Ga(\alpha_1, \beta),\quad Y \sim Ga(\alpha_1, \beta)

Kemudian, dari properti reproduksi distribusi gamma, X + Y mengikuti distribusi gamma berikut:

X + Y \sim Ga(\alpha_1 + \alpha_2, \beta)

Kode Python

Kode Python yang digunakan dalam proyek ini adalah sebagai berikut.

Menggambar distribusi gamma

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

plt.style.use('ggplot')
fig, ax = plt.subplots(facecolor="w", figsize=(10, 5))

# x axis
x = np.linspace(0, 8, 100)

# draw graph
plt.plot(x, gamma.pdf(x, 1, 0, scale=1/1), label='alpha=1, beta=1')
plt.plot(x, gamma.pdf(x, 1, 0, scale=1/2), label='alpha=1, beta=2')
plt.plot(x, gamma.pdf(x, 2, 0, scale=1/2), label='alpha=2, beta=2')
plt.plot(x, gamma.pdf(x, 3, 0, scale=1/2), label='alpha=3, beta=2')
plt.plot(x, gamma.pdf(x, 5, 0, scale=1/2), label='alpha=5, beta=2')
plt.plot(x, gamma.pdf(x, 10, 0, scale=1/1), label='alpha=5, beta=1')
plt.legend()
plt.xlabel("x")
plt.ylabel("Probability density")
plt.show()

Gamma distribution

Mengambar efek parameter pada distribusi gamma

import numpy as np
from scipy.stats import gamma
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import animation, rc
from matplotlib.animation import FuncAnimation

rc('animation', html='html5')
np.random.seed(5)

# Set up formatting for the movie files
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

prob_vals = np.arange(start=0.1, stop=10.01, step=0.2)

plt.style.use('ggplot')
fig, ax = plt.subplots(facecolor="w", figsize=(15, 5))

# x axis
x = np.linspace(0, 10, 100)

def update(i):
    p = prob_vals[i]

    # alpha graph
    plt.subplot(1, 2, 1)
    plt.cla()
    plt.plot(x, gamma.pdf(x, round(p, 1), 0, scale=1/2))
    # plt.plot(x, gamma.pdf(x, 2, 0, scale=1/round(p, 1)))
    plt.title(f'$alpha={str(round(p, 1))}, beta=2$', loc='left')
    plt.xlabel("x")
    plt.ylabel("Probability density")
    plt.ylim(0, 4.1)
    plt.xticks(ticks=[0, 10]) # x axis ticks

    # beta graph
    plt.subplot(1, 2, 2)
    plt.cla()
    plt.plot(x, gamma.pdf(x, 2, 0, scale=1/round(p, 1)))
    plt.title(f'$alpha=2, beta={str(round(p, 1))}$', loc='left')
    plt.xlabel("x")
    plt.ylabel("Probability density")
    plt.ylim(0, 4.1)
    plt.xticks(ticks=[0, 10]) # x axis ticks

anime_prob = FuncAnimation(fig, update, frames=len(prob_vals), interval=1000)
anime_prob.save('gamma_dist.gif', writer='pillow', fps=10)

Gamma distribution params

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!