# Distribusi Hipergeometrik

# Contoh
set.seed(123)
y <- rhyper(100, 8, 12, 5)
y
##   [1] 1 3 2 3 3 0 2 3 2 2 4 2 2 2 1 3 1 0 2 4 3 2 2 4 2 3 2 2 1 1 4 3 2 3 0 2 3
##  [38] 1 2 1 1 2 2 2 1 1 1 2 1 3 0 2 3 1 2 1 1 3 3 2 2 1 2 1 3 2 3 3 3 2 3 2 3 0
##  [75] 2 1 2 2 2 1 1 2 2 3 1 2 4 3 3 1 1 2 2 2 2 1 3 1 2 2
# Distribusi Poisson
# Contoh
set.seed(0123)
y <- rpois(n=10,lambda  =4)
print(y)
##  [1] 3 6 3 6 7 1 4 7 4 4
y <- rpois(100, lambda = 4)

barplot(table(y),
        main = "Distribusi Poisson",
        xlab = "Nilai X",
        ylab = "Frekuensi")

y <- rbinom(n=10,size = 1, prob =0.5)
print(y)
##  [1] 1 0 0 1 1 0 1 1 1 0
barplot(table(y),
        main = "Distribusi binom",
        xlab = "Nilai X",
        ylab = "Frekuensi")

library(ggplot2)

data <- as.data.frame(table(y))
names(data) <- c("x", "frekuensi")

ggplot(data, aes(x = "", y = frekuensi, fill = x)) +
  geom_bar(stat = "identity") +
  coord_polar("y") +
  labs(
    title = "Diagram Lingkaran Distribusi binom",
    fill = "Nilai X"
  ) +
  theme_void()

library(ggplot2)

# Distribusi Multinomial
y <- rmultinom(100, size = 1, prob = c(0.2, 0.3, 0.5))

# Data
data <- data.frame(
  kategori = c("A", "B", "C"),
  frekuensi = as.vector(y)
)

# Diagram lingkaran
ggplot(data, aes(x = "", y = frekuensi, fill = kategori)) +
  geom_bar(stat = "identity") +
  coord_polar("y") +
  labs(
    title = "Distribusi Multinomial",
    fill = "Kategori"
  ) +
  theme_void()

# Distribusi Multinomial

y <- rmultinom(1, 100, c(0.2, 0.3, 0.5))

data <- data.frame(
  kategori = c("A", "B", "C"),
  frekuensi = as.vector(y)
)

ggplot(data, aes(x = kategori, y = frekuensi, fill = kategori)) +
  geom_col() +
  labs(
    title = "Bar Chart Distribusi Multinomial",
    x = "Kategori",
    y = "Frekuensi"
  )

library(ggplot2)

# =========================
# 1. SIMULASI DATA PENDIDIKAN
# =========================

y <- rmultinom(1, 100, c(0.10, 0.20, 0.40, 0.30))

data_pendidikan <- data.frame(
  pendidikan = c("Tamat SD", "Tamat SMP", "Tamat SMA", "Tamat Perguruan Tinggi"),
  jumlah = as.vector(y)
)

# Bar Chart Pendidikan
ggplot(data_pendidikan, aes(x = pendidikan, y = jumlah, fill = pendidikan)) +
  geom_col() +
  geom_text(aes(label = jumlah), vjust = -0.5) +
  labs(
    title = "Simulasi Data Pendidikan Responden",
    x = "Pendidikan Terakhir",
    y = "Jumlah Responden"
  )

# Pie Chart Pendidikan
ggplot(data_pendidikan, aes(x = "", y = jumlah, fill = pendidikan)) +
  geom_col(width = 1) +
  coord_polar("y") +
  geom_text(
    aes(label = jumlah),
    position = position_stack(vjust = 0.5)
  ) +
  labs(
    title = "Diagram Lingkaran Pendidikan Responden",
    fill = "Pendidikan"
  ) +
  theme_void()

# =========================
# 2. SIMULASI DATA PEKERJAAN
# =========================

y <- rmultinom(1, 100, c(0.25, 0.20, 0.15, 0.25, 0.15))

data_pekerjaan <- data.frame(
  pekerjaan = c("Petani", "Pedagang", "PNS", "Karyawan Swasta", "Tidak Bekerja"),
  jumlah = as.vector(y)
)

# Bar Chart Pekerjaan
ggplot(data_pekerjaan, aes(x = pekerjaan, y = jumlah, fill = pekerjaan)) +
  geom_col() +
  geom_text(aes(label = jumlah), vjust = -0.5) +
  labs(
    title = "Simulasi Data Jenis Pekerjaan Responden",
    x = "Jenis Pekerjaan",
    y = "Jumlah Responden"
  )

