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(555)  # 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 = "lightskyblue")

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.

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

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

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.

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

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

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.

##Distribusi Eksponensial (Kontinu)

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

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

# 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

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.

Distribusi Diskrit (Binomial)

Misalkan kita memiliki percobaan pelemparan koin sebanyak 10 kali dengan probabilitas munculnya angka (sukses) adalah 0.5.

set.seed(999)
nDiskrit <- 1000  # jumlah simulasi
sizeDiskrit <- 10  # jumlah percobaan
probDiskrit <- 0.5  # probabilitas sukses

binomial_samples_diskrit <- rbinom(nDiskrit, sizeDiskrit, probDiskrit)
hist(binomial_samples_diskrit, main="Histogram Distribusi Binomial", col="cyan", xlab="Jumlah sukses", breaks=10)

Histogram menunjukkan distribusi jumlah keberhasilan dalam 10 percobaan. Semakin tinggi probabilitas sukses, semakin bergeser distribusi ke kanan.

Distribusi Kontinu (Normal)

Misalnya mensimulasikan 1000 sampel dari distribusi normal dengan rata-rata 50 dan standar deviasi 10.

set.seed(619)
nKontinu <- 1000  # jumlah sampel
meanKontinu <- 50  # rata-rata
sdKontinu <- 10  # standar deviasi

normal_samples_kontinu <- rnorm(nKontinu, meanKontinu, sdKontinu)
hist(normal_samples_kontinu, main="Histogram Distribusi Normal", col="magenta", xlab="Nilai", breaks=30, probability=TRUE)

# Tambahkan kurva densitas
curve(dnorm(x, meanKontinu, sdKontinu), col="cyan", lwd=2, add=TRUE)

Histogram menunjukkan bahwa data yang dihasilkan mengikuti distribusi normal dengan puncak di sekitar rata-rata 50. Kurva densitas normal (cyan) juga menunjukkan kecocokan dengan histogram.

2. Buat studi kasus sendiri yang melibatkan simulasi variabel random dari distribusi yang telah dipelajari.

Studi Kasus : Kak Shella adalah pemilik salah satu cafe di Semarang. Ia ingin memahami pola waktu tunggu pelanggan sebelum dilayani agar dapat mengoptimalkan jumlah barista yang dikerahkan. Berdasarkan data historis, diketahui bahwa waktu tunggu pelanggan mengikuti distribusi eksponensial dengan rata-rata 5 menit.

Kak Shella ingin mensimulasikan 1000 pelanggan untuk memahami distribusi waktu tunggu mereka dan memvisualisasikannya dalam histogram.

set.seed(111)  
nCafe <- 1000  # jumlah pelanggan yang disimulasikan
lambdaCafe <- 1/5  # parameter distribusi eksponensial (1/rata-rata waktu tunggu)

# Simulasi waktu tunggu
waiting_times_cafe <- rexp(nCafe, rate=lambdaCafe)

# Plot histogram waktu tunggu
hist(waiting_times_cafe, 
     main="Histogram Waktu Tunggu Pelanggan di Cafe Kak Shella", 
     col="lightgreen", 
     xlab="Waktu Tunggu (menit)", 
     breaks=30, 
     probability=TRUE)

# Tambahkan kurva distribusi eksponensial
curve(dexp(x, rate=lambda), col="red", lwd=2, add=TRUE)

1. Bentuk Histogram: Histogram menunjukkan bahwa sebagian besar pelanggan dilayani dalam waktu singkat (sekitar 5 menit), tetapi ada beberapa yang menunggu lebih lama.

  1. Distribusi Eksponensial: Kurva biru menunjukkan fungsi kepadatan probabilitas distribusi eksponensial, yang sesuai dengan histogram data simulasi.

  2. Implikasi kak Shella: -Mayoritas pelanggan menunggu kurang dari 10 menit.

-Ada kemungkinan kecil bahwa beberapa pelanggan akan menunggu lebih lama.

-Jika Kak Shella ingin mengurangi waktu tunggu, ia bisa menambah jumlah barista terutama pada jam sibuk.