Tugas Lakukan modifikasi pada salah satu kode program yang telah diberikan dengan mengubah jumlah simulasi menjadi 1.000, 5.000, dan 20.000. Jalankan simulasi untuk masing-masing kondisi tersebut, kemudian bandingkan nilai ekspektasi yang dihasilkan dengan nilai ekspektasi hasil perhitungan manual. Selanjutnya, analisis bagaimana perubahan jumlah simulasi memengaruhi kedekatan hasil simulasi terhadap nilai teoritis, serta jelaskan mengapa peningkatan jumlah simulasi dapat menghasilkan estimasi yang lebih stabil dan akurat.
# ====================================
# MODIFIKASI TUGAS MONTE CARLO
# Jumlah simulasi:
# 1000, 5000, 20000
# ====================================
# Data awal
tabel_permintaan <- data.frame(
permintaan = c(50, 60, 70, 80, 90),
frekuensi = c(10, 20, 40, 20, 10)
)
# probabilitas
total_frekuensi <- sum(tabel_permintaan$frekuensi)
tabel_permintaan$probabilitas <-
tabel_permintaan$frekuensi / total_frekuensi
# probabilitas kumulatif
tabel_permintaan$probabilitas_kumulatif <-
cumsum(tabel_permintaan$probabilitas)
# interval angka acak
tabel_permintaan$batas_bawah <-
c(1,
head(tabel_permintaan$probabilitas_kumulatif,-1)*100 + 1)
tabel_permintaan$batas_atas <-
tabel_permintaan$probabilitas_kumulatif*100
tabel_permintaan
## permintaan frekuensi probabilitas probabilitas_kumulatif batas_bawah
## 1 50 10 0.1 0.1 1
## 2 60 20 0.2 0.3 11
## 3 70 40 0.4 0.7 31
## 4 80 20 0.2 0.9 71
## 5 90 10 0.1 1.0 91
## batas_atas
## 1 10
## 2 30
## 3 70
## 4 90
## 5 100
permintaan_simulasi <- function(n, tabel_permintaan) {
bilangan_acak <- sample(1:100, n, replace = TRUE)
prediksi_permintaan <- sapply(
bilangan_acak,
function(x){
index <- which(
x >= tabel_permintaan$batas_bawah &
x <= tabel_permintaan$batas_atas
)
if(length(index) == 0){
return(NA)
} else {
return(tabel_permintaan$permintaan[index])
}
}
)
hasil <- data.frame(
bilangan_acak = bilangan_acak,
prediksi_permintaan = prediksi_permintaan
)
na.omit(hasil)
}
set.seed(123)
sim_1000 <- permintaan_simulasi(
1000,
tabel_permintaan
)
sim_5000 <- permintaan_simulasi(
5000,
tabel_permintaan
)
sim_20000 <- permintaan_simulasi(
20000,
tabel_permintaan
)
hasil <- data.frame(
Metode=c(
"Ekspektasi Teoritis",
"Simulasi 1000",
"Simulasi 5000",
"Simulasi 20000"
),
Permintaan_Rata_Rata=c(
70,
mean(sim_1000$prediksi_permintaan),
mean(sim_5000$prediksi_permintaan),
mean(sim_20000$prediksi_permintaan)
)
)
hasil
## Metode Permintaan_Rata_Rata
## 1 Ekspektasi Teoritis 70.00000
## 2 Simulasi 1000 70.45547
## 3 Simulasi 5000 69.98183
## 4 Simulasi 20000 69.93790
Interpretasi Hasil Simulasi Monte Carlo
Berdasarkan hasil simulasi Monte Carlo, diperoleh nilai ekspektasi teoritis sebesar 70. Nilai tersebut dibandingkan dengan hasil simulasi menggunakan jumlah pengulangan yang berbeda, yaitu 1.000, 5.000, dan 20.000 simulasi.
Hasil simulasi menunjukkan bahwa pada 1.000 simulasi, rata-rata permintaan yang diperoleh sebesar 70,45547. Nilai ini memiliki selisih sebesar:
∣70,45547−70∣=0,45547
dari nilai ekspektasi teoritis. Perbedaan ini terjadi karena jumlah simulasi masih relatif sedikit sehingga pengaruh variasi acak masih cukup besar.
Pada 5.000 simulasi, rata-rata permintaan menjadi 69,98183 dengan selisih:
∣69,98183−70∣=0,01817
Nilai tersebut sudah sangat mendekati ekspektasi teoritis.
Kemudian pada 20.000 simulasi, diperoleh rata-rata permintaan sebesar 69,93790 dengan selisih:
∣69,93790−70∣=0,06210
Hasil ini juga mendekati nilai teoritis dan menunjukkan estimasi yang lebih stabil dibandingkan jumlah simulasi yang lebih kecil.
Secara keseluruhan, peningkatan jumlah simulasi menyebabkan hasil estimasi ekspektasi semakin mendekati nilai teoritis. Hal ini terjadi karena semakin banyak pengulangan simulasi, semakin banyak kemungkinan acak yang tercakup sehingga pengaruh kesalahan random semakin kecil. Dengan demikian, metode Monte Carlo dengan jumlah simulasi yang lebih besar menghasilkan estimasi yang lebih stabil dan akurat.