Tugas Praktikum 3

1. Simulasi Distribusi Diskrit dan Kontinu

Pada bagian ini, kita melakukan simulasi untuk Distribusi Binomial (mewakili distribusi diskrit) dan Distribusi Normal (mewakili distribusi kontinu).

# ==========================================
# A. SIMULASI DISTRIBUSI DISKRIT (Binomial)
# ==========================================
# Skenario: Simulasi pelemparan 10 keping koin diulang 1000 kali.
set.seed(123)
n_koin <- 10        # Jumlah koin
p_sukses <- 0.5     # Peluang angka muncul
simulasi_binom <- rbinom(1000, size = n_koin, prob = p_sukses)

# Visualisasi Distribusi Diskrit
hist(simulasi_binom, 
     main = "Distribusi Binomial\n(Jumlah Sukses dari 10 Koin)", 
     xlab = "Jumlah Sukses", 
     ylab = "Frekuensi",
     col = "lightblue", 
     breaks = seq(-0.5, 10.5, 1))

# ==========================================
# B. SIMULASI DISTRIBUSI KONTINU (Normal)
# ==========================================
# Skenario: Simulasi tinggi badan 1000 mahasiswa (rata-rata 165 cm, SD 8 cm).
set.seed(123)
simulasi_normal <- rnorm(1000, mean = 165, sd = 8)

# Visualisasi Distribusi Kontinu
hist(simulasi_normal, 
     main = "Distribusi Normal\n(Tinggi Badan Mahasiswa)", 
     xlab = "Tinggi Badan (cm)", 
     ylab = "Frekuensi",
     col = "lightgreen", 
     breaks = 30)


2. Studi Kasus Mandiri: Simulasi Operasional Klinik

Deskripsi: Sebuah klinik mengevaluasi operasionalnya. Jumlah kedatangan pasien per hari mengikuti Distribusi Poisson (\(\lambda\) = 25). Sementara waktu pelayanan dokter untuk setiap pasien mengikuti Distribusi Uniform (10 hingga 30 menit).

Tujuan: Menghitung peluang klinik kedatangan lebih dari 30 pasien dalam sehari, dan peluang pasien dilayani lebih dari 25 menit.

# ==========================================
# A. Simulasi Kedatangan Pasien (Poisson)
# ==========================================
set.seed(456)
# Simulasi kedatangan untuk 100 hari kerja
kedatangan_pasien <- rpois(100, lambda = 25)

# Menghitung probabilitas kedatangan > 30 pasien/hari
prob_lebih_30 <- sum(kedatangan_pasien > 30) / length(kedatangan_pasien)
cat("Probabilitas kedatangan lebih dari 30 pasien/hari:", prob_lebih_30, "\n")
## Probabilitas kedatangan lebih dari 30 pasien/hari: 0.19
# ==========================================
# B. Simulasi Waktu Pelayanan (Uniform)
# ==========================================
set.seed(456)
# Simulasi waktu pelayanan untuk 1000 pasien
waktu_pelayanan <- runif(1000, min = 10, max = 30)

# Menghitung probabilitas pelayanan > 25 menit
prob_lama <- sum(waktu_pelayanan > 25) / length(waktu_pelayanan)
cat("Probabilitas waktu pelayanan lebih dari 25 menit:", prob_lama, "\n")
## Probabilitas waktu pelayanan lebih dari 25 menit: 0.281
# ==========================================
# C. Visualisasi Studi Kasus
# ==========================================
par(mfrow=c(1,2)) # Membagi jendela grafik menjadi 2 (kiri-kanan)

hist(kedatangan_pasien, 
     main="Kedatangan Pasien\n(Poisson)", 
     col="pink", 
     xlab="Jumlah Pasien per Hari",
     breaks=10)

hist(waktu_pelayanan, 
     main="Waktu Pelayanan\n(Uniform)", 
     col="lightyellow", 
     xlab="Waktu (menit)",
     breaks=20)

# Mengembalikan layout grafik ke semula (1 grafik penuh)
par(mfrow=c(1,1))