# ==============================================================================
# 1. DISTRIBUSI BINOMIAL
# ==============================================================================
# Peluang tepat 3 kali, P(X = 3)
dbinom(x = 3, size = 10, prob = 0.5)
## [1] 0.1171875
# Peluang maksimal 3 kali, P(X <= 3)
pbinom(q = 3, size = 10, prob = 0.5)
## [1] 0.171875
# Membangkitkan 5 data acak binomial
rbinom(n = 5, size = 10, prob = 0.5)
## [1] 4 6 4 5 7
# ==============================================================================
# 2. DISTRIBUSI POISSON
# ==============================================================================
# Peluang tepat 2 pembeli, P(X = 2)
dpois(x = 2, lambda = 4)
## [1] 0.1465251
# Peluang lebih dari 5 pembeli, P(X > 5)
ppois(q = 5, lambda = 4, lower.tail = FALSE)
## [1] 0.2148696
# ==============================================================================
# 3. DISTRIBUSI NORMAL
# ==============================================================================
# Peluang tinggi badan <= 165 cm, P(X <= 165)
pnorm(q = 165, mean = 170, sd = 10)
## [1] 0.3085375
# Nilai tinggi badan pada persentil ke-95
qnorm(p = 0.95, mean = 170, sd = 10)
## [1] 186.4485
# Membangkitkan 5 data tinggi badan acak
rnorm(n = 5, mean = 170, sd = 10)
## [1] 164.7136 165.0228 153.5690 171.5845 159.3746
# ==============================================================================
# 4. DISTRIBUSI EKSPONENSIAL
# ==============================================================================
# Peluang waktu tunggu <= 3 menit, P(X <= 3)
pexp(q = 3, rate = 0.2)
## [1] 0.4511884
# ==============================================================================
# 5. DISTRIBUSI UNIFORM DAN t-STUDENT
# ==============================================================================
# Membangkitkan 3 angka acak Uniform [10, 50]
runif(n = 3, min = 10, max = 50)
## [1] 47.51696 37.81113 40.55255
# Nilai kritis t ekor kanan (alpha = 0.05, df = 20)
qt(p = 0.05, df = 20, lower.tail = FALSE)
## [1] 1.724718
# ==============================================================================
# 6. SET.SEED (MENGUNCI HASIL ACAK)
# ==============================================================================
# Tanpa set.seed: hasil berubah setiap dijalankan
y <- rpois(n = 10, lambda = 4)
print(y)
## [1] 8 8 2 4 2 3 2 4 4 7
# Dengan set.seed: hasil selalu sama
set.seed(123)
y <- rpois(n = 10, lambda = 4)
print(y)
## [1] 3 6 3 6 7 1 4 7 4 4
# Seed berbeda menghasilkan data berbeda
set.seed(1)
y <- rpois(n = 10, lambda = 4)
print(y)
## [1] 3 3 4 7 2 7 7 5 5 1
set.seed(2)
y <- rpois(n = 10, lambda = 4)
print(y)
## [1] 2 5 4 2 7 7 2 6 4 4
# ==============================================================================
# 7. DISTRIBUSI BERNOULLI (BINOMIAL DENGAN size = 1)
# ==============================================================================
# Bernoulli dengan peluang sukses 0.7
set.seed(123)
z <- rbinom(n = 10, size = 1, prob = 0.7)
print(z)
## [1] 1 0 1 0 0 1 1 0 1 1
# Bernoulli dengan peluang sukses 0.5
set.seed(123)
z <- rbinom(n = 10, size = 1, prob = 0.5)
print(z)
## [1] 0 1 0 1 1 0 1 1 1 0
# ==============================================================================
# 8. BARPLOT DATA POISSON
# ==============================================================================
# Data Poisson
set.seed(123)
y <- rpois(n = 10, lambda = 4)
print(y)
## [1] 3 6 3 6 7 1 4 7 4 4
# Diagram batang (cocok untuk data diskrit)
barplot(
table(y),
col = "skyblue",
border = "black",
main = "Frekuensi Data Distribusi Poisson (lambda = 4)",
xlab = "Nilai y",
ylab = "Frekuensi"
)

# ==============================================================================
# 9. PIE CHART DATA POISSON
# ==============================================================================
# Tabel frekuensi, persen, dan label
frekuensi <- table(y)
persen <- round(100 * frekuensi / sum(frekuensi), 1)
label_pie <- paste(names(frekuensi), "-", persen, "%")
# Warna disimpan di satu variabel agar pie dan legend selalu cocok
warna_pie <- c("lightblue", "mistyrose", "lightcyan", "plum", "cornsilk")
# Diagram lingkaran
pie(
frekuensi,
labels = label_pie,
main = "Proporsi Nilai Data Poisson",
col = warna_pie
)
# Legend
legend(
"topright",
legend = names(frekuensi),
title = "Nilai y",
fill = warna_pie
)

