Membangkitkan 100 bilangan acak menggunakan Inverse Transform Method dari distribusi binomial dengan rumus distribusi kumulatif \(F(k) = P(X \leq k)\), dengan langkah-langkah, algoritma, dan sintaks dalam R.

Berikut merupakan cara menggunakan Inverse Transform Method untuk membangkitkan bilangan acak dari distribusi binomial:

Langkah-Langkah:

  1. Mengatur Set seed untuk reproduktibilitas yang diperoleh dari 4 angkata terakhir NIM

Input: - Parameter distribusi binomial: \(n\) (jumlah percobaan) dan \(p\) (probabilitas sukses). - \(N\): jumlah bilangan acak yang akan dihasilkan.

  1. Menentukan parameter distribusi binomial:

    • Input parameter \(n\) dan \(p\).
  2. Menghitung probabilitas binomial \(P(X = k)\) untuk setiap \(k\) dari 0 hingga \(n\):

    • Menggunakan rumus distribusi binomial: \[ P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k} \]
    • Menghitung probabilitas \(P(X = k)\) untuk setiap \(k\) dari 0 hingga \(n\).
  3. Menghitung distribusi kumulatif \(F(k)\):

    • Untuk setiap \(k\), dihitung distribusi kumulatif \(F(k)\) sebagai penjumlahan dari probabilitas-probabilitas \(P(X = 0)\), \(P(X = 1)\), …, \(P(X = k)\): \[ F(k) = \sum_{i=0}^{k} P(X = i) \]
  4. Membangkitkan bilangan acak \(u\) dari distribusi seragam \(U(0, 1)\):

    • Untuk setiap bilangan acak yang ingin dibangkitkan, buat satu bilangan acak \(u \sim U(0, 1)\).
  5. Menemukan nilai \(k\) yang memenuhi \(F(k-1) < u \leq F(k)\):

    • Mencari nilai \(k\) sedemikian rupa sehingga distribusi kumulatif \(F(k-1)\) kurang dari \(u\) dan \(u\) kurang dari atau sama dengan \(F(k)\).
    • Jika \(u\) berada dalam interval tersebut, maka nilai \(k\) adalah hasil bilangan acak yang sesuai dengan distribusi binomial.
  6. Mengulangi proses dari langkah 2-6 hingga \(N\) bilangan acak \(k\) telah dibangkitkan.

  7. Output:

  • Hasilkan \(N\) bilangan acak dari distribusi binomial \(Bin(n, p)\).

Mencari Invers Transform Method

Implementasi Inverse Transform Method untuk distribusi Binomial dalam kasus ini melibatkan proses iteratif untuk setiap bilangan acak uniform yang dihasilkan. Metode ini bekerja dengan menghitung fungsi distribusi kumulatif (CDF) Binomial secara bertahap, dimulai dari k=0, dan membandingkannya dengan bilangan acak uniform. Proses ini berlanjut, meningkatkan nilai k, hingga CDF melebihi atau sama dengan bilangan acak uniform. Nilai k terakhir yang memenuhi kondisi ini (dikurangi satu) menjadi sampel yang dihasilkan dari distribusi Binomial. Implementasi ini efisien untuk distribusi diskrit dalam hal ini adalah Distribusni Binomial, memungkinkan generasi sampel yang akurat sesuai dengan parameter n dan p yang ditentukan, meskipun dapat menjadi komputasional intensif untuk nilai n yang sangat besar. Metode ini diulang 100 kali untuk menghasilkan set sampel yang diinginkan, memberikan representasi yang baik dari distribusi Binomial yang mendasarinya.

