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.
Metode Monte Carlo merupakan metode numerik yang memanfaatkan bilangan acak untuk mensimulasikan suatu proses probabilistik.
Nilai ekspektasi suatu variabel acak diskrit dihitung menggunakan:
\[E(X) = \sum_{i=1}^{n} x_i p_i\]
Hukum Bilangan Besar menyatakan bahwa rata-rata hasil percobaan akan semakin mendekati nilai harapan teoritis ketika jumlah percobaan semakin besar.
Mendefinisikan kemungkinan permintaan dan probabilitas masing-masing:
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
Melakukan simulasi berdasarkan distribusi peluang permintaan yang sudah ditentukan dengan metode resampling.
Simulasi 1000 Kali
set.seed(150)
sim_1000 <- sample(
permintaan,
size = 1000,
replace = TRUE,
prob = prob
)
mean_1000 <- mean(sim_1000)
mean_1000
## [1] 67.15
Simulasi 5000 Kali
set.seed(150)
sim_5000 <- sample(
permintaan,
size = 5000,
replace = TRUE,
prob = prob
)
mean_5000 <- mean(sim_5000)
mean_5000
## [1] 67.112
Simulasi 20000 Kali
set.seed(150)
sim_20000 <- sample(
permintaan,
size = 20000,
replace = TRUE,
prob = prob
)
mean_20000 <- mean(sim_20000)
mean_20000
## [1] 67.041
Membuat data frame untuk melihat rekapitulasi perbandingan hasil simulasi dengan nilai teoritis.
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
Melihat besar nilai error/kesalahan dari masing-masing jumlah simulasi:
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
Membuat plot bar untuk mengilustrasikan hasil yang diperoleh:
barplot(
hasil$Nilai,
names.arg = hasil$Metode,
col = c("orange", "lightblue", "lightgreen", "pink"),
main = "Perbandingan Ekspektasi Teoritis dan Hasil Simulasi",
ylab = "Nilai Ekspektasi",
ylim = c(0, 80) # Memberikan rentang y-axis agar visualisasi lebih jelas
)