# Pie Chart Pekerjaan
ggplot(data_pekerjaan, aes(x = "", y = jumlah, fill = pekerjaan)) +
  geom_col(width = 1) +
  coord_polar("y") +
  geom_text(
    aes(label = jumlah),
    position = position_stack(vjust = 0.5)
  ) +
  labs(
    title = "Diagram Lingkaran Jenis Pekerjaan Responden",
    fill = "Pekerjaan"
  ) +
  theme_void()

set.seed(789)

# 1. Parameter Simulasi
n_responden <- 200

pendidikan_levels <- c("SD", "SMP", "SMA", "D3", "S1", "S2")
p_pendidikan <- c(0.05, 0.10, 0.35, 0.15, 0.30, 0.05)

jabatan_levels <- c("Intern", "Staff", "Supervisor", "Manager", "Director")
p_jabatan <- c(0.15, 0.45, 0.20, 0.15, 0.05)

# 2. Membuat Data Frame 2 Variabel
df_karyawan <- data.frame(
  Pendidikan = factor(sample(pendidikan_levels, n_responden, replace = TRUE, prob = p_pendidikan), levels = pendidikan_levels),
  Jabatan    = factor(sample(jabatan_levels, n_responden, replace = TRUE, prob = p_jabatan), levels = jabatan_levels)
)

# 3. Membuat Tabel Silang (Cross-Tabulation)
# Baris: Jabatan (untuk warna bertumpuk), Kolom: Pendidikan (untuk sumbu X)
tabel_silang <- table(df_karyawan$Jabatan, df_karyawan$Pendidikan)
print("Tabel Silang Jabatan vs Pendidikan:")
## [1] "Tabel Silang Jabatan vs Pendidikan:"
print(tabel_silang)
##             
##              SD SMP SMA D3 S1 S2
##   Intern      0   2  18  7 13  0
##   Staff       2  10  29 15 24  2
##   Supervisor  2   3  10  8  7  3
##   Manager     0   1  15  5 12  1
##   Director    1   1   2  3  3  1
# 4. Warna untuk Setiap Jabatan (5 Warna)
warna_jabatan <- c("#9ECAE1", "#4292C6", "#2171B5", "#08519C", "#08306B")

# 5. Membuat Diagram Batang Bertumpuk (Stacked Barplot)
barplot(tabel_silang,
        main = "Distribusi Jabatan Berdasarkan Tingkat Pendidikan",
        xlab = "Tingkat Pendidikan",
        ylab = "Jumlah Responden",
        col = warna_jabatan,
        border = "white",
        ylim = c(0, max(colSums(tabel_silang)) + 15))

# Menambahkan Legenda Kategori Jabatan
legend("topright",
       legend = rownames(tabel_silang),
       fill = warna_jabatan,
       title = "Jabatan",
       bg = "white",
       cex = 0.8)

set.seed(789)

# 1. Parameter Simulasi
n_responden <- 200

pendidikan_levels <- c("SD", "SMP", "SMA", "D3", "S1", "S2")
p_pendidikan <- c(0.05, 0.10, 0.35, 0.15, 0.30, 0.05)

jabatan_levels <- c("Intern", "Staff", "Supervisor", "Manager", "Director")
p_jabatan <- c(0.15, 0.45, 0.20, 0.15, 0.05)

# 2. Membuat Data
df_karyawan <- data.frame(
  Pendidikan = factor(
    sample(pendidikan_levels, n_responden,
           replace = TRUE, prob = p_pendidikan),
    levels = pendidikan_levels
  ),
  Jabatan = factor(
    sample(jabatan_levels, n_responden,
           replace = TRUE, prob = p_jabatan),
    levels = jabatan_levels
  )
)

# 3. Tabel Silang
tabel_silang <- table(
  df_karyawan$Jabatan,
  df_karyawan$Pendidikan
)

print(tabel_silang)
##             
##              SD SMP SMA D3 S1 S2
##   Intern      0   2  18  7 13  0
##   Staff       2  10  29 15 24  2
##   Supervisor  2   3  10  8  7  3
##   Manager     0   1  15  5 12  1
##   Director    1   1   2  3  3  1
# 4. Warna
warna_jabatan <- c(
  "#9ECAE1",
  "#4292C6",
  "#2171B5",
  "#08519C",
  "#08306B"
)

# 5. Diagram Batang Berdampingan
posisi <- barplot(
  tabel_silang,
  main = "Distribusi Jabatan Berdasarkan Tingkat Pendidikan",
  xlab = "Tingkat Pendidikan",
  ylab = "Jumlah Responden",
  col = warna_jabatan,
  border = "white",
  beside = TRUE,
  ylim = c(0, max(tabel_silang) + 15)
)

# 6. Menambahkan Angka pada Setiap Batang
text(
  x = posisi,
  y = as.vector(tabel_silang),
  labels = as.vector(tabel_silang),
  pos = 3,
  cex = 0.8
)

# 7. Legenda
legend(
  "topright",
  legend = rownames(tabel_silang),
  fill = warna_jabatan,
  title = "Jabatan",
  bg = "white",
  cex = 0.8
)