Variabel Random adalah variabel yang nilainya ditentukan oleh hasil dari suatu percobaan acak. Variabel random dapat dibagi menjadi dua jenis:
Distribusi uniform adalah distribusi di mana semua nilai dalam interval tertentu memiliki probabilitas yang sama.
# 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")
runif(n, min, max) digunakan untuk menghasilkan n variabel random dari
distribusi uniform dengan rentang min hingga max. Histogram menunjukkan
bahwa nilai-nilai tersebar merata antara 0 dan 1, sesuai dengan sifat
distribusi uniform.
Distribusi binomial menggambarkan jumlah sukses dalam n percobaan independen dengan probabilitas sukses p.
# 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")
rbinom(n, size, prob) digunakan untuk menghasilkan n variabel random
dari distribusi binomial dengan size percobaan dan probabilitas sukses
prob. Histogram menunjukkan distribusi jumlah sukses, yang berbentuk
simetris karena p = 0.5.
Distribusi normal adalah distribusi kontinu yang berbentuk lonceng, dengan mean mu dan standar deviasi sigma.
# 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")
rnorm(n, mean, sd) digunakan untuk menghasilkan n variabel random dari
distribusi normal dengan mean mu dan standar deviasi sigma. Histogram
menunjukkan distribusi berbentuk lonceng, yang khas untuk distribusi
normal.
lambda <- 3 # Parameter lambda
poisson_data <- rpois(n, lambda)
hist(poisson_data, breaks = 30, main = "Histogram Distribusi Poisson", xlab = "Jumlah Kejadian", col = "lightyellow")
Distribusi Poisson digunakan untuk memodelkan jumlah kejadian langka
dalam interval waktu atau ruang. Histogram menunjukkan distribusi yang
miring ke kanan, yang khas untuk distribusi Poisson dengan lambda
kecil.
rate <- 1 # Parameter rate
exp_data <- rexp(n, rate)
hist(exp_data, breaks = 30, main = "Histogram Distribusi Eksponensial", xlab = "Nilai", col = "lightcoral")
Distribusi eksponensial digunakan untuk memodelkan waktu antara kejadian
dalam proses Poisson. Histogram menunjukkan distribusi yang miring ke
kanan, dengan nilai-nilai yang semakin kecil semakin sering muncul.
# 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
Studi Kasus 2: Simulasi Jumlah Pelanggan
# 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
set.seed(123)
n <- 1000
p_success <- 0.5 # Probabilitas sukses
geo_data <- rgeom(n, prob = p_success)
# Plot histogram
hist(geo_data, breaks = 50, main = "Histogram Distribusi Geometrik", xlab = "Jumlah Percobaan hingga Sukses", col = "lightpink")
Histogram menunjukkan bahwa sebagian besar pelanggan langsung melakukan
pembelian pada percobaan pertama (nilai 0 dalam distribusi geometrik
berarti sukses terjadi pada percobaan pertama). Semakin besar jumlah
percobaan hingga sukses, semakin jarang terjadi, yang terlihat dari ekor
panjang ke kanan. Hal ini sesuai dengan sifat distribusi geometrik yang
bersifat monoton menurun, dengan probabilitas keberhasilan terbesar pada
percobaan pertama.
set.seed(123)
n <- 1000
shape <- 5 # Jumlah kejadian yang diharapkan
scale <- 7 # Waktu rata-rata antar kejadian
gamma_data <- rgamma(n, shape = shape, scale = scale)
# Plot histogram
hist(gamma_data, breaks = 50, main = "Histogram Distribusi Gamma", xlab = "Waktu hingga 3 Pembelian", col = "lightblue")
Histogram menunjukkan bahwa waktu hingga pelanggan mencapai 3 pembelian
memiliki distribusi yang asimetris dengan ekor ke kanan. Nilai mode
berada di sekitar 3 × skala (5), yaitu sekitar 15 menit, tetapi ada
variabilitas karena distribusi gamma tidak simetris. Untuk shape besar,
distribusi gamma semakin menyerupai distribusi normal, tetapi dengan
shape 3, distribusi masih cukup miring ke kanan.
Studi Kasus: Simulasi Waktu Pelayanan di Restoran Sebuah restoran ingin memodelkan waktu pelayanan setiap pelanggan, yang diasumsikan mengikuti distribusi eksponensial dengan rata-rata 7 menit.
set.seed(123)
n_customers <- 100 # Jumlah pelanggan yang disimulasikan
rate_service <- 1/7 # Rata-rata waktu pelayanan 7 menit
service_times <- rexp(n_customers, rate = rate_service)
# 1. Rata-rata waktu pelayanan simulasi
mean_service <- mean(service_times)
cat("Rata-rata waktu pelayanan simulasi:", mean_service, "menit\n")
## Rata-rata waktu pelayanan simulasi: 7.320031 menit
# 2. Probabilitas pelayanan lebih dari 8 menit
prob_above_8 <- sum(service_times > 8) / n_customers
cat("Probabilitas pelayanan lebih dari 8 menit:", prob_above_8, "\n")
## Probabilitas pelayanan lebih dari 8 menit: 0.36
# Plot histogram
hist(service_times, breaks = 30, main = "Histogram Waktu Pelayanan", xlab = "Menit", col = "lightcoral")
Histogram menunjukkan bahwa distribusi bersifat memoryless, yang berarti
peluang seorang pelanggan memerlukan waktu tambahan untuk dilayani tidak
dipengaruhi oleh berapa lama mereka sudah menunggu.