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