#Distribusi Poisson
set.seed(123)
data_poisson <- rpois(n = 100, lambda = 5)
head(data_poisson)
## [1] 4 7 4 8 9 2
## [1] 4 7 4 8 9 2
hist(data_poisson, main = "Distribusi Poisson", col = "pink")

#Distribusi Binomial
y=rpois(n=10, lambda=4)
print(y)
##  [1] 4 3 4 8 4 7 7 4 3 2
##  [1] 4 3 4 8 4 7 7 4 3 2
x=rpois(n=10,lambda=4)
print(x)
##  [1] 7 3 1 7 5 2 4 8 4 3
##  [1] 7 3 1 7 5 2 4 8 4 3
set.seed(123)
y=rpois(n=10, lambda=4)
print(y)
##  [1] 3 6 3 6 7 1 4 7 4 4
##  [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
##  [1] 8 4 5 4 2 7 3 1 3 8
# n = jumlah percobaan, size = jumlah trial, prob = peluang sukses
set.seed(123)
data_binom <- rbinom(n = 100, size = 10, prob = 0.5)
print(data_binom)
##   [1] 4 6 5 7 7 2 5 7 5 5 8 5 6 5 3 7 4 2 4 8 7 6 6 9 6 6 5 5 4 3 8 7 6 6 2 5 6
##  [38] 4 4 4 3 5 5 4 3 3 4 5 4 7 2 5 6 3 5 4 3 6 7 4 6 3 5 4 6 5 6 6 6 5 6 6 6 0
##  [75] 5 4 5 5 4 3 4 6 5 6 3 5 8 7 7 4 3 6 4 6 4 4 6 3 5 5
##   [1] 4 6 5 7 7 2 5 7 5 5 8 5 6 5 3 7 4 2 4 8 7 6 6 9 6 6 5 5 4 3 8 7 6 6 2 5 6
##  [38] 4 4 4 3 5 5 4 3 3 4 5 4 7 2 5 6 3 5 4 3 6 7 4 6 3 5 4 6 5 6 6 6 5 6 6 6 0
##  [75] 5 4 5 5 4 3 4 6 5 6 3 5 8 7 7 4 3 6 4 6 4 4 6 3 5 5
table(data_binom)
## data_binom
##  0  2  3  4  5  6  7  8  9 
##  1  4 12 20 24 24 10  4  1
## data_binom
##  0  2  3  4  5  6  7  8  9 
##  1  4 12 20 24 24 10  4  1
# Visualisasi
barplot(table(data_binom), main = "Distribusi Binomial", 
        xlab = "Nilai", ylab = "Frekuensi", col = "skyblue")

#Distribusi Poisson
# lambda = rata-rata kejadian
set.seed(123)
data_pois <- rpois(n = 100, lambda = 3)
print(data_pois)
##   [1] 2 4 2 5 6 0 3 5 3 3 6 3 4 3 1 5 2 0 2 6 5 4 3 8 4 4 3 3 2 1 6 5 4 4 0 3 4
##  [38] 2 2 2 1 2 2 2 1 1 2 3 2 5 0 3 4 1 3 2 1 4 5 2 4 1 2 2 4 3 4 4 4 3 4 3 4 0
##  [75] 3 2 2 3 2 1 2 4 2 4 1 3 7 5 5 1 1 4 2 4 2 1 4 1 3 3
##   [1] 2 4 2 5 6 0 3 5 3 3 6 3 4 3 1 5 2 0 2 6 5 4 3 8 4 4 3 3 2 1 6 5 4 4 0 3 4
##  [38] 2 2 2 1 2 2 2 1 1 2 3 2 5 0 3 4 1 3 2 1 4 5 2 4 1 2 2 4 3 4 4 4 3 4 3 4 0
##  [75] 3 2 2 3 2 1 2 4 2 4 1 3 7 5 5 1 1 4 2 4 2 1 4 1 3 3
table(data_pois)
## data_pois
##  0  1  2  3  4  5  6  7  8 
##  5 14 24 20 22  9  4  1  1
## data_pois
##  0  1  2  3  4  5  6  7  8 
##  5 14 24 20 22  9  4  1  1
barplot(table(data_pois), main = "Distribusi Poisson",
        xlab = "Nilai", ylab = "Frekuensi", col = "red")

