Homework Assignment

Manual calculation using the Inverse Transform Method

1.a

1.b

R Markdown

Inverse Transform Method

1. For Function a

\[f(x) = \frac{1}{\beta} \exp\left(-\frac{x-\mu}{\beta}\right) - e^{-\frac{x-\mu}{\beta}}; \quad -\infty < x < \infty\]

# Function a
# Mendefinisikan fungsi invers dari Inverse Transform Method
inverse.gumbel <- function(U, mu, beta){
  mu - beta * log(-log(U)) #mendefinisikan hasil dari invers F atau F^-1(x)
}

rand.gumbel <- function(n = 100, mu = 0, beta = 1){
  U <- runif(n)
  x <- inverse.gumbel(U, mu, beta)
  return(x)
}
set.seed(123)
X1 <- rand.gumbel(n = 100, mu = 0, beta = 1)
hist(X1, freq=F, breaks =15, xlab='X', main='Function - a Inverse Transform Method')

1. For Function b

\[ f(y) = \begin{cases} y & \text{jika } 0 \leq y \leq 1 \\ 1 & \text{jika } 1 < y \leq 1.5 \\ 0 & \text{lainnya} \end{cases} \]

# Fungsi invers dari CDF
inv.transform.b <- function(U) {
  if (U <= 0.5) {
    return(sqrt(2 * U)) 
  } else {
    return((U + 0.5)) 
  }
}

simulasi.inv <- function(n) {
  U <- runif(n) 
  inv.trans <- sapply(U, inv.transform.b) # menerapkan fungsi invers dari CDF
  return(inv.trans)
}
set.seed(123)
# Simulasikan 100 variabel acak
X2 <- simulasi.inv(100)

# Buat histogram dari hasil simulasi
hist(X2, prob = TRUE, 
     main = "Function - b Inverse Transform Method",
     xlab = "Y", ylab = "Density")

batas <- seq(0, 1.5, 0.1)

Acceptance-Rejection Method

1. For Function a

acceptance.rej.gumbel <- function(n, mu, beta) {
  result <- numeric(n)
  i <- 0
  while (i < n) {
    x <- runif(1, min = mu - 5*beta, max = mu + 5*beta)
    y <- runif(1, 0, 1/beta)
    if (y <= (1/beta) * exp(-(x-mu)/beta - exp(-(x-mu)/beta))) {
      i <- i + 1
      result[i] <- x
    }
  }
  return(result)
}

n <- 100  
mu <- 0   
beta <- 1

set.seed(123)
X3 <- acceptance.rej.gumbel(n, mu, beta)

hist(X3, breaks = 20, main = "Function a - Acceptance-Rejection", xlab = "x", ylab = "Frequency")

2. For Function b

acceptance.rej.b <- function(n, mu, beta) {
  y <- numeric(n)
  i <- 1
  while (i <= n) {
    proposed_y <- runif(1, 0, 1.5)
    u <- runif(1)
    if (proposed_y <= 1) {
      if (u <= proposed_y) {
        y[i] <- proposed_y
        i <- i + 1
      }
    } else if (proposed_y <= 1.5) {
      if (u <= 1) {
        y[i] <- proposed_y
        i <- i + 1
      }
    }
  }
  return(y)
}
set.seed(123)
X4 <- acceptance.rej.b(n = 100, mu = 0, beta = 1)
hist(X4, freq=F, breaks =8,xlab='X', main="Function b - Acceptance-Rejection")

Showing Histogram Comparison for Both Methods Used

# Mengatur layout 2x2 untuk menampilkan 4 histogram
par(mfrow = c(2, 2))

hist(X1, freq=F, breaks =15, xlab='X', main='Function - a Inverse Transform Method', col = "lightgreen", border = "black")
hist(X3, freq=F, breaks =15,xlab='X', main="Function a - Acceptance-Rejection", col ="lightcoral", border = "black")
hist(X2, prob = TRUE, breaks = 15, main = "Function - b Inverse Transform Method", xlab = "X", ylab = "Density", freq = F, col = "lightblue", border = "black")
hist(X4, freq=F, breaks =15, xlab='X', main="Function b - Acceptance-Rejection",col = "lightyellow", border = "black")

Berdasarkan hasil yang diperoleh pada 4 histogram tersebut, dapat disimpulkan bahwa kedua metode - Inverse Transform Method dan Acceptance-Rejection Method - menghasilkan distribusi yang secara umum konsisten untuk kedua fungsi (a dan b). Untuk fungsi a yang merupakan distribusi gumbel, kedua metode menghasilkan distribusi yang menyerupai bentuk lonceng, meskipun Acceptance-Rejection tampak sedikit lebih halus. Untuk fungsi b, kedua metode menunjukkan peningkatan densitas dari 0 hingga 1, dan kemudian densitas yang relatif konstan antara 1 dan 1.5, sesuai dengan definisi fungsi. Namun, Inverse Transform Method untuk fungsi b menunjukkan puncak yang lebih jelas pada x = 1, sementara Acceptance-Rejection Method menghasilkan distribusi yang lebih merata. Perbedaan kecil ini mungkin disebabkan oleh sifat acak dari sampel dan efisiensi relatif dari masing-masing metode, tetapi secara keseluruhan, kedua metode berhasil menghasilkan distribusi yang mencerminkan karakteristik fungsi kepadatan peluang (fkp) yang diberikan.