SIMULASI DISTRIBUSI DISKRIT: DISTIRIBUSI BINOMIAL

# Simulasi jumlah barang cacat dalam 100 batch
# n = 50 (jumlah item per batch), p = 0.05 (peluang cacat)
set.seed(456)
n_batch <- 100
n_items <- 50
p_defect <- 0.05

defect_data <- rbinom(n_batch, size = n_items, prob = p_defect)
defect_data
##   [1] 1 1 3 4 4 2 1 2 1 2 2 1 3 4 3 3 4 2 3 2 1 3 5 2 4 3 5 3 0 1 6 1 5 2 3 5 7
##  [38] 5 5 2 2 2 0 1 0 1 3 3 2 5 4 4 2 2 2 4 5 3 1 1 2 2 1 3 0 2 3 2 3 2 6 4 1 0
##  [75] 2 0 2 2 2 3 2 3 3 5 2 4 2 2 6 4 3 4 3 7 4 4 1 2 3 3
# 1. Rata-rata jumlah barang cacat per batch
mean_defect <- mean(defect_data)
cat("Rata-rata barang cacat simulasi:", mean_defect, "\n")
## Rata-rata barang cacat simulasi: 2.72

hasil ini menunjukkan angka di sekitar 2.5, hal ini sesuai dengan ekspektasi teoritis (\(n \times p = 50 \times 0.05\)). Artinya, secara rata-rata, dalam setiap batch produksi ditemukan sekitar 2 hingga 3 barang yang cacat.

# 2. Probabilitas ditemukan lebih dari 5 barang cacat dalam satu batch
prob_above_5 <- sum(defect_data > 5) / n_batch
cat("Probabilitas barang cacat > 5:", prob_above_5, "\n")
## Probabilitas barang cacat > 5: 0.05

output menunjukkan seberapa sering kondisi “buruk” terjadi (lebih dari 5 cacat). Hasil 0,05 berarti proses produksi cukup terkendali karena jarang sekali ditemukan cacat yang sangat banyak dalam satu batch.

summary(defect_data)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    2.00    2.50    2.72    4.00    7.00
hist(defect_data, 
     breaks = seq(-0.5, max(defect_data) + 0.5, by = 1),
     col = "skyblue", 
     border = "white",
     main = "Visualisasi Distribusi Binomial (Barang Cacat)",
     xlab = "Jumlah Barang Cacat per Batch",
     ylab = "Frekuensi",
     probability = FALSE)
# Menambahkan garis rata-rata
abline(v = mean(defect_data), col = "red", lwd = 2, lty = 2)
legend("topright", legend = c("Rata-rata Simulasi"), col = "red", lty = 2, lwd = 2)

Grafik menunjukkan frekuensi tertinggi berada di sekitar angka 2 dan 3. Bentuk histogram cenderung menceng ke kanan (positively skewed), yang menunjukkan bahwa kemungkinan menemukan jumlah cacat yang sangat banyak (misal > 10) sangatlah kecil.

SIMULASI DISTRIBUSI KONTINU: DISTRIBUSI EKSPONENSIAL

# Simulasi waktu tunggu 100 pelanggan (dalam menit)
# Rate (lambda) = 0.2 (artinya rata-rata tunggu 5 menit)
set.seed(789)
n_customers <- 100
lambda_wait <- 0.2

waiting_time <- rexp(n_customers, rate = lambda_wait)
head(waiting_time)
## [1]  1.9989436 12.8771176 23.4019792  0.9160635  3.5356175  5.6441031
# 1. Rata-rata waktu tunggu simulasi
mean_wait <- mean(waiting_time)
cat("Rata-rata waktu tunggu simulasi:", mean_wait, "menit\n")
## Rata-rata waktu tunggu simulasi: 4.625604 menit

Hasil mean_wait yang mendekati 5 menit menunjukkan bahwa sistem antrean berjalan sesuai parameter 1/lambda. Ini adalah waktu rata-rata yang dihabiskan pelanggan sebelum dilayani.

# 2. Probabilitas waktu tunggu lebih dari 10 menit
prob_above_10 <- sum(waiting_time > 10) / n_customers
cat("Probabilitas waktu tunggu > 10 menit:", prob_above_10, "\n")
## Probabilitas waktu tunggu > 10 menit: 0.12

Nilai tersebut menggambarkan risiko pelanggan merasa terlalu lama menunggu. Jika nilainya sekitar 0.12 (12%), berarti ada peluang sebesar itu pelanggan harus menunggu lebih dari dua kali lipat waktu rata-rata.

summary(waiting_time)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##  0.06048  1.66414  3.31759  4.62560  5.91012 23.40198
hist(waiting_time, 
     breaks = 30, 
     col = "lightgreen", 
     border = "white",
     main = "Visualisasi Distribusi Eksponensial (Waktu Tunggu)",
     xlab = "Waktu Tunggu (Menit)",
     ylab = "Density",
     probability = TRUE)

Grafik menunjukkan pola yang menurun tajam. Ini adalah karakteristik utama distribusi eksponensial: interval waktu tunggu yang pendek memiliki frekuensi yang sangat tinggi, sedangkan waktu tunggu yang sangat lama (ekor panjang di kanan) jarang terjadi namun tetap mungkin ada.

Studi Kasus: Simulasi Skor Ujian Masuk (Distribusi Normal)

# Simulasi skor ujian 500 mahasiswa
set.seed(101)
n_students <- 500
mean_score <- 75
sd_score <- 10

scores_data <- rnorm(n_students, mean = mean_score, sd = sd_score)
# 1. Rata-rata skor hasil simulasi
mean_sim_score <- mean(scores_data)
cat("Rata-rata skor simulasi:", mean_sim_score, "\n")
## Rata-rata skor simulasi: 74.37219

Skor simulasi berkumpul di angka 75. Dengan standar deviasi 10, maka sebagian besar mahasiswa (sekitar 68%) memiliki nilai di rentang 65 hingga 85. Nilai minimum dan maksimum menunjukkan rentang kemampuan peserta dari yang terendah hingga tertinggi dalam simulasi tersebut.

# 2. Probabilitas mahasiswa mendapat skor di atas 90
prob_above_90 <- sum(scores_data > 90) / n_students
cat("Probabilitas skor di atas 90:", prob_above_90, "\n")
## Probabilitas skor di atas 90: 0.058

Nilai prob_above_90 menunjukkan proporsi calon mahasiswa yang memiliki kemampuan luar biasa. Dalam distribusi normal, skor yang lebih dari 1,5 kali standar deviasi dari rata-rata biasanya berjumlah sedikit (sekitar 6-7%). Ini bisa digunakan universitas untuk menentukan kuota jalur prestasi.

# Visualisasi Sederhana (Opsional namun disarankan)
hist(scores_data, main="Distribusi Skor Ujian", col="lightblue", border="white")
abline(v = mean_sim_score, col = "red", lwd = 2) # Garis rata-rata

Histogram akan membentuk pola simetris seperti lonceng (bell curve). Puncak tertinggi berada di tengah (skor 75), menunjukkan bahwa mayoritas peserta memiliki kemampuan rata-rata, dan semakin menjauh ke nilai ekstrem (sangat rendah atau sangat tinggi), jumlah pesertanya semakin sedikit.