Sebuah warung es teh di pinggir jalan melakukan pengamatan dan mencatat frekuensi harian permintaan es teh selama 100 hari terakhir.
prediksikan permintaan es teh selama 5 hari ke depan.
prediksikan permintaan es teh selama 20 hari ke depan.
# Data permintaan dan frekuensi
permintaan <- c(50, 60, 70, 80, 90)
frekuensi <- c(10, 20, 40, 20, 10)
# Total hari
total <- sum(frekuensi)
# Probabilitas
prob <- frekuensi / total
# Distribusi kumulatif
prob_kumulatif <- cumsum(prob)
# Tampilkan tabel
data.frame(permintaan, frekuensi, prob, prob_kumulatif)
## permintaan frekuensi prob prob_kumulatif
## 1 50 10 0.1 0.1
## 2 60 20 0.2 0.3
## 3 70 40 0.4 0.7
## 4 80 20 0.2 0.9
## 5 90 10 0.1 1.0
# Fungsi simulasi Monte Carlo
simulasi_permintaaan <- function(n_hari) {
set.seed(123) # agar hasil bisa direproduksi
# generate angka acak uniform
u <- runif(n_hari)
hasil <- numeric(n_hari)
for (i in 1:n_hari) {
if (u[i] <= prob_kumulatif[1]) {
hasil[i] <- permintaan[1]
} else if (u[i] <= prob_kumulatif[2]) {
hasil[i] <- permintaan[2]
} else if (u[i] <= prob_kumulatif[3]) {
hasil[i] <- permintaan[3]
} else if (u[i] <= prob_kumulatif[4]) {
hasil[i] <- permintaan[4]
} else {
hasil[i] <- permintaan[5]
}
}
return(hasil)
}
# a. Prediksi 5 hari ke depan
prediksi_5_hari <- simulasi_permintaaan(5)
prediksi_5_hari
## [1] 60 80 70 80 90
Prediksi permintaan es teh untuk 5 hari ke depan berturut turut adalah 60, 80, 70, 80, dan 90 cup
# b. Prediksi 20 hari ke depan
prediksi_20_hari <- simulasi_permintaaan(20)
prediksi_20_hari
## [1] 60 80 70 80 90 50 70 80 70 70 90 70 70 70 60 80 60 50 70 90
Prediksi permintaan es teh untuk 20 hari ke depan berturut turut adalah 60, 80, 70, 80, 90 cup, dan seterusnya
# Rata-rata prediksi
mean(prediksi_5_hari)
## [1] 76
mean(prediksi_20_hari)
## [1] 71.5
Prediksi rata-rata permintaan es teh untuk 5 hari ke depan adalah 76 cup per hari sedangkan prediksi rata-rata permintaan es teh untuk 20 hari ke depan adalah 71.5 cup per hari
Bangkitkanlah data dengan distribusi eksponensial untuk variabel permintaan sebanyak 10 data permintaan, dan data dengan distribusi normal untuk variabel frekuensi
prediksikan permintaan selama 5 hari ke depan
prediksikan permintaan selama 20 hari ke depan
prediksikan permintaan selama 100 hari ke depan
prediksikan permintaan selama 1000 hari ke depan
set.seed(123)
# Generate data
n <- 10 # jumlah data
# Permintaan (eksponensial)
permintaan <- rexp(n, rate = 1/70) # rata-rata sekitar 70
permintaan <- round(permintaan)
# Frekuensi (normal)
frekuensi <- rnorm(n, mean = 50, sd = 15)
# Pastikan tidak ada frekuensi negatif
frekuensi[frekuensi < 0] <- 5
# Bulatkan
frekuensi <- round(frekuensi)
# Probabilitas
prob <- frekuensi / sum(frekuensi)
# Cek data
data.frame(permintaan, frekuensi, prob)
## permintaan frekuensi prob
## 1 59 43 0.08082707
## 2 40 68 0.12781955
## 3 93 55 0.10338346
## 4 2 56 0.10526316
## 5 4 52 0.09774436
## 6 22 42 0.07894737
## 7 22 77 0.14473684
## 8 10 57 0.10714286
## 9 191 21 0.03947368
## 10 2 61 0.11466165
# Fungsi simulasi
simulasi <- function(n_hari) {
sample(permintaan, size = n_hari, replace = TRUE, prob = prob)
}
Output di bawah menunjukkan prediksi permintaan es teh selama 5 hingga 1000 hari ke depan dengan mnggunakan distribusi eksponensial
# a. 5 hari
pred_5 <- simulasi(5)
# b. 20 hari
pred_20 <- simulasi(20)
# c. 100 hari
pred_100 <- simulasi(100)
# d. 1000 hari
pred_1000 <- simulasi(1000)
# Ringkasan hasil
list(
prediksi_5_hari = pred_5,
prediksi_20_hari = pred_20,
prediksi_100_hari = pred_100,
prediksi_1000_hari = pred_1000,
rata2 = c(
mean(pred_5),
mean(pred_20),
mean(pred_100),
mean(pred_1000)
)
)
## $prediksi_5_hari
## [1] 2 40 22 10 10
##
## $prediksi_20_hari
## [1] 2 40 22 40 10 40 59 22 10 4 22 2 40 22 4 22 2 93 22 2
##
## $prediksi_100_hari
## [1] 2 59 10 59 59 4 10 4 93 4 22 10 40 2 93 2 22 40
## [19] 93 10 4 22 10 191 22 22 40 22 93 2 93 2 40 4 22 10
## [37] 2 93 2 10 22 10 22 22 93 10 40 22 2 22 22 4 22 2
## [55] 22 2 10 93 2 2 40 2 191 40 22 22 93 93 22 93 4 2
## [73] 93 59 4 191 10 2 10 22 40 59 40 40 22 40 4 59 2 10
## [91] 40 22 10 2 40 10 40 2 2 93
##
## $prediksi_1000_hari
## [1] 2 2 2 4 40 10 40 93 40 59 4 93 93 2 2 59 2 59
## [19] 2 4 40 2 10 40 2 22 22 2 2 191 93 22 10 10 93 40
## [37] 2 40 191 93 2 10 59 2 2 40 40 10 40 40 93 22 93 2
## [55] 10 59 22 2 191 4 93 22 10 10 2 93 22 93 10 2 22 40
## [73] 10 40 59 40 59 2 93 40 93 2 4 10 191 191 4 40 40 2
## [91] 40 2 4 40 10 10 59 22 22 93 22 2 2 2 2 22 2 59
## [109] 22 22 40 4 4 191 10 22 93 4 22 10 40 22 10 22 40 22
## [127] 93 2 22 22 59 4 59 191 22 22 4 4 22 4 4 93 10 40
## [145] 22 10 10 10 10 4 22 2 59 59 40 2 59 59 2 40 4 22
## [163] 22 191 22 2 22 93 2 4 59 2 10 93 93 93 191 10 22 2
## [181] 40 10 2 191 10 40 93 22 191 2 40 93 191 93 10 2 59 22
## [199] 40 22 2 2 4 40 22 10 10 10 2 59 10 2 191 4 40 2
## [217] 191 2 4 2 4 2 22 40 2 22 40 191 2 4 4 22 40 40
## [235] 22 22 191 191 22 22 2 10 10 4 22 2 93 2 59 40 2 2
## [253] 40 22 2 10 22 2 93 2 2 22 93 2 10 40 59 22 2 2
## [271] 191 40 93 22 10 22 40 2 2 4 40 59 4 4 40 2 93 2
## [289] 2 40 22 40 22 59 4 40 22 191 10 10 40 2 40 40 93 2
## [307] 59 22 59 10 4 93 10 93 22 40 4 40 59 2 93 22 22 22
## [325] 93 10 59 191 22 10 93 22 191 40 22 93 4 2 2 2 22 2
## [343] 40 2 2 22 2 10 22 59 10 4 40 10 4 22 59 2 2 2
## [361] 22 2 93 22 22 191 2 22 93 10 59 22 4 2 59 2 2 59
## [379] 22 59 2 4 191 22 59 59 2 2 40 2 22 2 2 93 2 2
## [397] 22 22 22 4 40 93 93 10 59 2 22 2 22 2 10 22 4 10
## [415] 22 2 10 59 59 59 2 59 40 2 93 191 2 2 22 191 22 22
## [433] 59 2 2 22 22 40 93 40 2 40 59 40 59 2 2 93 22 22
## [451] 191 2 4 22 4 191 22 22 59 4 2 22 2 2 59 2 2 4
## [469] 59 10 4 22 40 22 4 59 10 2 4 22 2 22 93 4 22 2
## [487] 93 4 22 10 2 4 59 22 22 2 2 59 59 22 4 40 22 22
## [505] 40 93 40 22 2 22 2 10 2 59 40 10 10 4 4 59 22 22
## [523] 2 2 40 10 40 22 93 2 22 2 2 40 22 10 2 59 40 22
## [541] 59 2 93 2 2 40 10 93 2 93 4 10 2 22 22 191 22 10
## [559] 4 4 59 93 4 59 93 4 22 10 59 93 22 40 2 59 191 2
## [577] 22 191 40 22 2 2 2 4 22 93 22 2 40 40 22 2 10 10
## [595] 22 22 40 2 40 2 10 2 22 40 10 93 93 22 59 93 59 22
## [613] 40 2 10 93 59 40 59 22 93 59 10 40 22 2 22 22 2 40
## [631] 10 59 10 22 2 2 40 10 2 22 22 40 191 10 10 4 93 22
## [649] 93 2 22 4 22 2 22 2 2 93 2 93 191 4 22 10 22 2
## [667] 4 22 4 10 4 93 2 4 93 2 22 191 4 93 22 2 40 22
## [685] 22 40 22 2 4 191 4 2 10 22 22 22 22 10 22 93 10 93
## [703] 40 40 22 2 2 22 40 4 2 59 93 22 93 22 93 22 22 93
## [721] 40 4 22 10 2 40 40 2 4 93 2 59 4 22 2 22 4 22
## [739] 2 59 2 93 2 4 22 59 22 22 22 59 2 2 22 2 2 2
## [757] 2 59 22 2 59 93 93 2 2 22 4 22 40 4 2 22 40 2
## [775] 59 59 22 191 10 10 10 22 40 10 2 10 2 2 40 22 22 2
## [793] 191 93 22 10 10 2 10 93 22 22 2 2 22 4 10 4 22 59
## [811] 40 2 93 22 22 2 10 10 4 22 93 22 4 22 40 40 10 22
## [829] 40 2 10 2 59 93 10 4 22 2 2 40 59 59 10 4 2 22
## [847] 10 10 2 40 2 22 4 2 93 10 2 10 4 2 10 59 2 2
## [865] 10 40 2 40 2 10 22 93 2 40 2 10 10 59 4 10 2 40
## [883] 22 10 22 59 191 4 59 22 2 2 2 93 40 2 4 4 40 2
## [901] 2 22 4 2 22 191 2 4 59 59 4 93 93 40 22 10 2 10
## [919] 40 2 10 4 40 22 22 59 10 59 22 22 22 4 4 191 93 2
## [937] 40 59 4 40 4 59 2 2 22 22 93 22 59 10 10 2 40 10
## [955] 22 40 2 40 40 4 2 22 22 22 2 22 2 2 59 93 2 4
## [973] 4 2 2 2 40 59 10 22 22 40 10 93 93 2 22 22 2 4
## [991] 22 2 2 22 59 2 40 2 40 10
##
## $rata2
## [1] 16.800 24.000 33.820 32.771