Simulasi Sederhana: Variabel Random Uniform

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

Simulasi Distribusi Diskrit: Distribusi Binomial

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

Simulasi Distribusi Kontinu: Distribusi Normal

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

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

Distribusi Eksponensial (Kontinu)

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

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
## 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
## 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
## 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
## Probabilitas jumlah pelanggan lebih dari 60: 0.03333333

TUGAS

  1. Buat simulasi untuk distribusi diskrit dan distribusi kontinu.

Distribusi Diskrit - Contoh: Distribusi Binomial

# Simulasi distribusi Binomial
set.seed(123)
n <- 1000 # jumlah simulasi
size <- 10 # jumlah percobaan per simulasi
prob <- 0.5 # probabilitas sukses

data_binomial <- rbinom(n, size, prob)

# Visualisasi
hist(data_binomial, breaks=10, col="skyblue", main="Simulasi Distribusi Binomial",
     xlab="Jumlah sukses", ylab="Frekuensi")

Distribusi Kontinu – Contoh: Distribusi Normal

# Simulasi distribusi Normal
set.seed(123)
n <- 1000
mean <- 0
sd <- 1

data_normal <- rnorm(n, mean, sd)

# Visualisasi
hist(data_normal, breaks=30, col="lightgreen", main="Simulasi Distribusi Normal",
     xlab="Nilai", ylab="Frekuensi")

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

Sebagai contoh studi kasus, diasumsikan seorang analis cuaca ingin melakukan simulasi jumlah hari hujan selama satu bulan (30 hari). Setiap harinya memiliki peluang 30% untuk terjadi hujan, sehingga dapat dimodelkan menggunakan distribusi Binomial.

Selain itu, jika pada suatu hari terjadi hujan, maka curah hujan (dalam satuan milimeter) juga ingin disimulasikan. Dalam hal ini, diasumsikan bahwa curah hujan mengikuti distribusi Eksponensial, dengan anggapan bahwa semakin besar curah hujan, maka kemungkinan kejadiannya semakin jarang.

set.seed(456)
days <- 30
prob_rain <- 0.3

# Simulasi apakah hujan atau tidak setiap hari
rain_days <- rbinom(days, 1, prob_rain)

# Simulasi curah hujan (mm) jika hujan, dari distribusi Eksponensial (λ = 0.2)
lambda <- 0.2
rain_amount <- ifelse(rain_days == 1, rexp(days, rate = lambda), 0)

# Gabungkan jadi data frame
weather_data <- data.frame(
  Hari = 1:30,
  Hujan = rain_days,
  Curah_Hujan = round(rain_amount, 2)
)

print(weather_data)
##    Hari Hujan Curah_Hujan
## 1     1     0        0.00
## 2     2     0        0.00
## 3     3     1        3.18
## 4     4     1        1.10
## 5     5     1        3.61
## 6     6     0        0.00
## 7     7     0        0.00
## 8     8     0        0.00
## 9     9     0        0.00
## 10   10     0        0.00
## 11   11     0        0.00
## 12   12     0        0.00
## 13   13     1        0.48
## 14   14     1        3.55
## 15   15     0        0.00
## 16   16     0        0.00
## 17   17     1        3.99
## 18   18     0        0.00
## 19   19     1       19.63
## 20   20     0        0.00
## 21   21     0        0.00
## 22   22     1        6.85
## 23   23     1        0.68
## 24   24     0        0.00
## 25   25     1        0.88
## 26   26     1       11.47
## 27   27     1        3.47
## 28   28     0        0.00
## 29   29     0        0.00
## 30   30     0        0.00
# Visualisasi
barplot(weather_data$Curah_Hujan,
        names.arg = weather_data$Hari,
        col = "blue",
        main = "Simulasi Curah Hujan selama 30 Hari",
        xlab = "Hari",
        ylab = "Curah Hujan (mm)")