# ==============================================================================
# 10. PIE CHART BERNOULLI
# ==============================================================================
# Tabel frekuensi dihitung ulang dari data z
frekuensi <- table(z)
persen <- round(100 * frekuensi / sum(frekuensi), 1)
label_pie <- paste(names(frekuensi), "-", persen, "%")
# Diagram lingkaran
pie(
frekuensi,
labels = label_pie,
main = "Diagram Lingkaran Distribusi Bernoulli",
col = c("coral", "lightgreen")
)
# Legend
legend(
"topright",
legend = c("Nilai 0", "Nilai 1"),
fill = c("coral", "lightgreen")
)

# ==============================================================================
# 11. DISTRIBUSI MULTINOMIAL (3 KATEGORI) DAN BARPLOT
# ==============================================================================
# Data multinomial: n = 100, peluang c(0.2, 0.5, 0.3)
set.seed(123)
data_mult <- rmultinom(n = 1, size = 100, prob = c(0.2, 0.5, 0.3))
# Ubah ke vektor frekuensi dan beri nama
frekuensi <- as.vector(data_mult)
names(frekuensi) <- c("Kategori A", "Kategori B", "Kategori C")
print(frekuensi)
## Kategori A Kategori B Kategori C
## 18 45 37
# Diagram batang, posisi batang disimpan di bp
bp <- barplot(
frekuensi,
main = "Diagram Batang Distribusi Multinomial (3 Kategori)",
xlab = "Kategori",
ylab = "Frekuensi",
col = c("skyblue", "lightgreen", "coral"),
border = "black",
ylim = c(0, max(frekuensi) + 10)
)
# Angka jumlah di atas setiap batang
text(x = bp, y = frekuensi + 3, labels = frekuensi)

# ==============================================================================
# 12. MULTINOMIAL: PENDIDIKAN 10 RESPONDEN (BARPLOT)
# ==============================================================================
# Data: SD = 0.4, SMP = 0.35, SMA = 0.25
set.seed(123)
data_pendidikan <- rmultinom(n = 1, size = 10, prob = c(0.4, 0.35, 0.25))
# Ubah ke vektor frekuensi dan beri nama
frekuensi <- as.vector(data_pendidikan)
names(frekuensi) <- c("SD", "SMP", "SMA")
print(frekuensi)
## SD SMP SMA
## 3 3 4
# Diagram batang
bp <- barplot(
frekuensi,
main = "Tingkat Pendidikan 10 Responden Kampung",
xlab = "Tingkat Pendidikan",
ylab = "Jumlah Responden (Orang)",
col = c("coral", "khaki", "lightgreen"),
border = "black",
ylim = c(0, max(frekuensi) + 2)
)
# Angka jumlah responden di atas batang
text(x = bp, y = frekuensi + 0.3, labels = frekuensi)

# ==============================================================================
# 13. PIE CHART PENDIDIKAN 10 RESPONDEN
# ==============================================================================
# Persen dan label (dengan baris baru \n)
persen <- round(100 * frekuensi / sum(frekuensi), 1)
label_pie <- paste(names(frekuensi), "\n", frekuensi, "orang (", persen, "%)", sep = "")
# Diagram lingkaran
pie(
frekuensi,
labels = label_pie,
main = "Persentase Tingkat Pendidikan 10 Responden Kampung",
col = c("coral", "khaki", "lightgreen")
)
# Legend
legend(
"topright",
legend = names(frekuensi),
fill = c("coral", "khaki", "lightgreen"),
title = "Tingkat Pendidikan"
)

# ==============================================================================
# 14. STACKED BARPLOT: PENDIDIKAN VS PEKERJAAN
# ==============================================================================
# Matriks data (baris = pekerjaan, kolom = pendidikan)
data_gabungan <- matrix(
c(2, 1, # SD : 2 Petani, 1 Buruh
1, 3, # SMP : 1 Petani, 3 Buruh
2, 1), # SMA : 2 Petani, 1 Buruh
nrow = 2,
byrow = FALSE,
dimnames = list(
Pekerjaan = c("Petani", "Buruh"),
Pendidikan = c("SD", "SMP", "SMA")
)
)
print(data_gabungan)
## Pendidikan
## Pekerjaan SD SMP SMA
## Petani 2 1 2
## Buruh 1 3 1
# Warna disimpan di satu variabel agar barplot dan legend cocok
warna_pekerjaan <- c("forestgreen", "orange")
# Diagram batang bertumpuk
bp <- barplot(
data_gabungan,
main = "Tingkat Pendidikan dan Pekerjaan 10 Responden",
xlab = "Tingkat Pendidikan",
ylab = "Jumlah Responden (Orang)",
col = warna_pekerjaan,
border = "black",
ylim = c(0, max(colSums(data_gabungan)) + 2)
)
# Legend keterangan pekerjaan
legend(
"topright",
legend = rownames(data_gabungan),
fill = warna_pekerjaan,
title = "Pekerjaan"
)
# Label total responden di atas setiap batang
text(x = bp, y = colSums(data_gabungan) + 0.3, labels = colSums(data_gabungan))
