Pendahuluan

Variabel Random adalah variabel yang nilainya ditentukan oleh hasil dari suatu percobaan acak. Variabel random dapat dibagi menjadi dua jenis:

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.

Simulasi Sederhana: Variabel Random Uniform

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.

Simulasi Distribusi Diskrit: Distribusi Binomial

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.

Simulasi Distribusi Kontinu: Distribusi Normal

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.

Distribusi Poisson (Diskrit)

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.

Distribusi Eksponensial (Kontinu)

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.

Latihan Studi Kasus

Studi Kasus 1: Simulasi Pendapatan Bulanan

# 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.

Studi Kasus 2: Simulasi Jumlah Pelanggan

# 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.

Tugas Tambahan

  1. Buat simulasi untuk distribusi diskrit dan distribusi kontinu.
  2. Buat studi kasus sendiri yang melibatkan simulasi variabel random dari distribusi yang telah dipelajari.

1. Simulasi Distribusi Diskrit dan Kontinu

a. Simulasi Distribusi Diskrit: Distribusi Geometrik

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.

b. Simulasi Distribusi Kontinu: Distribusi Gamma

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.

2. Studi Kasus yang Melibatkan Simulasi Variabel random dari Distribusi yang telah dipelajari.

Studi Kasus: Simulasi Waktu Tunggu Pelanggan di Restoran (Distribusi Eksponensial)

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:

  1. Rata - rata waktu tunggu pelanggan dalam sehari
  2. Probabilitas pelanggan menunggu lebih dari 5 menit.
# 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

  • Model ini membantu restoran memahami waktu tunggu pelanggan dan menentukan apakah perlu meningkatkan jumlah staf atau efisiensi layanan.
  • Jika probabilitas pelanggan menunggu lebih dari 5 menit terlalu tinggi, restoran mungkin perlu meningkatkan kapasitas pelayanan.