#Distribusi Multinomial
set.seed(123)
y=rpois(n=10, lambda=4)
print(y)
##  [1] 3 6 3 6 7 1 4 7 4 4
##  [1] 3 6 3 6 7 1 4 7 4 4
set.seed(123)
x=rpois(n=10, lambda=4)
print(x)
##  [1] 3 6 3 6 7 1 4 7 4 4
##  [1] 3 6 3 6 7 1 4 7 4 4
set.seed(2)
y=rpois(n=10, lambda=4)
print(y)
##  [1] 2 5 4 2 7 7 2 6 4 4
##  [1] 2 5 4 2 7 7 2 6 4 4
set.seed(2)
x=rpois(n=10, lambda=4)
print(x)
##  [1] 2 5 4 2 7 7 2 6 4 4
##  [1] 2 5 4 2 7 7 2 6 4 4
set.seed(0)
y=rpois(n=10, lambda=4)
print(y)
##  [1] 7 3 3 4 7 2 7 7 5 5
##  [1] 7 3 3 4 7 2 7 7 5 5
set.seed(0)
x=rpois(n=10, lambda=4)
print(x)
##  [1] 7 3 3 4 7 2 7 7 5 5
##  [1] 7 3 3 4 7 2 7 7 5 5
set.seed(0123)
y=rpois(n=10, lambda=4)
print(y)
##  [1] 3 6 3 6 7 1 4 7 4 4
##  [1] 3 6 3 6 7 1 4 7 4 4
set.seed(0123)
x=rpois(n=10, lambda=4)
print(x)
##  [1] 3 6 3 6 7 1 4 7 4 4
##  [1] 3 6 3 6 7 1 4 7 4 4
set.seed(23)
y=rpois(n=10, lambda=4)
print(y)
##  [1]  4  2  3  5  6  3  8  8  6 10
##  [1]  4  2  3  5  6  3  8  8  6 10
set.seed(23)
x=rpois(n=10, lambda=4)
print(x)
##  [1]  4  2  3  5  6  3  8  8  6 10
##  [1]  4  2  3  5  6  3  8  8  6 10
set.seed(123)

# Membangkitkan data multinomial
# Misal: 3 kategori (A, B, C) dengan probabilitas masing-masing 0.5, 0.3, 0.2
# size = jumlah percobaan per sampel, n = jumlah sampel yang dibangkitkan
hasil <- rmultinom(n = 1, size = 100, prob = c(0.5, 0.3, 0.2))
print(hasil)
##      [,1]
## [1,]   49
## [2,]   31
## [3,]   20
##      [,1]
## [1,]   49
## [2,]   31
## [3,]   20
# Beri nama baris supaya lebih jelas
rownames(hasil) <- c("Kategori A", "Kategori B", "Kategori C")
print(hasil)
##            [,1]
## Kategori A   49
## Kategori B   31
## Kategori C   20
##            [,1]
## Kategori A   49
## Kategori B   31
## Kategori C   20
# Ambil nilai frekuensi masing-masing kategori
frekuensi <- as.vector(hasil)
label_kategori <- c("Kategori A", "Kategori B", "Kategori C")

# Hitung persentase untuk ditampilkan di label
persentase <- round(100 * frekuensi / sum(frekuensi), 1)
label_lengkap <- paste(label_kategori, " (", persentase, "%)", sep = "")

# Buat pie chart
pie(frekuensi, 
    labels = label_lengkap, 
    main = "Distribusi Multinomial", 
    col = c("skyblue", "lightgreen", "orange"))

