Simulasi Sederhana: Variabel Random Uniform

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 = "blue")

runif(n, min, max) digunakan untuk menghasilkan n variabel random dan 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.

# 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 = "darkgreen")

rbinom(n, size, prob) digunakan untuk menghasilkan n variabel random dan 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 yangberbentuk 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 = "lightgreen")

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  # Parameter lambda
poisson_data <- rpois(n, lambda)
hist(poisson_data, breaks = 30, main = "Histogram Distribusi Poisson", xlab = "Jumlah Kejadian", col = "purple")

Distribusi Poisson digunakan untuk memodelkan jumlah kejadian langka dalam interval waktu atau ruang. Histogram menunjukkan distribusi yang mirim=ng ke kanan, yang khas untuk distribusi poisson dengan lambda kecil

Distribusi Eksponensial (Kontinu)

rate <- 1  # Parameter rate
exp_data <- rexp(n, rate)
hist(exp_data, breaks = 30, main = "Histogram Distribusi Eksponensial", xlab = "Nilai", col = "coral")

Distribusi eksponensial digunakan untuk memodelkan waktu antara kejadian dalam proses Poisson. Histogram menunjukkan distribusi data yang mirip 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_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

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.

Simulasi Distribusi Diskrit (Binomial)

Studi Kasus: Mesin Produksi dengan Tingkat Cacat

Sebuag pabrik memproduksi 100 unit per produk per jam, dan setiap produk memiliki peluang 5% mengalami cacat. Saya akan mensimulasikan jumlah produk cacat dalam 10 jam produksi.

# Simulasi Distribusi Binomial
set.seed(123)  # Untuk hasil yang bisa direproduksi
n <- 100       # Jumlah produk per jam
p <- 0.05      # Peluang cacat
jam_produksi <- 10  # Jumlah jam simulasi

# Simulasi jumlah produk cacat setiap jam
cacat_per_jam <- rbinom(jam_produksi, n, p)

# Visualisasi dengan barplot
barplot(cacat_per_jam, names.arg = 1:jam_produksi, col = "blue",
        main = "Simulasi Produk Cacat dalam 10 Jam",
        xlab = "Jam ke-", ylab = "Jumlah Produk Cacat")

Histogram menunjukkan jumlah produk cacat per jam selama 10 jam produksi dengan bentuk grafik batang.

Simulasi Distribusi Kontinu (Eksponensial)

Studi kasus: Waktu tunggu pelanggan di restoran

Rata-rata waktu tunggu pelanggan di restoran adalah 5 menit. Saya akan mensimulasikan waktu tunggu 50 pelanggan menggunakan distribusi eksponensial

# Simulasi Distribusi Eksponensial
set.seed(123)  # Untuk hasil yang bisa direproduksi
lambda <- 1/5  # Rata-rata waktu tunggu 5 menit
jumlah_pelanggan <- 50

# Simulasi waktu tunggu pelanggan
waktu_tunggu <- rexp(jumlah_pelanggan, rate = lambda)

# Visualisasi dengan histogram
hist(waktu_tunggu, breaks = 10, col = "pink", border = "black",
     main = "Simulasi Waktu Tunggu Pelanggan",
     xlab = "Waktu Tunggu (menit)", ylab = "Frekuensi")

Histogram emnunjukkan distribusi waktu tunggu pelanggan, dengan lebih banyak pelanggan yang menunggu dalam waktu singkat dan sedikit pelanggan yang menunggu lebih lama.