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.