#Simulasi Distribusi Jenjang Pendidikan Responden
# Ambil nilai frekuensi masing-masing kategori
frekuensi <- as.vector(hasil)
label_kategori <- c("Kategori A", "Kategori B", "Kategori C")

# Hitung persentase untuk ditampilkan di label
persentase <- round(100 * frekuensi / sum(frekuensi), 1)
label_lengkap <- paste(label_kategori, " (", persentase, "%)", sep = "")

# Buat pie chart
pie(frekuensi, 
    labels = label_lengkap, 
    main = "Distribusi Multinomial", 
    col = c("skyblue", "lightgreen", "orange"))

set.seed(123)

# 4 kategori jenjang pendidikan
kategori <- c("SD", "SMP", "SMA", "Perguruan Tinggi")

# Probabilitas asumsi tiap kategori (ganti sesuai kebutuhan studi kasus)
prob_kategori <- c(0.20, 0.25, 0.35, 0.20)  # total harus = 1

# Simulasi 150 responden dengan distribusi multinomial
hasil_simulasi <- rmultinom(n = 1, size = 150, prob = prob_kategori)

# Gabungkan jadi data frame
df_simulasi <- data.frame(
  Kategori = kategori,
  Jumlah = as.vector(hasil_simulasi)
)
print(df_simulasi)
##           Kategori Jumlah
## 1               SD     30
## 2              SMP     32
## 3              SMA     52
## 4 Perguruan Tinggi     36
##           Kategori Jumlah
## 1               SD     30
## 2              SMP     32
## 3              SMA     52
## 4 Perguruan Tinggi     36
df_simulasi$Persentase <- round(100 * df_simulasi$Jumlah / sum(df_simulasi$Jumlah), 1)
print(df_simulasi)
##           Kategori Jumlah Persentase
## 1               SD     30       20.0
## 2              SMP     32       21.3
## 3              SMA     52       34.7
## 4 Perguruan Tinggi     36       24.0
##           Kategori Jumlah Persentase
## 1               SD     30       20.0
## 2              SMP     32       21.3
## 3              SMA     52       34.7
## 4 Perguruan Tinggi     36       24.0
label_pie <- paste(df_simulasi$Kategori, "\n(", df_simulasi$Persentase, "%)", sep = "")

pie(df_simulasi$Jumlah,
    labels = label_pie,
    main = "Simulasi Distribusi Jenjang Pendidikan Responden",
    col = c("skyblue", "lightgreen", "orange", "salmon"))

#Simulasi Distribusi Kategori Pekerjaan Responden
set.seed(123)

# 5 kategori pekerjaan
kategori <- c("PNS", "Wiraswasta", "Karyawan Swasta", "Petani/Nelayan", "Belum/Tidak Bekerja")

# Probabilitas asumsi tiap kategori (ganti sesuai kebutuhan studi kasus)
prob_kategori <- c(0.15, 0.20, 0.30, 0.15, 0.20)  # total harus = 1

# Simulasi 200 responden dengan distribusi multinomial
hasil_simulasi <- rmultinom(n = 1, size = 200, prob = prob_kategori)

