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 x_i p_i \]
Hukum Bilangan Besar menyatakan bahwa rata-rata hasil percobaan akan semakin mendekati nilai harapan teoritis ketika jumlah percobaan semakin besar.
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"
)