Membangkitkan 1000 bilangan acak dari distribusi
Exponential(3) menggunakan Inverse Transform
Method dan membandingkannya dengan fungsi bawaan
rexp() menggunakan histogram.
Distribusi exponential dengan laju \(\lambda\) memiliki fungsi densitas dan fungsi distribusi sebagai berikut:
\[ f(x) = \lambda e^{-\lambda x}, \quad x \ge 0 \]
\[ F(x) = 1 - e^{-\lambda x}, \quad x \ge 0 \]
Untuk membangkitkan bilangan acak dari distribusi exponential menggunakan Inverse Transform Method, kita gunakan hubungan: \[ F^{-1}(u) = -\frac{1}{\lambda}\ln(1-u) \] dengan \(u \sim U(0,1)\).
Tentukan CDF \(F(x)\)
PDF dari \(exponential(3)\): \[ f(x) = 3e^{-3x}, \quad x \ge 0 \]
Maka CDF-nya adalah: \[ F(x) = 1 - e^{-3x}, \quad x \ge 0 \]
Tentukan inverse CDF \(F^{-1}(u)\)
Inverse CDF dari \(exponential(3)\): \[ F^{-1}(u) = -\frac{\ln(1-u)}{3}, \quad x \ge 0 \]
Bangkitkan u∼U(0,1)
# banyaknya amatan
n <- 1000
u <- runif(n)
set.seed(10) # membuat seed
x <- -(log(1-u)/3) #log merupakan ln di R
head(x)## [1] 0.05771407 0.57252996 0.22396868 0.21951921 0.19273004 0.26469711
## [1] 0.004985469 0.306740402 0.250719646 0.525013950 0.077219539 0.362224334
# 4. Tampilkan dua grafik berdampingan
par(mfrow = c(1, 2)) # 1 baris, 2 kolom
# Grafik 1: Inverse Transform
hist(x, breaks = 20, probability = TRUE,
main = "Exp : Metode Invers-Transform",
xlab = "exp1", col = "lightcoral", border = "white")
# Grafik 2: Fungsi rexp()
hist(y, breaks = 20, probability = TRUE,
main = "Exp : Fungsi Rexp",
xlab = "exp2", col = "lightcoral", border = "white")Membangkitkan 1000 bilangan acak dari distribusi Beta(2,2) menggunakan Metode Acceptance–Rejection dan membandingkannya dengan fungsi bawaan rbeta() melalui histogram.
##Teori Distribusi Beta(α, β) dengan parameter \(\alpha = 2\) dan \(\beta = 2\) memiliki fungsi kepadatan probabilitas (PDF):
\[ f(x) = 6x(1-x), \quad 0 < x < 1 \]
Kita menggunakan distribusi Uniform(0,1) sebagai fungsi proposal:
\[ g(x) = 1, \quad 0 < x < 1 \]
Rasio antara fungsi target dan proposal:
\[ \frac{f(x)}{g(x)} = 6x(1-x) \]
Nilai maksimumnya: \[ M = \max_{x \in (0,1)} 6x(1-x) = 1.5 \]
Syarat acceptance–rejection:
\[ u \leq \frac{f(x)}{M g(x)} = \frac{6x(1-x)}{1.5} = 4x(1-x) \]
dengan \(u \sim U(0,1)\).
Tetapkan peubah acak dari \(Y\) sebagai target sebaran beserta PDF-nya \(g(y)\).
Dalam kasus ini, kita pilih: \[ Y \sim U(0,1) \] karena memiliki domain yang sama dengan peubah acak \(X\), yaitu \(0 < x < 1\).
PDF dari \(Y\) adalah: \[ g(y) = 1, \quad 0 \le y \le 1 \]
Hitung nilai \(c\) dengan mencari nilai maksimum dari rasio: \[ \frac{f(y)}{g(y)} \]
Misalkan: \[ h(y) = \frac{f(y)}{g(y)} \]
Untuk distribusi \(X \sim \text{Beta}(2,2)\) dengan \[ f(y) = 6y(1 - y), \quad 0 < y < 1 \] dan karena \(Y \sim U(0,1)\) maka \(g(y) = 1\), diperoleh: \[ h(y) = 6y(1 - y) \]
Untuk mencari nilai maksimum dari \(h(y)\), kita cari titik kritis dengan menurunkan \(h(y)\) terhadap \(y\): \[ \frac{dh(y)}{dy} = 0 \]
Turunan dari \(h(y) = 6y(1 - y)\) adalah: \[ \frac{dh(y)}{dy} = 6(1 - y) - 6y = 6 - 12y \]
Dengan menyetarakan turunan ke nol: \[ 6 - 12y = 0 \Rightarrow y = \frac{1}{2} \]
Substitusi nilai \(y = \frac{1}{2}\) ke dalam fungsi \(h(y)\): \[ h\left(\frac{1}{2}\right) = 6\left(\frac{1}{2}\right)\left(1 - \frac{1}{2}\right) = 6 \times \frac{1}{2} \times \frac{1}{2} = \frac{3}{2} \]
Sehingga diperoleh: \[ c = 1.5 \]
## [1] 1.5
f <- function(y) 6*y*(1-y)
g <- function(y) 1
nilaic <- derivH$objective
#kriteria penerimaan
criteria <- u < f(y)/(nilaic*g(y))
head(criteria)## [1] TRUE TRUE TRUE TRUE TRUE TRUE
## [1] 0.50747820 0.30676851 0.42690767 0.69310208 0.08513597 0.22543662
z <- rbeta(n,shape1 = 2,shape2 = 2)
par(mfrow=c(1,2))
hist(x,main="beta(2,2) dari AR")
hist(z,main="beta(2,2) dari rbeta")