#Distribusi Poisson

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
# Memuat library ggplot2
library(ggplot2)

# Mengatur seed agar hasil rbinom bisa direproduksi (opsional)
set.seed(123)

# Menghasilkan data
z <- rbinom(n = 10, size = 1, prob = 0.7)
print(z)
##  [1] 1 0 1 0 0 1 1 0 1 1
# Mengubah vektor z menjadi data frame dan menjadikan tipe datanya sebagai factor (kategori)
df <- data.frame(z_kategori = as.factor(z))

# Membuat diagram batang dengan ggplot2
ggplot(data = df, aes(x = z_kategori, fill = z_kategori)) +
  geom_bar(color = "black") +
  scale_fill_manual(values = c("0" = "violet", "1" = "pink")) +
  labs(title = "Frekuensi Nilai 0 dan 1 pada Vektor z",
       x = "Nilai",
       y = "Frekuensi",
       fill = "Nilai") +
  theme_minimal()

#Distribusi Bernoulli

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
# Memuat library ggplot2
library(ggplot2)

# Menghasilkan data (set.seed agar hasil konsisten, opsional)
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
# Mengubah vektor z menjadi data frame dan tipe as.factor
df <- data.frame(z_kategori = as.factor(z))

# Membuat diagram lingkaran (pie chart)
ggplot(data = df, aes(x = "", fill = z_kategori)) +
  geom_bar(width = 1, stat = "count", color = "white") +
  coord_polar(theta = "y", start = 0) +
  scale_fill_manual(values = c("0" = "violet", "1" = "pink")) +
  labs(title = "Proporsi Nilai 0 dan 1 pada Vektor z",
       fill = "Nilai") +
  theme_void() # theme_void digunakan untuk menghilangkan garis sumbu (x dan y)

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
)