Sebuah warung es teh di pinggir jalan melakukan pengamatan dan
mencatat frekuensi harian permintaan es teh selama 100 hari terakhir.
Data pengamatan adalah sebagai berikut:
a. prediksikan permintaan es teh selama 5 hari ke depan.
b. prediksikan permintaan es teh selama 20 hari ke depan.
# Data
data_esteh <- data.frame(
Permintaan = c(50, 60, 70, 80, 90),
Frekuensi = c(10, 20, 40, 20, 10)
)
data_esteh$Probabilitas <- round(data_esteh$Frekuensi / sum(data_esteh$Frekuensi), 2)
data_esteh$Prob_Kumulatif <- round(cumsum(data_esteh$Probabilitas), 2)
data_esteh
## Permintaan Frekuensi Probabilitas 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
eks_esteh <- sum(data_esteh$Permintaan * data_esteh$Probabilitas)
eks_esteh
## [1] 70
# Fungsi Simulasi
simulasi_es_teh <- function(n_hari) {
bil_acak <- runif(n_hari)
prediksi <- sapply(bil_acak, function(x) {
data_esteh$Permintaan[min(which(data_esteh$Prob_Kumulatif >= x))]
})
tabel_hasil <- data.frame(
Hari_ke = 1:n_hari,
Angka_Acak = round(bil_acak, 4),
Prediksi_Permintaan = prediksi
)
rata_rata <- mean(prediksi)
return(list(tabel = tabel_hasil, rerata = rata_rata))
}
set.seed(643)
hasil5 <- simulasi_es_teh(5)
print(hasil5$tabel, row.names = FALSE)
## Hari_ke Angka_Acak Prediksi_Permintaan
## 1 0.9546 90
## 2 0.8533 80
## 3 0.8372 80
## 4 0.5801 70
## 5 0.4387 70
cat("Rata-rata 5 hari :", round(hasil5$rerata, 2), "\n")
## Rata-rata 5 hari : 78
set.seed(739)
hasil20 <- simulasi_es_teh(20)
print(hasil20$tabel, row.names = FALSE)
## Hari_ke Angka_Acak Prediksi_Permintaan
## 1 0.9187 90
## 2 0.6931 70
## 3 0.3763 70
## 4 0.6395 70
## 5 0.4126 70
## 6 0.2520 60
## 7 0.0980 50
## 8 0.5617 70
## 9 0.4173 70
## 10 0.4881 70
## 11 0.3463 70
## 12 0.2145 60
## 13 0.8614 80
## 14 0.4775 70
## 15 0.7027 80
## 16 0.6599 70
## 17 0.3874 70
## 18 0.4835 70
## 19 0.1441 60
## 20 0.2260 60
cat("Rata-rata 20 hari :", round(hasil20$rerata, 2), "\n")
## Rata-rata 20 hari : 69
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(456)
permintaan_eks <- rexp(10, rate = 0.01)
frekuensi_norm <- abs(rnorm(10, mean = 50, sd = 10))
data_historis <- data.frame(
Hari_Historis = 1:10,
Permintaan = round(permintaan_eks, 2),
Frekuensi = round(frekuensi_norm, 2)
)
data_historis
## Hari_Historis Permintaan Frekuensi
## 1 1 251.23 60.07
## 2 2 207.04 55.73
## 3 3 46.59 40.84
## 4 4 23.01 63.11
## 5 5 239.84 59.89
## 6 6 83.53 66.54
## 7 7 164.48 35.59
## 8 8 190.97 69.47
## 9 9 19.78 67.37
## 10 10 30.21 53.87
data_historis$Probabilitas <- round(data_historis$Frekuensi / sum(data_historis$Frekuensi), 4)
data_historis$Prob_Kumulatif <- round(cumsum(data_historis$Probabilitas), 4)
print(data_historis, row.names = FALSE)
## Hari_Historis Permintaan Frekuensi Probabilitas Prob_Kumulatif
## 1 251.23 60.07 0.1049 0.1049
## 2 207.04 55.73 0.0973 0.2022
## 3 46.59 40.84 0.0713 0.2735
## 4 23.01 63.11 0.1102 0.3837
## 5 239.84 59.89 0.1046 0.4883
## 6 83.53 66.54 0.1162 0.6045
## 7 164.48 35.59 0.0622 0.6667
## 8 190.97 69.47 0.1213 0.7880
## 9 19.78 67.37 0.1177 0.9057
## 10 30.21 53.87 0.0941 0.9998
# Fungsi Simulasi
simulasi_prediksi <- function(jumlah_hari) {
acak <- runif(jumlah_hari)
prediksi <- sapply(acak, function(x) {
idx <- min(which(data_esteh$Prob_Kumulatif >= x))
data_esteh$Permintaan[idx]
})
tabel_hasil <- data.frame(
Hari_ke = 1:jumlah_hari,
Angka_Acak = round(acak, 4),
Prediksi_Permintaan = round(prediksi, 2)
)
return(list(tabel = tabel_hasil, rerata = mean(prediksi)))
}
set.seed(836)
hasil5 <- simulasi_prediksi(5)
print(hasil5$tabel, row.names = FALSE)
## Hari_ke Angka_Acak Prediksi_Permintaan
## 1 0.4463 70
## 2 0.5851 70
## 3 0.4711 70
## 4 0.4159 70
## 5 0.0211 50
cat("Rata-rata 5 hari :", round(hasil5$rerata, 2), "\n")
## Rata-rata 5 hari : 66
set.seed(473)
hasil20 <- simulasi_prediksi(20)
print(hasil20$tabel, row.names = FALSE)
## Hari_ke Angka_Acak Prediksi_Permintaan
## 1 0.7672 80
## 2 0.3751 70
## 3 0.5024 70
## 4 0.9027 90
## 5 0.8269 80
## 6 0.3237 70
## 7 0.6832 70
## 8 0.3216 70
## 9 0.1752 60
## 10 0.5569 70
## 11 0.2882 60
## 12 0.4324 70
## 13 0.0423 50
## 14 0.3468 70
## 15 0.6353 70
## 16 0.9821 90
## 17 0.7810 80
## 18 0.4759 70
## 19 0.4577 70
## 20 0.3839 70
cat("Rata-rata 20 hari :", round(hasil20$rerata, 2), "\n")
## Rata-rata 20 hari : 71.5
set.seed(963)
ringkasan <- data.frame(
Periode = c("5 Hari", "20 Hari", "100 Hari", "1000 Hari"),
Rata_rata = c(hasil5$rerata,
hasil20$rerata,
simulasi_prediksi(100)$rerata,
simulasi_prediksi(1000)$rerata)
)
print(ringkasan, row.names = FALSE)
## Periode Rata_rata
## 5 Hari 66.00
## 20 Hari 71.50
## 100 Hari 69.60
## 1000 Hari 69.49