#Distribusi Poisson

Y = rpois(n = 10, lambda = 4)
print(Y)
##  [1] 2 4 4 4 4 4 3 1 0 3
X = rpois(n = 10, lambda = 4)
print(X)
##  [1] 1 4 3 4 1 6 5 7 5 2
set.seed(0123)
Y = rpois(n = 10, lambda = 4)
print(Y)
##  [1] 3 6 3 6 7 1 4 7 4 4
X = rpois(n = 10, lambda = 4)
print(X)
##  [1] 8 4 5 4 2 7 3 1 3 8

#Distribusi Bernoulli

Z = rbinom(n=10, size=1, prob=0.3)
print(Z)
##  [1] 1 0 0 1 0 1 0 0 0 0
library(ggplot2)

# Data Bernoulli
Z <- c(0, 1, 0, 0, 1, 0, 1, 0, 0, 1)

print(Z)
##  [1] 0 1 0 0 1 0 1 0 0 1
# Menghitung jumlah Gagal dan Berhasil
data <- data.frame(
  Hasil = c("Gagal", "Berhasil"),
  Frekuensi = c(sum(Z == 0), sum(Z == 1))
)

# Grafik
ggplot(data, aes(x = Hasil, y = Frekuensi, fill = Hasil)) +
  geom_col(width = 0.6) +
  geom_text(
    aes(label = Frekuensi),
    vjust = -0.5,
    size = 5,
    fontface = "bold"
  ) +
  scale_fill_manual(
    values = c(
      "Gagal" = "skyblue",
      "Berhasil" = "orange"
    )
  ) +
  labs(
    title = "Distribusi Bernoulli",
    x = "Hasil",
    y = "Frekuensi",
    fill = "Hasil"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(
      size = 16,
      face = "bold",
      hjust = 0.5
    ),
    legend.position = "none"
  )

library(ggplot2)
Z <- rbinom(n = 10, size = 1, prob = 0.3)
print(Z)
##  [1] 1 1 0 1 0 0 1 0 0 0
data <- as.data.frame(table(Z))
colnames(data) <- c("Hasil", "Frekuensi")