# Gabungkan jadi data frame
df_simulasi <- data.frame(
  Kategori = kategori,
  Jumlah = as.vector(hasil_simulasi)
)
print(df_simulasi)
##              Kategori Jumlah
## 1                 PNS     30
## 2          Wiraswasta     34
## 3     Karyawan Swasta     68
## 4      Petani/Nelayan     27
## 5 Belum/Tidak Bekerja     41
##              Kategori Jumlah
## 1                 PNS     30
## 2          Wiraswasta     34
## 3     Karyawan Swasta     68
## 4      Petani/Nelayan     27
## 5 Belum/Tidak Bekerja     41
df_simulasi$Persentase <- round(100 * df_simulasi$Jumlah / sum(df_simulasi$Jumlah), 1)
print(df_simulasi)
##              Kategori Jumlah Persentase
## 1                 PNS     30       15.0
## 2          Wiraswasta     34       17.0
## 3     Karyawan Swasta     68       34.0
## 4      Petani/Nelayan     27       13.5
## 5 Belum/Tidak Bekerja     41       20.5
##              Kategori Jumlah Persentase
## 1                 PNS     30       15.0
## 2          Wiraswasta     34       17.0
## 3     Karyawan Swasta     68       34.0
## 4      Petani/Nelayan     27       13.5
## 5 Belum/Tidak Bekerja     41       20.5
barplot(df_simulasi$Jumlah,
        names.arg = kategori,
        main = "Simulasi Distribusi Kategori Pekerjaan Responden",
        col = c("skyblue", "lightgreen", "orange", "salmon", "violet"),
        ylab = "Jumlah Responden",
        las = 2,        # supaya label sumbu x tidak terpotong/miring
        cex.names = 0.7)

#Simulasi Distribusi Kategori Pekerjaan Responden
bp <- barplot(df_simulasi$Jumlah,
        names.arg = kategori,
        main = "Simulasi Distribusi Kategori Pekerjaan Responden",
        col = c("skyblue", "lightgreen", "orange", "salmon", "violet"),
        ylab = "Jumlah Responden",
        ylim = c(0, max(df_simulasi$Jumlah) + 20),
        las = 2,
        cex.names = 0.7)

text(bp, df_simulasi$Jumlah + 5, labels = df_simulasi$Jumlah)

#Perbandingan Distribusi Pendidikan dan Pekerjaan Responden
set.seed(123)

# ===== DATA PENDIDIKAN (4 kategori, tambah "Kuliah") =====
kategori_pendidikan <- c("SD", "SMP", "SMA", "Kuliah")
prob_pendidikan <- c(0.20, 0.25, 0.35, 0.20)

hasil_pendidikan <- rmultinom(n = 1, size = 150, prob = prob_pendidikan)

# ===== DATA PEKERJAAN (5 kategori) =====
kategori_pekerjaan <- c("PNS", "Wiraswasta", "Karyawan Swasta", "Petani/Nelayan", "Belum/Tidak Bekerja")
prob_pekerjaan <- c(0.15, 0.20, 0.30, 0.15, 0.20)

hasil_pekerjaan <- rmultinom(n = 1, size = 200, prob = prob_pekerjaan)

# ===== GABUNGKAN DATA =====
# Pendidikan hanya 4 kategori, tambahkan 0 di posisi ke-5 supaya panjangnya sama
jumlah_pendidikan <- c(as.vector(hasil_pendidikan), 0)  
jumlah_pekerjaan  <- as.vector(hasil_pekerjaan)

# Buat matrix: baris 1 = Pendidikan, baris 2 = Pekerjaan
data_gabungan <- rbind(jumlah_pendidikan, jumlah_pekerjaan)

# Nama kolom pakai gabungan label (biar tetap informatif)
colnames(data_gabungan) <- c("Kategori 1", "Kategori 2", "Kategori 3", "Kategori 4", "Kategori 5")
rownames(data_gabungan) <- c("Pendidikan", "Pekerjaan")

print(data_gabungan)
##            Kategori 1 Kategori 2 Kategori 3 Kategori 4 Kategori 5
## Pendidikan         30         32         52         36          0
## Pekerjaan          30         45         68         26         31
##            Kategori 1 Kategori 2 Kategori 3 Kategori 4 Kategori 5
## Pendidikan         30         32         52         36          0
## Pekerjaan          30         45         68         26         31
barplot(data_gabungan,
        beside = TRUE,                     # supaya batang berdampingan, bukan menumpuk
        col = c("skyblue", "salmon"),       # 2 warna: biru = Pendidikan, salmon = Pekerjaan
        main = "Perbandingan Distribusi Pendidikan dan Pekerjaan Responden",
        ylab = "Jumlah Responden",
        legend.text = rownames(data_gabungan),
        args.legend = list(x = "topright", bty = "n"),
        las = 1)

