Variabel Random adalah variabel yang nilainya ditentukan oleh hasil dari suatu percobaan acak. Variabel random dapat dibagi menjadi dua jenis:
Variabel Random Diskrit: Variabel yang hanya dapat mengambil nilai-nilai tertentu (biasanya bilangan bulat). Contoh: jumlah pelanggan yang datang ke restoran dalam sehari.
Variabel Random Kontinu: Variabel yang dapat mengambil nilai apa pun dalam suatu interval. Contoh: tinggi badan seseorang, pendapatan bulanan.
Dalam pemodelan statistika dan simulasi, variabel random digunakan untuk memodelkan fenomena acak. Simulasi variabel random membantu kita memahami distribusi data, menghitung probabilitas, dan membuat prediksi berdasarkan model yang telah dibuat.
Distribusi uniform adalah distribusi di mana semua nilai dalam interval tertentu memiliki probabilitas yang sama.
# Simulasi 9999 variabel random dari distribusi uniform
set.seed(123)
n <- 9999
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.
n_trials <- 10
p_success <- 0.5
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.
mu <- 0
sigma <- 1
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
poisson_data <- rpois(n, lambda = lambda)
hist(poisson_data, breaks = 30, main = "Histogram Distribusi Poisson", xlab = "Jumlah Kejadian", col = "lightgrey")
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.
rate <- 1
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
Simulasi ini memodelkan pendapatan bulanan karyawan dengan distribusi normal.
Rata-rata pendapatan simulasi mendekati mean yang diberikan (Rp 10.000.000).
Probabilitas pendapatan di atas Rp 12.000.000 dihitung dengan menghitung proporsi data yang melebihi nilai tersebut.
# Simulasi jumlah pelanggan
set.seed(123)
n_days <- 30
lambda_customer <- 50
customers_data <- rpois(n_days, lambda_customer)
# 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
Simulasi ini memodelkan jumlah pelanggan yang datang ke restoran setiap hari dengan distribusi Poisson.
Rata-rata jumlah pelanggan simulasi mendekati lambda (50).
Probabilitas jumlah pelanggan lebih dari 60 dihitung dengan menghitung proporsi data yang melebihi nilai tersebut.
Distribusi Geometrik digunakan untuk menghitung jumlah percobaan hingga keberhasilan pertama dalam eksperimen Bernoulli (misalnya melempar koin sampai mendapat angka).
prob <- 0.3 # Probabilitas sukses dalam satu percobaan
geometric_data <- rgeom(1000, prob)
# Plot histogram
hist(geometric_data, breaks = seq(-0.5, max(geometric_data) + 0.5, 1), col = "lightgreen",
main = "Histogram Distribusi Geometrik", xlab = "Jumlah Percobaan Hingga Keberhasilan Pertama", ylab = "Frekuensi")
rgeom(1000, prob)
: Menghasilkan 1000
angka dari distribusi Geometrik dengan
probabilitas sukses 0.3.
Model ini cocok untuk menentukan berapa kali harus mencoba sesuatu hingga berhasil.
Contoh penggunaan: Jumlah pertanyaan yang harus dijawab sebelum mendapat jawaban benar.
Distribusi Gamma sering digunakan untuk memodelkan waktu sampai sejumlah kejadian terjadi, misalnya waktu hingga n kegagalan dalam sistem.
set.seed(123)
shape <- 2 # Parameter bentuk (jumlah kejadian yang harus terjadi)
scale <- 1 # Parameter skala
gamma_data <- rgamma(1000, shape = shape, scale = scale)
hist(gamma_data, breaks = 30, col = "lightblue", main = "Histogram Distribusi Gamma", xlab = "Nilai", ylab = "Frekuensi")
rgamma(1000, shape, scale)
: Menghasilkan
1000 angka dari distribusi Gamma
dengan shape = 2 (jumlah kejadian) dan scale =
1.
Distribusi Gamma sering digunakan untuk memodelkan durasi suatu kejadian, misalnya lama hidup suatu komponen sebelum gagal.
Restoran cepat saji ingin memahami waktu tunggu pelanggan sebelum mereka dilayani. Diasumsikan bahwa waktu antara kedatangan pelanggan mengikuti Distribusi Eksponensial dengan rata-rata 3 menit per pelanggan. Kita akan mensimulasikan waktu tunggu selama satu bulan (30 hari) dan menghitung:
# Simulasi waktu tunggu pelanggan
set.seed(123)
n_days <- 30
n_customers_per_day <- 100 # Rata-rata pelanggan per hari
lambda_wait_time <- 1/3 # Rata-rata 3 menit per pelanggan
# Simulasi waktu tunggu untuk 30 hari
wait_time_data <- matrix(rexp(n_days * n_customers_per_day, rate = lambda_wait_time),
nrow = n_days, ncol = n_customers_per_day)
# 1. Rata-rata waktu tunggu per hari
mean_wait_time <- rowMeans(wait_time_data)
cat("Rata-rata waktu tunggu pelanggan dalam sehari:", mean(mean_wait_time), "menit\n")
## Rata-rata waktu tunggu pelanggan dalam sehari: 3.047558 menit
# 2. Probabilitas pelanggan menunggu lebih dari 5 menit
prob_above_5 <- sum(wait_time_data > 5) / length(wait_time_data)
cat("Probabilitas pelanggan menunggu lebih dari 5 menit:", prob_above_5, "\n")
## Probabilitas pelanggan menunggu lebih dari 5 menit: 0.1853333
# Plot histogram waktu tunggu pelanggan
hist(wait_time_data, breaks = 30, col = "skyblue",
main = "Distribusi Waktu Tunggu Pelanggan",
xlab = "Waktu Tunggu (menit)", ylab = "Frekuensi")
Kesimpulan