ggplot(data, aes(x = "", y = Frekuensi, fill = Hasil)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y") +
  labs(
    title = "Diagram Lingkaran Distribusi Bernoulli",
    fill = "Hasil"
  ) +
  scale_fill_manual(
    values = c("0" = "lightblue", "1" = "lightpink"),
    labels = c("0" = "Gagal", "1" = "Berhasil")
  ) +
  theme_void()

library(ggplot2)

set.seed(123)

# Distribusi multinomial
Z <- rmultinom(
  n = 1,
  size = 10,
  prob = c(0.4, 0.35, 0.25)
)

print(Z)
##      [,1]
## [1,]    3
## [2,]    3
## [3,]    4
# Membuat data frame
data <- data.frame(
  Kategori = c("Cash", "QRIS", "Transfer"),
  Frekuensi = as.numeric(Z)
)

print(data)
##   Kategori Frekuensi
## 1     Cash         3
## 2     QRIS         3
## 3 Transfer         4
# Diagram lingkaran
ggplot(data, aes(x = "", y = Frekuensi, fill = Kategori)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y") +
  labs(
    title = "Distribusi Multinomial",
    fill = "Kategori"
  ) +
  scale_fill_manual(
    values = c(
      "Cash" = "skyblue",
      "QRIS" = "orange",
      "Transfer" = "lightgreen"
    )
  ) +
  theme_void()

library(ggplot2)

set.seed(123)

prob <- c(
  0.05, 0.05, 0.05, 0.05, 0.05,
  0.05, 0.05, 0.05, 0.05, 0.05,
  0.05, 0.05, 0.05, 0.10, 0.10
)

Z <- rmultinom(
  n = 1,
  size = 100,
  prob = prob
)

print(Z)
##       [,1]
##  [1,]    4
##  [2,]    8
##  [3,]    5
##  [4,]    9
##  [5,]    9
##  [6,]    2
##  [7,]    6
##  [8,]    9
##  [9,]    5
## [10,]    5
## [11,]    9
## [12,]    4
## [13,]    6
## [14,]   10
## [15,]    9
data <- data.frame(
  Kategori = paste("Produk", 1:15),
  Frekuensi = as.numeric(Z)
)

print(data)
##     Kategori Frekuensi
## 1   Produk 1         4
## 2   Produk 2         8
## 3   Produk 3         5
## 4   Produk 4         9
## 5   Produk 5         9
## 6   Produk 6         2
## 7   Produk 7         6
## 8   Produk 8         9
## 9   Produk 9         5
## 10 Produk 10         5
## 11 Produk 11         9
## 12 Produk 12         4
## 13 Produk 13         6
## 14 Produk 14        10
## 15 Produk 15         9
ggplot(data, aes(x = "", y = Frekuensi, fill = Kategori)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y") +
  labs(
    title = "Distribusi Multinomial 15 Kategori",
    fill = "Kategori"
  ) +
  scale_fill_manual(
    values = c(
      "Produk 1" = "red",
      "Produk 2" = "blue",
      "Produk 3" = "green",
      "Produk 4" = "orange",
      "Produk 5" = "purple",
      "Produk 6" = "yellow",
      "Produk 7" = "pink",
      "Produk 8" = "cyan",
      "Produk 9" = "brown",
      "Produk 10" = "gray",
      "Produk 11" = "magenta",
      "Produk 12" = "limegreen",
      "Produk 13" = "gold",
      "Produk 14" = "darkblue",
      "Produk 15" = "darkred"
    )
  ) +
  theme_void()

# ==========================================
# STUDI KASUS KUESIONER 50 RESPONDEN
# DISTRIBUSI MULTINOMIAL
# ==========================================

# 1. Data tingkat pendidikan
pendidikan <- c(
  SD = 5,
  SMP = 10,
  SMA = 20,
  Kuliah = 15
)

# 2. Data jenis pekerjaan
pekerjaan <- c(
  "Pelajar/Mahasiswa" = 20,
  PNS = 10,
  Swasta = 12,
  Wirausaha = 8
)

# ==========================================
# DIAGRAM BATANG PENDIDIKAN
# ==========================================

barplot(pendidikan,
        main = "Tingkat Pendidikan 50 Responden",
        xlab = "Tingkat Pendidikan",
        ylab = "Jumlah Responden",
        col = c("tomato", "skyblue", "lightgreen", "gold"))

# ==========================================
# PIE CHART PENDIDIKAN
# ==========================================

pie(pendidikan,
    main = "Tingkat Pendidikan 50 Responden",
    labels = paste(names(pendidikan),
                   pendidikan, "orang"),
    col = c("tomato", "skyblue", "lightgreen", "gold"))

# ==========================================
# DIAGRAM BATANG PEKERJAAN
# ==========================================

barplot(pekerjaan,
        main = "Jenis Pekerjaan 50 Responden",
        xlab = "Jenis Pekerjaan",
        ylab = "Jumlah Responden",
        col = c("tomato", "skyblue", "lightgreen", "gold"))

# ==========================================
# PIE CHART PEKERJAAN
# ==========================================

pie(pekerjaan,
    main = "Jenis Pekerjaan 50 Responden",
    labels = paste(names(pekerjaan),
                   pekerjaan, "orang"),
    col = c("tomato", "skyblue", "lightgreen", "gold"))

# =====================================================================
# 1. PENGATURAN DATA (Menggunakan data dari contoh sebelumnya)
# =====================================================================
set.seed(42)
kategori_pendidikan <- c("SD", "SMP", "SMA", "S1")
data_kampung <- sample(kategori_pendidikan, size = 10, replace = TRUE, prob = c(0.2, 0.2, 0.4, 0.2))

pekerjaan_responden <- sapply(data_kampung, function(edu) {
  if (edu == "S1") return(sample(c("PNS/Guru (Mengajar)", "Swasta"), size = 1, prob = c(0.8, 0.2)))
  else if (edu == "SMA") return(sample(c("Swasta", "Petani", "Belum Bekerja"), size = 1, prob = c(0.5, 0.3, 0.2)))
  else return(sample(c("Petani", "Swasta", "Belum Bekerja"), size = 1, prob = c(0.7, 0.1, 0.2)))
})

# Membuat matriks tabel silang (Wajib untuk membuat diagram batang gabungan)
tabel_gabungan <- table(pekerjaan_responden, data_kampung)


# =====================================================================
# 2. MEMBUAT DIAGRAM GABUNGAN (STACKED BAR CHART)
# =====================================================================

# Menyiapkan warna berbeda untuk setiap kategori pekerjaan
warna_pekerjaan <- c("#ff9999", "#66b3ff", "#99ff99", "#ffcc99")

# Membuat Diagram Batang Bertumpuk
barplot(tabel_gabungan, 
        main = "Diagram Hubungan Pendidikan dan Pekerjaan Responden",
        xlab = "Tingkat Pendidikan",
        ylab = "Jumlah Orang (Frekuensi)",
        col = warna_pekerjaan,
        legend.text = rownames(tabel_gabungan), # Menampilkan kotak keterangan (legend) jenis pekerjaan
        args.legend = list(x = "topright", bty = "n", inset = c(-0.05, 0)), # Posisi legend
        ylim = c(0, max(colSums(tabel_gabungan)) + 2)) # Memberikan ruang di atas batang

# ============================================================
# DATA
# ============================================================

pendidikan <- c("SD", "SMP", "SMA", "S1")

tabel_gabungan <- matrix(
  c(
    2, 1, 1,   # SD
    1, 2, 1,   # SMP
    1, 3, 2,   # SMA
    1, 2, 0    # S1
  ),
  nrow = 4,
  byrow = TRUE
)

rownames(tabel_gabungan) <- pendidikan

colnames(tabel_gabungan) <- c(
  "Petani",
  "Swasta",
  "Pedagang"
)

print(tabel_gabungan)
##     Petani Swasta Pedagang
## SD       2      1        1
## SMP      1      2        1
## SMA      1      3        2
## S1       1      2        0
# ============================================================
# DIAGRAM BATANG
# ============================================================

warna_pekerjaan <- c(
  "Petani" = "#66b3ff",
  "Swasta" = "#ff9999",
  "Pedagang" = "#99ff99"
)

posisi <- barplot(
  t(tabel_gabungan),
  main = "Hubungan Tingkat Pendidikan dan Pekerjaan",
  xlab = "Tingkat Pendidikan",
  ylab = "Jumlah Orang",
  col = warna_pekerjaan[colnames(tabel_gabungan)],
  beside = TRUE,
  ylim = c(0, 4),
  legend.text = colnames(tabel_gabungan),
  args.legend = list(
    x = "topright",
    bty = "n"
  )
)

# Angka di dalam batang
text(
  x = posisi,
  y = t(tabel_gabungan) / 2,
  labels = t(tabel_gabungan),
  col = "black",
  cex = 0.9
)