Latihan 1

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

A. PREDIKSI UNTUK 5 HARI

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

B. PREDIKSI UNTUK 20 HARI

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

C. PREDIKSI UNTUK 100 HARI

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

D. PREDIKSI UNTUK 1000 HARI

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

LATIHAN 2

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

B. PREDIKSI PERMINTAAN SELAMA 20 HARI KE DEPAN

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

C. PREDIKSI PERMINTAAN SELAMA 100 HARI KE DEPAN

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)