Studi Kasus 1

Sebuah warung es teh di pinggir jalan melakukan pengamatan dan mencatat frekuensi harian permintaan es teh selama 100 hari terakhir.

  1. prediksikan permintaan es teh selama 5 hari ke depan.

  2. prediksikan permintaan es teh selama 20 hari ke depan.

Input Data

# Data permintaan dan frekuensi
permintaan <- c(50, 60, 70, 80, 90)
frekuensi <- c(10, 20, 40, 20, 10)

# Total hari
total <- sum(frekuensi)

Menghitung Probabilitas dan Distribusi Kumulatif

# 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

# 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)
}

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

Studi Kasus 2

Bangkitkanlah data dengan distribusi eksponensial untuk variabel permintaan sebanyak 10 data permintaan, dan data dengan distribusi normal untuk variabel frekuensi

  1. prediksikan permintaan selama 5 hari ke depan

  2. prediksikan permintaan selama 20 hari ke depan

  3. prediksikan permintaan selama 100 hari ke depan

  4. prediksikan permintaan selama 1000 hari ke depan

Generate Data

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)

Menghitung Probabilitas

# 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

# Fungsi simulasi

simulasi <- function(n_hari) {
  sample(permintaan, size = n_hari, replace = TRUE, prob = prob)
}

Hasil Prediksi

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