Pendahuluan

Metode Monte Carlo merupakan teknik simulasi yang menggunakan bilangan acak untuk memperkirakan nilai suatu parameter atau statistik. Metode ini banyak digunakan dalam bidang statistika, keuangan, manajemen risiko, dan penelitian operasional.

Pada praktikum ini dilakukan simulasi Monte Carlo untuk mengestimasi nilai ekspektasi permintaan harian. Simulasi dilakukan dengan jumlah pengulangan sebanyak 1000, 5000, dan 20000 kali untuk melihat pengaruh ukuran simulasi terhadap kedekatan hasil simulasi dengan nilai teoritis.

Tujuan Praktikum

  1. Menghitung nilai ekspektasi teoritis suatu distribusi probabilitas.
  2. Mengestimasi nilai ekspektasi menggunakan simulasi Monte Carlo.
  3. Membandingkan hasil simulasi dengan nilai teoritis.
  4. Menganalisis pengaruh jumlah simulasi terhadap akurasi estimasi.

Dasar Teori

Metode Monte Carlo

Metode Monte Carlo merupakan metode numerik yang memanfaatkan bilangan acak untuk mensimulasikan suatu proses probabilistik.

Nilai Ekspektasi

Nilai ekspektasi suatu variabel acak diskrit dihitung menggunakan:

\[ E(X)=\sum x_i p_i \]

Law of Large Numbers

Hukum Bilangan Besar menyatakan bahwa rata-rata hasil percobaan akan semakin mendekati nilai harapan teoritis ketika jumlah percobaan semakin besar.

Data Distribusi Permintaan

permintaan <- c(50,60,70,80,90)

prob <- c(
  0.20,
  0.25,
  0.30,
  0.15,
  0.10
)

data.frame(
  Permintaan = permintaan,
  Probabilitas = prob
)
##   Permintaan Probabilitas
## 1         50         0.20
## 2         60         0.25
## 3         70         0.30
## 4         80         0.15
## 5         90         0.10
ekspektasi_teoritis <- sum(
  permintaan * prob
)

ekspektasi_teoritis
## [1] 67
set.seed(150)

sim_1000 <- sample(
  permintaan,
  size = 1000,
  replace = TRUE,
  prob = prob
)

mean_1000 <- mean(sim_1000)

mean_1000
## [1] 67.15
set.seed(150)

sim_5000 <- sample(
  permintaan,
  size = 5000,
  replace = TRUE,
  prob = prob
)

mean_5000 <- mean(sim_5000)

mean_5000
## [1] 67.112
set.seed(150)

sim_20000 <- sample(
  permintaan,
  size = 20000,
  replace = TRUE,
  prob = prob
)

mean_20000 <- mean(sim_20000)

mean_20000
## [1] 67.041
hasil <- data.frame(
  Metode = c(
    "Ekspektasi Teoritis",
    "Simulasi 1000",
    "Simulasi 5000",
    "Simulasi 20000"
  ),
  Nilai = c(
    ekspektasi_teoritis,
    mean_1000,
    mean_5000,
    mean_20000
  )
)

hasil
##                Metode  Nilai
## 1 Ekspektasi Teoritis 67.000
## 2       Simulasi 1000 67.150
## 3       Simulasi 5000 67.112
## 4      Simulasi 20000 67.041
error <- data.frame(
  Simulasi = c(
    "1000",
    "5000",
    "20000"
  ),
  Estimasi = c(
    mean_1000,
    mean_5000,
    mean_20000
  ),
  Error = abs(
    c(
      mean_1000,
      mean_5000,
      mean_20000
    ) -
    ekspektasi_teoritis
  )
)

error
##   Simulasi Estimasi Error
## 1     1000   67.150 0.150
## 2     5000   67.112 0.112
## 3    20000   67.041 0.041
barplot(
  hasil$Nilai,
  names.arg = hasil$Metode,
  col = c(
    "orange",
    "lightblue",
    "lightgreen",
    "pink"
  ),
  main = "Perbandingan Ekspektasi Teoritis dan Hasil Simulasi",
  ylab = "Nilai Ekspektasi"
)