Contoh Misalkan kita memiliki parameter distribusi binomial atau mendefinsikan nilai parameter distribusi binomial dengan \(n = 5\) dan \(p = 0.4\):

  1. Hitung probabilitas binomial untuk setiap nilai \(k\) dari 0 sampai 5:
    • \(P(X = 0) = 0.07776\)
    • \(P(X = 1) = 0.25920\)
    • \(P(X = 2) = 0.34560\)
    • \(P(X = 3) = 0.23040\)
    • \(P(X = 4) = 0.07680\)
    • \(P(X = 5) = 0.01024\)
  2. Hitung distribusi kumulatif:
    • \(F(0) = 0.07776\)
    • \(F(1) = 0.33696\)
    • \(F(2) = 0.68256\)
    • \(F(3) = 0.91296\)
    • \(F(4) = 0.98976\)
    • \(F(5) = 1.00000\)
  3. Bangkitkan bilangan acak \(u\):
    • Misalkan \(u = 0.65\).
  4. Cari nilai \(k\) yang memenuhi syarat:
    • Periksa setiap \(F(k)\) untuk menemukan \(k\) yang memenuhi \(F(k-1) < u \leq F(k)\).
    • Untuk \(u = 0.65\), kita temukan \(F(1) = 0.33696\) dan \(F(2) = 0.68256\), sehingga \(F(1) < 0.65 \leq F(2)\).
    • Jadi, \(k = 2\).
  5. Hasilkan nilai acak \(k\):
    • Nilai acak yang dibangkitkan adalah \(k = 2\).

Langkah tersebut dilakukan iterasi.

Algoritma:

  1. Mengatur Set seed 4 angka terakhir NIM

Input: n (jumlah percobaan), p (probabilitas sukses), N (jumlah bilangan acak) Output: K (daftar bilangan acak dari distribusi binomial)

  1. Tentukan parameter n dan p

  2. Hitung probabilitas binomial P(X = k) untuk k = 0 hingga n: P(X = k) = binomial(n, k) * p^k * (1 - p)^(n - k)

  3. Hitung distribusi kumulatif F(k) untuk setiap k: F(k) = sum(P(X = i) untuk i dari 0 hingga k)

  4. Buat daftar K untuk menyimpan bilangan acak dari distribusi binomial

  5. Untuk i = 1 hingga N (mengulangi sebanyak N kali):

    1. Bangkitkan bilangan acak u dari U(0, 1)
    2. Cari k yang memenuhi F(k-1) < u ≤ F(k)
    3. Simpan k ke dalam daftar K
  6. Output daftar K

Sintaks R:

NIM 1035, maka digunakan set.seed(1035).

  1. Mengatur Set seed
# Set seed menggunakan 4 digit terakhir NIM yaitu 1035
set.seed(1035)
  1. Menentukan parameter n dan p
# Parameter distribusi binomial
n <- 10  # contoh jumlah percobaan
p <- 0.5 # contoh probabilitas sukses

3 dan 4. Hitung probabilitas binomial P(X = k) untuk k = 0 hingga dan Menghitung distribusi kumulatif F(k) tetapi menentukan dl fungsinya

# Membuat fungsi distribusi kumulatif untuk distribusi binomial
binom.cdf <- function(k, n, p) {
  return(pbinom(k, n, p))  # Fungsi distribusi kumulatif
}

5 dan 6. Membuat daftar K untuk menyimpan bilangan acak dari distribusi binomial dan Untuk i = 1 hingga N (mengulangi sebanyak N kali):

# Membuat 100 bilangan acak menggunakan metode invers
generate_random_binom <- function(n, p, size) {
  random_values <- numeric(size)  # Vektor untuk menyimpan nilai acak
  for (i in 1:size) {
    u <- runif(1)  # Bangkitkan bilangan acak seragam
    k <- 0
    while (binom.cdf(k, n, p) < u) {
      k <- k + 1
    }
    random_values[i] <- k
  }
  return(random_values)
}

# Menghasilkan 100 bilangan acak
random_numbers <- generate_random_binom(n, p, 100)
  1. Output
# Melihat hasil
print(random_numbers)
##   [1] 4 4 2 4 4 3 5 8 8 6 6 5 2 4 4 6 4 8 3 6 4 6 7 3 6 6 5 6 5 4 5 7 4 6 6 2 5
##  [38] 3 3 5 5 4 7 4 4 5 8 9 4 4 3 5 4 5 2 5 4 5 6 4 3 5 5 4 4 8 3 3 2 7 3 3 8 5
##  [75] 4 2 4 7 7 7 5 4 5 4 4 4 4 4 6 5 2 7 6 5 2 6 1 6 9 5