y= rpois (n=10, lambda=4)
print(y)
##  [1] 4 6 3 6 5 4 1 4 2 7
y= rpois (n=10, lambda=4)
print(y)
##  [1] 3 9 6 2 5 5 2 2 1 4
set.seed(123)
set.seed(1)
set.seed(2)
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
z = rbinom (n=10, size=1, prob = 0.3)
print(z)
##  [1] 1 0 0 0 0 1 0 0 0 1
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
set.seed(123)
df <- data.frame(x = rpois(n = 10, lambda = 4))

ggplot(df, aes(x = x)) +
  geom_bar(fill = "steelblue", color = "black", alpha = 0.8) +
  scale_x_continuous(breaks = min(df$x):max(df$x)) +
  labs(title = "Distribusi Poisson (lambda = 4)",
       x = "Nilai (x)",
       y = "Frekuensi") +
  theme_minimal()

library(ggplot2)

set.seed(123)
# n = jumlah sampel, size = jumlah percobaan per sampel, prob = peluang sukses
df <- data.frame(x = rbinom(n = 100, size = 10, prob = 0.5))

ggplot(df, aes(x = x)) +
  geom_bar(fill = "steelblue", color = "black", alpha = 0.8) +
  scale_x_continuous(breaks = min(df$x):max(df$x)) +
  labs(title = "Distribusi Binomial (size = 10, prob = 0.5)",
       x = "Nilai (x)",
       y = "Frekuensi") +
  theme_minimal()

# Menggunakan titik (.) untuk angka desimal 0.7
z = rbinom(n = 10, size = 1, prob = 0.5)
set.seed(1)

# Menampilkan hasil variabel z
print(z)
##  [1] 1 0 0 1 0 1 1 1 0 0
# Menampilkan Diagram
# 1. Atur seed di paling atas agar hasil konsisten
set.seed(1)

# 2. Bangkitkan data Bernoulli (probabilitas diganti 0.5 sesuai kode Anda)
z = rbinom(n = 10, size = 1, prob = 0.5)

# 3. Menampilkan hasil variabel z ke console
print("Data z:")
## [1] "Data z:"
print(z)
##  [1] 0 0 1 1 0 1 1 1 1 0
# 4. Membuat tabel frekuensi untuk menghitung jumlah 0 dan 1
tabel_z <- table(z)

# 5. MENAMPILKAN DIAGRAM BATANG
barplot(tabel_z, 
        main = "Diagram Batang Distribusi Bernoulli (z)",
        xlab = "Nilai (0 = Gagal, 1 = Sukses)",
        ylab = "Frekuensi / Jumlah Muncul",
        col = c("tomato", "skyblue"),
        names.arg = c("0 (Gagal)", "1 (Sukses)"))

# 1. Bangkitkan data
data_multinomial <- rmultinom(n = 1, size = 100, prob = c(0.2, 0.5, 0.3))

# 2. Buat tabelnya (PASTIKAN BARIS INI IKUT TER-RUN)
tabel_multinomial <- as.table(setNames(as.vector(data_multinomial), c("Kategori A", "Kategori B", "Kategori C")))

# 3. Cetak dan buat Pie Chart
print(tabel_multinomial)
## Kategori A Kategori B Kategori C 
##         17         53         30
label_multinomial <- paste(names(tabel_multinomial), "\n(", tabel_multinomial, " Sampel)", sep="")

pie(tabel_multinomial, 
    labels = label_multinomial, 
    main = "Pie Chart Distribusi Multinomial",
    col = c("#ff9999", "#66b3ff", "#99ff99"))

# ==========================================
# 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("#999", "#3ff", "#f99", "#c99")

# 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

# =====================================================================
# 1. PENGATURAN DATA
# =====================================================================
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 tabel silang
tabel_gabungan <- table(
  pekerjaan_responden,
  data_kampung
)


# =====================================================================
# 2. MEMBUAT DIAGRAM BATANG BERTUMPUK
# =====================================================================

# Warna untuk masing-masing jenis pekerjaan
warna_pekerjaan <- c(
  "#999999",
  "#3FF3FF",
  "#F99999",
  "#C99999"
)

# Membuat diagram dan menyimpan posisi batang
posisi <- 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),
  args.legend = list(
    x = "topright",
    bty = "n",
    inset = c(-0.05, 0)
  ),
  ylim = c(0, max(colSums(tabel_gabungan)) + 2)
)


# =====================================================================
# 3. MENAMPILKAN ANGKA PADA SETIAP BAGIAN BATANG
# =====================================================================

# Menghitung posisi tengah setiap bagian batang
for (i in 1:ncol(tabel_gabungan)) {

  # Nilai kumulatif untuk menentukan posisi Y
  nilai_kumulatif <- cumsum(tabel_gabungan[, i])

  # Posisi tengah masing-masing bagian
  posisi_y <- nilai_kumulatif - tabel_gabungan[, i] / 2

  # Menampilkan angka
  text(
    x = posisi[i],
    y = posisi_y,
    labels = tabel_gabungan[, i],
    cex = 0.9,
    font = 2
  )
}