#Overlapping : Pendidikan VS Pekerjaan
set.seed(123)

# ===== DATA PENDIDIKAN (4 kategori + Kuliah) =====
kategori_pendidikan <- c("SD", "SMP", "SMA", "Kuliah")
prob_pendidikan <- c(0.20, 0.25, 0.35, 0.20)
hasil_pendidikan <- rmultinom(n = 1, size = 150, prob = prob_pendidikan)
jumlah_pendidikan <- c(as.vector(hasil_pendidikan), 0)  # tambah 0 supaya panjang = 5

# ===== DATA PEKERJAAN (5 kategori) =====
kategori_pekerjaan <- c("PNS", "Wiraswasta", "Karyawan Swasta", "Petani/Nelayan", "Belum/Tidak Bekerja")
prob_pekerjaan <- c(0.15, 0.20, 0.30, 0.15, 0.20)
hasil_pekerjaan <- rmultinom(n = 1, size = 200, prob = prob_pekerjaan)
jumlah_pekerjaan <- as.vector(hasil_pekerjaan)

# ===== DIAGRAM BATANG OVERLAPPING (2 warna tumpang tindih) =====
# Batang pertama (Pendidikan) - warna biru transparan
bp <- barplot(jumlah_pendidikan,
        col = rgb(0, 0, 1, alpha = 0.5),   # biru transparan
        ylim = c(0, max(c(jumlah_pendidikan, jumlah_pekerjaan)) + 20),
        names.arg = c("Kat 1", "Kat 2", "Kat 3", "Kat 4", "Kat 5"),
        main = "Overlapping: Pendidikan vs Pekerjaan",
        ylab = "Jumlah Responden")

# Batang kedua (Pekerjaan) - warna merah transparan, ditumpuk di posisi x yang SAMA
barplot(jumlah_pekerjaan,
        col = rgb(1, 0, 0, alpha = 0.5),   # merah transparan
        add = TRUE,                         # kunci utama: tumpang tindih di plot yang sama
        axes = FALSE)

# Tambahkan legenda
legend("topright", 
       legend = c("Pendidikan", "Pekerjaan"), 
       fill = c(rgb(0,0,1,alpha=0.5), rgb(1,0,0,alpha=0.5)),
       bty = "n")

#Jenis Pekerjaan Berdasarkan Tingkat Pendidikan
data <- matrix(c(
  5, 3, 4, 2,    # Petani
  8, 6, 5, 3,    # Guru
  10, 8, 7, 5     # Pedagang
), nrow = 3, byrow = TRUE)

rownames(data) <- c("Petani", "Guru", "Pedagang")

colnames(data) <- c(
  "SD",
  "SMP",
  "SMA",
  "Perguruan Tinggi"
)

barplot(data,
        beside = TRUE,
        main = "Jenis Pekerjaan Berdasarkan Tingkat Pendidikan",
        xlab = "Jenis Pekerjaan",
        ylab = "Jumlah Orang",
        col = c("purple", "lightblue", "pink", "green"),
        legend.text = TRUE)

#Stacked Plot Tngkat Pendidikan Berdasarkan Pekerjaan"
data <- matrix(c(
  5, 8, 6, 4,
  7, 5, 8, 6,
  9, 7, 5, 8
), nrow = 3, byrow = TRUE)

rownames(data) <- c("Petani", "Guru", "Pedagang")
colnames(data) <- c("SD", "SMP", "SMA", "Perguruan Tinggi")

barplot(t(data),
        beside = FALSE,
        main = "Stacked Plot Tingkat Pendidikan Berdasarkan Pekerjaan",
        xlab = "Jenis Pekerjaan",
        ylab = "Jumlah Orang",
        col = c("#E8CFCF", "#C9DCE5", "#D5E3C8", "#E3D5C5"),
        legend.text = TRUE)