# Simulasi 1000 variabel random dari distribusi uniform
set.seed(123) # Set seed untuk reproducibility
n <- 1000
uniform_data <- runif(n, min = 0, max = 1)
# Plot histogram
hist(uniform_data, breaks = 30, main = "Histogram Distribusi Uniform", xlab = "Nilai", col = "lightblue")
## Simulasi Distribusi Diskrit: Distribusi Binomial
# Simulasi 1000 variabel random dari distribusi binomial
n_trials <- 10 # Jumlah percobaan
p_success <- 0.5 # Probabilitas sukses
binomial_data <- rbinom(n, size = n_trials, prob = p_success)
# Plot histogram
hist(binomial_data, breaks = 30, main = "Histogram Distribusi Binomial", xlab = "Jumlah Sukses", col = "lightgreen")
## Simulasi Distribusi Kontinu: Distribusi Normal
# Simulasi 1000 variabel random dari distribusi normal
mu <- 0 # Mean
sigma <- 1 # Standar deviasi
normal_data <- rnorm(n, mean = mu, sd = sigma)
# Plot histogram
hist(normal_data, breaks = 30, main = "Histogram Distribusi Normal", xlab = "Nilai", col = "lightpink")
## Distribusi Poisson (Diskrit)
lambda <- 3 # Parameter lambda
poisson_data <- rpois(n, lambda)
hist(poisson_data, breaks = 30, main = "Histogram Distribusi Poisson", xlab = "Jumlah Kejadian", col = "lightyellow")
## Distribusi Eksponensial (Kontinu)
rate <- 1 # Parameter rate
exp_data <- rexp(n, rate)
hist(exp_data, breaks = 30, main = "Histogram Distribusi Eksponensial", xlab = "Nilai", col = "lightcoral")
## Latihan Studi Kasus
# Simulasi pendapatan bulanan
set.seed(123)
n_employees <- 500
mean_income <- 10000000
sd_income <- 2000000
income_data <- rnorm(n_employees, mean = mean_income, sd = sd_income)
# 1. Rata-rata pendapatan simulasi
mean_simulated <- mean(income_data)
cat("Rata-rata pendapatan simulasi:", mean_simulated, "\n")
## Rata-rata pendapatan simulasi: 10069181
# 2. Probabilitas pendapatan di atas Rp 12.000.000
prob_above_12m <- sum(income_data > 12000000) / n_employees
cat("Probabilitas pendapatan di atas Rp 12.000.000:", prob_above_12m, "\n")
## Probabilitas pendapatan di atas Rp 12.000.000: 0.164
# Simulasi jumlah pelanggan
set.seed(123)
n_days <- 30
lambda_customers <- 50
customers_data <- rpois(n_days, lambda_customers)
# 1. Rata-rata jumlah pelanggan simulasi
mean_customers <- mean(customers_data)
cat("Rata-rata jumlah pelanggan simulasi:", mean_customers, "\n")
## Rata-rata jumlah pelanggan simulasi: 48.96667
# 2. Probabilitas jumlah pelanggan lebih dari 60
prob_above_60 <- sum(customers_data > 60) / n_days
cat("Probabilitas jumlah pelanggan lebih dari 60:", prob_above_60, "\n")
## Probabilitas jumlah pelanggan lebih dari 60: 0.03333333
A. Simulasi Distribusi Diskrit: Distribusi Geometrik Distribusi geometrik memodelkan jumlah percobaan sampai sukses pertama dalam percobaan Bernoulli berulang. Misalnya, dalam sebuah toko, pelanggan berhasil melakukan pembelian dengan probabilitas 0.3.
# Simulasi 20 pelanggan, probabilitas beli = 0.3
set.seed(123) # Supaya hasil tetap
simulasi <- rgeom(n = 20, prob = 0.3)
# Tampilkan hasil simulasi
simulasi
## [1] 3 5 0 0 1 10 6 1 1 1 2 9 0 1 3 2 2 6 7 0
# Total percobaan sampai sukses pertama
simulasi + 1
## [1] 4 6 1 1 2 11 7 2 2 2 3 10 1 2 4 3 3 7 8 1
# Buat histogram dari hasil simulasi
hist(simulasi + 1,
main = "Simulasi Distribusi Geometrik (p = 0.3)",
xlab = "Jumlah Percobaan sampai Sukses Pertama",
col = "skyblue",
breaks = 10)
B. Simulasi Distribusi Kontinu: Distribusi Gamma Distribusi gamma sering
digunakan untuk memodelkan waktu hingga terjadi beberapa kejadian dalam
proses Poisson. Misalnya, waktu hingga seorang pelanggan melakukan 3
pembelian di toko online jika rata-rata pembelian terjadi setiap 5
hari.
# Set seed agar hasil konsisten
set.seed(123)
# Simulasi 20 pelanggan
waktu_pembelian <- rgamma(n = 20, shape = 3, rate = 0.2)
# Tampilkan hasil
waktu_pembelian
## [1] 8.461717 23.680149 2.711138 13.543003 29.735589 16.409417 4.499288
## [8] 2.574056 24.050187 15.506411 15.869149 13.390337 8.491889 24.831517
## [15] 19.878361 12.063640 9.041670 10.851682 5.704579 11.833791
# Histogram waktu hingga 3 pembelian
hist(waktu_pembelian,
main = "Simulasi Distribusi Gamma (shape = 3, rate = 0.2)",
xlab = "Waktu (hari)",
col = "lightgreen",
breaks = 10)
Di pabrik “Aroma Kopi”, produksi kopi bubuk dilakukan dalam batch. Proses terdiri dari beberapa tahap:
Pemeriksaan kualitas bahan baku
Penggilingan dan pemanggangan
Pengemasan produk
Kadang bahan baku kopi tidak lolos uji kualitas. Probabilitas satu batch lulus uji adalah 0.7. Kita ingin mengetahui berapa banyak batch yang harus diperiksa hingga mendapat batch pertama yang lulus uji.
set.seed(1)
uji_kualitas <- rgeom(n = 30, prob = 0.7) + 1 # jumlah percobaan hingga lulus
uji_kualitas
## [1] 1 1 3 1 1 1 1 3 2 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 2 1
Waktu total untuk menyelesaikan tahap penggilingan dan pemanggangan terdiri dari beberapa sub-proses. Misalnya, kita anggap waktu menyelesaikan 3 sub-proses dengan rata-rata 1 sub-proses per 2 menit.
set.seed(2)
waktu_giling <- rgamma(n = 30, shape = 3, rate = 0.5)
waktu_giling
## [1] 2.565935 2.420848 2.064313 5.405136 3.007170 4.270736 2.903115
## [8] 6.407944 8.586494 3.835293 3.908685 0.362278 9.173334 6.078589
## [15] 3.364016 13.797513 1.925412 7.942871 3.848911 14.146680 2.845549
## [22] 3.557797 2.553107 9.152944 5.596158 6.507812 4.239230 12.831292
## [29] 7.162248 13.277725
Waktu kedatangan batch kopi untuk dikemas mengikuti proses Poisson — rata-rata 1 batch datang setiap 10 menit.
set.seed(3)
kedatangan_batch <- rexp(n = 30, rate = 1/10)
kedatangan_batch
## [1] 17.3062657 6.1503280 12.3291659 10.0408445 2.0420135 2.0878811
## [7] 22.8364334 0.1004783 0.6807071 1.1449887 0.7725067 4.0737672
## [13] 1.5817749 42.2361050 5.8229482 1.9946313 3.8845670 12.0983475
## [19] 11.8627109 17.4861950 8.7226609 1.3997851 20.4735060 8.1902235
## [25] 5.7256241 17.7044916 1.4149504 13.7027903 7.6363584 33.0249086
produksi_kopi <- data.frame(
percobaan_sampai_lulus = uji_kualitas,
waktu_giling_dan_roast = waktu_giling,
waktu_kedatangan_batch = kedatangan_batch
)
head(produksi_kopi)
## percobaan_sampai_lulus waktu_giling_dan_roast waktu_kedatangan_batch
## 1 1 2.565935 17.306266
## 2 1 2.420848 6.150328
## 3 3 2.064313 12.329166
## 4 1 5.405136 10.040844
## 5 1 3.007170 2.042013
## 6 1 4.270736 2.087881
hist(produksi_kopi$percobaan_sampai_lulus,
main = "Batch Sampai Lulus Uji Kualitas",
col = "tomato", xlab = "Jumlah Batch")
hist(produksi_kopi$waktu_giling_dan_roast,
main = "Waktu Giling & Panggang per Batch",
col = "chocolate", xlab = "Menit")
hist(produksi_kopi$waktu_kedatangan_batch,
main = "Waktu Kedatangan Batch ke Pengemasan",
col = "steelblue", xlab = "Menit")