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:
# Data permintaan dan frekuensi
permintaan <- c(50, 60, 70, 80, 90)
frekuensi <- c(10, 20, 40, 20, 10)
# Probabilitas kumulatif
prob <- frekuensi / sum(frekuensi)
cum_prob <- cumsum(prob)
# Fungsi simulasi permintaan harian
simulasi_permintaan <- function(n_simulasi) {
set.seed(123)
hasil <- numeric(n_simulasi)
for (i in 1:n_simulasi) {
u <- runif(1)
if (u <= cum_prob[1]) {
hasil[i] <- permintaan[1]
} else if (u <= cum_prob[2]) {
hasil[i] <- permintaan[2]
} else if (u <= cum_prob[3]) {
hasil[i] <- permintaan[3]
} else if (u <= cum_prob[4]) {
hasil[i] <- permintaan[4]
} else {
hasil[i] <- permintaan[5]
}
}
return(hasil)
}
hasil_5_hari <- simulasi_permintaan(5)
total_5_hari <- sum(hasil_5_hari)
rerata_5_hari <- mean(hasil_5_hari)
cat("Prediksi total permintaan untuk 5 hari ke depan:", total_5_hari, "\n")
## Prediksi total permintaan untuk 5 hari ke depan: 380
cat("Prediksi rata-rata permintaan untuk 5 hari ke depan:", rerata_5_hari, "\n")
## Prediksi rata-rata permintaan untuk 5 hari ke depan: 76
hasil_20_hari <- simulasi_permintaan(20)
total_20_hari <- sum(hasil_20_hari)
rerata_20_hari <- mean(hasil_20_hari)
cat("Prediksi total permintaan untuk 20 hari ke depan:", total_20_hari, "\n")
## Prediksi total permintaan untuk 20 hari ke depan: 1430
cat("Prediksi rata-rata permintaan untuk 20 hari ke depan:", rerata_20_hari, "\n")
## Prediksi rata-rata permintaan untuk 20 hari ke depan: 71.5
hasil_100_hari <- simulasi_permintaan(100)
total_100_hari <- sum(hasil_100_hari)
rerata_100_hari <- mean(hasil_100_hari)
cat("Prediksi total permintaan untuk 100 hari ke depan:", total_100_hari, "\n")
## Prediksi total permintaan untuk 100 hari ke depan: 6990
cat("Prediksi rata-rata permintaan untuk 20 hari ke depan:", rerata_100_hari, "\n")
## Prediksi rata-rata permintaan untuk 20 hari ke depan: 69.9
hasil_1000_hari <- simulasi_permintaan(1000)
total_1000_hari <- sum(hasil_1000_hari)
rerata_1000_hari <- mean(hasil_1000_hari)
cat("Prediksi total permintaan untuk 1000 hari ke depan:", total_1000_hari, "\n")
## Prediksi total permintaan untuk 1000 hari ke depan: 69920
cat("Prediksi rata-rata permintaan untuk 1000 hari ke depan:", rerata_1000_hari, "\n")
## Prediksi rata-rata permintaan untuk 1000 hari ke depan: 69.92
Bangkitkanlah data dengan distribusi eksponensial untuk variabel permintaan (10 data), dan data dengan distribusi normal untuk variabel frekuensi (10 data).
set.seed(123)
data_2 <- data.frame(
permintaan_2 = round(rexp(10,0.01234)),
frekuensi_2 = ceiling(rnorm(10,10,5))
)
data_2
## permintaan_2 frekuensi_2
## 1 68 8
## 2 47 17
## 3 108 12
## 4 3 13
## 5 5 11
## 6 26 8
## 7 25 19
## 8 12 13
## 9 221 1
## 10 2 14
# Menghitung Probabilitas
data_2$probabilitas_2 <- round(data_2$frekuensi_2 / sum(data_2$frekuensi_2),2)
data_2
## permintaan_2 frekuensi_2 probabilitas_2
## 1 68 8 0.07
## 2 47 17 0.15
## 3 108 12 0.10
## 4 3 13 0.11
## 5 5 11 0.09
## 6 26 8 0.07
## 7 25 19 0.16
## 8 12 13 0.11
## 9 221 1 0.01
## 10 2 14 0.12
# Menghitung Probabilitas Kumulaatif
data_2$probcum_2 <- cumsum(data_2$probabilitas_2)
data_2
## permintaan_2 frekuensi_2 probabilitas_2 probcum_2
## 1 68 8 0.07 0.07
## 2 47 17 0.15 0.22
## 3 108 12 0.10 0.32
## 4 3 13 0.11 0.43
## 5 5 11 0.09 0.52
## 6 26 8 0.07 0.59
## 7 25 19 0.16 0.75
## 8 12 13 0.11 0.86
## 9 221 1 0.01 0.87
## 10 2 14 0.12 0.99
# Menghitung Probabilitas Kumulaatif
data_2$probcum_2 <- cumsum(data_2$probabilitas_2)
data_2
## permintaan_2 frekuensi_2 probabilitas_2 probcum_2
## 1 68 8 0.07 0.07
## 2 47 17 0.15 0.22
## 3 108 12 0.10 0.32
## 4 3 13 0.11 0.43
## 5 5 11 0.09 0.52
## 6 26 8 0.07 0.59
## 7 25 19 0.16 0.75
## 8 12 13 0.11 0.86
## 9 221 1 0.01 0.87
## 10 2 14 0.12 0.99
# Menghitung Nilai Ekspektasi
expvalue_2 <- round(sum(data_2$permintaan_2*data_2$probabilitas_2),2)
expvalue_2
## [1] 32.98
# Menghitung Probabilitas Kumulaatif
data_2$probcum_2 <- cumsum(data_2$probabilitas_2)
data_2
## permintaan_2 frekuensi_2 probabilitas_2 probcum_2
## 1 68 8 0.07 0.07
## 2 47 17 0.15 0.22
## 3 108 12 0.10 0.32
## 4 3 13 0.11 0.43
## 5 5 11 0.09 0.52
## 6 26 8 0.07 0.59
## 7 25 19 0.16 0.75
## 8 12 13 0.11 0.86
## 9 221 1 0.01 0.87
## 10 2 14 0.12 0.99
# Menghitung Nilai Ekspektasi
expvalue_2 <- round(sum(data_2$permintaan_2*data_2$probabilitas_2),2)
expvalue_2
## [1] 32.98
# Membuat fungsi simulasi
simulasi_2 <- function(a, permintaan_2, kumulatif_2){
simulasi_2 <- data.frame(
hari_2_ke = 1:a,
rand_value_2 = round(runif(a),2)
)
simulasi_2$permintaan_2 = 0
for (i in 1:nrow(simulasi_2)){
for (j in 1:length(kumulatif_2)){
if (simulasi_2$rand_value_2[i] <= kumulatif_2[j]){
simulasi_2$permintaan_2[i] = permintaan_2[j]
break
}
}
}
average_2 <- mean(simulasi_2$permintaan_2)
return(list(data_2 = simulasi_2, average_2 = average_2))
}
A. PREDIKSI PERMINTAAN SELAMA 5 HARI KE DEPAN
set.seed(123)
simulasi_a_2 <- simulasi_2(5,data_2$permintaan_2,data_2$probcum_2)
print(simulasi_a_2$data_2)
## hari_2_ke rand_value_2 permintaan_2
## 1 1 0.29 108
## 2 2 0.79 12
## 3 3 0.41 3
## 4 4 0.88 2
## 5 5 0.94 2
print(simulasi_a_2$average_2)
## [1] 25.4
set.seed(123)
simulasi_b_2 <- simulasi_2(20,data_2$permintaan_2,data_2$probcum_2)
print(simulasi_b_2$data_2)
## hari_2_ke rand_value_2 permintaan_2
## 1 1 0.29 108
## 2 2 0.79 12
## 3 3 0.41 3
## 4 4 0.88 2
## 5 5 0.94 2
## 6 6 0.05 68
## 7 7 0.53 26
## 8 8 0.89 2
## 9 9 0.55 26
## 10 10 0.46 5
## 11 11 0.96 2
## 12 12 0.45 5
## 13 13 0.68 25
## 14 14 0.57 26
## 15 15 0.10 47
## 16 16 0.90 2
## 17 17 0.25 108
## 18 18 0.04 68
## 19 19 0.33 3
## 20 20 0.95 2
print(simulasi_b_2$average_2)
## [1] 27.1
set.seed(123)
simulasi_c_2 <- simulasi_2(100,data_2$permintaan_2,data_2$probcum_2)
print(simulasi_c_2$data_2)
## hari_2_ke rand_value_2 permintaan_2
## 1 1 0.29 108
## 2 2 0.79 12
## 3 3 0.41 3
## 4 4 0.88 2
## 5 5 0.94 2
## 6 6 0.05 68
## 7 7 0.53 26
## 8 8 0.89 2
## 9 9 0.55 26
## 10 10 0.46 5
## 11 11 0.96 2
## 12 12 0.45 5
## 13 13 0.68 25
## 14 14 0.57 26
## 15 15 0.10 47
## 16 16 0.90 2
## 17 17 0.25 108
## 18 18 0.04 68
## 19 19 0.33 3
## 20 20 0.95 2
## 21 21 0.89 2
## 22 22 0.69 25
## 23 23 0.64 25
## 24 24 0.99 2
## 25 25 0.66 25
## 26 26 0.71 25
## 27 27 0.54 26
## 28 28 0.59 26
## 29 29 0.29 108
## 30 30 0.15 47
## 31 31 0.96 2
## 32 32 0.90 2
## 33 33 0.69 25
## 34 34 0.80 12
## 35 35 0.02 68
## 36 36 0.48 5
## 37 37 0.76 12
## 38 38 0.22 47
## 39 39 0.32 108
## 40 40 0.23 108
## 41 41 0.14 47
## 42 42 0.41 3
## 43 43 0.41 3
## 44 44 0.37 3
## 45 45 0.15 47
## 46 46 0.14 47
## 47 47 0.23 108
## 48 48 0.47 5
## 49 49 0.27 108
## 50 50 0.86 12
## 51 51 0.05 68
## 52 52 0.44 5
## 53 53 0.80 12
## 54 54 0.12 47
## 55 55 0.56 26
## 56 56 0.21 47
## 57 57 0.13 47
## 58 58 0.75 25
## 59 59 0.90 2
## 60 60 0.37 3
## 61 61 0.67 25
## 62 62 0.09 47
## 63 63 0.38 3
## 64 64 0.27 108
## 65 65 0.81 12
## 66 66 0.45 5
## 67 67 0.81 12
## 68 68 0.81 12
## 69 69 0.79 12
## 70 70 0.44 5
## 71 71 0.75 25
## 72 72 0.63 25
## 73 73 0.71 25
## 74 74 0.00 68
## 75 75 0.48 5
## 76 76 0.22 47
## 77 77 0.38 3
## 78 78 0.61 25
## 79 79 0.35 3
## 80 80 0.11 47
## 81 81 0.24 108
## 82 82 0.67 25
## 83 83 0.42 3
## 84 84 0.79 12
## 85 85 0.10 47
## 86 86 0.43 3
## 87 87 0.98 2
## 88 88 0.89 2
## 89 89 0.89 2
## 90 90 0.18 47
## 91 91 0.13 47
## 92 92 0.65 25
## 93 93 0.34 3
## 94 94 0.66 25
## 95 95 0.32 108
## 96 96 0.19 47
## 97 97 0.78 12
## 98 98 0.09 47
## 99 99 0.47 5
## 100 100 0.51 5
print(simulasi_c_2$average_2)
## [1] 29.96
data_2 <- data.frame(
permintaan_2 = c(20, 30, 40, 50),
probabilitas_2 = c(0.1, 0.3, 0.4, 0.2)
)
# Tambahkan kolom kumulatif
data_2$kumulatif_2 <- cumsum(data_2$probabilitas_2)