# 1. Bangkitkan data Poisson sebanyak 10 dengan lambda 4
data_poisson <- rpois(n = 10, lambda = 4)
set.seed(0)

# 2. Masukkan data yang sama ke variabel x dan y
x <- data_poisson
y <- data_poisson

# 3. Cetak hasilnya (sekarang x dan y pasti bernilai sama)
print(x)
##  [1] 4 5 3 7 4 9 3 3 6 8
print(y)
##  [1] 4 5 3 7 4 9 3 3 6 8
# 4. Membangkitkan data kustom berdistribusi diskrit (100 sampel)
data_kustom <- sample(c(1, 2, 3), size = 100, replace = TRUE, prob = c(0.2, 0.5, 0.3))
print(data_kustom)
##   [1] 1 2 2 3 1 2 1 1 3 3 2 2 2 3 2 3 2 3 1 2 3 1 2 3 2 2 2 2 2 1 2 2 3 2 2 1 3
##  [38] 3 2 3 2 1 3 3 3 3 3 2 2 3 3 2 1 2 2 2 2 2 3 3 2 1 2 2 2 3 2 2 3 2 1 2 1 2
##  [75] 2 2 1 1 2 3 1 2 3 2 2 3 2 3 2 2 2 2 2 3 1 3 3 2 2 1
# 1. Atur seed di atas agar hasil acaknya konsisten
set.seed(1)

# 2. Bangkitkan data Bernoulli (n=10, size=1, prob=0.5)
z = rbinom(n = 10, size = 1, prob = 0.5)

# 3. Cetak hasil data z ke console
print("Data Bernoulli z:")
## [1] "Data Bernoulli z:"
print(z)
##  [1] 0 0 1 1 0 1 1 1 1 0
# 4. MENAMPILKAN GRAFIK GARIS DAN TITIK (LINE & SCATTER PLOT)
plot(z, 
     type = "b",          # "b" artinya both (menampilkan titik DAN garis penghubung)
     pch = 19,            # Mengubah bentuk titik menjadi bulatan penuh
     col = "blue",        # Memberikan warna biru pada grafik
     lwd = 2,             # Mengatur ketebalan garis
     main = "Grafik Tren Kemunculan Data Bernoulli (z)",
     xlab = "Sampel Ke- (Urutan Data)",
     ylab = "Nilai Data (0 atau 1)",
     yaxt = "n")          # Menghilangkan sumbu Y bawaan agar bisa dikustomisasi

# Kustomisasi sumbu Y agar hanya memunculkan angka 0 dan 1 saja
axis(2, at = c(0, 1), labels = c("0 (Gagal)", "1 (Sukses)"))

# 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] 0 0 1 0 1 0 1 1 0 1
# 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)"))

# Hitung frekuensi kemunculan setiap angka pada data Poisson
tabel_poisson <- table(data_poisson)

# Buat label yang menunjukkan Angka beserta Persentase/Jumlahnya
persen <- round(100 * tabel_poisson / sum(tabel_poisson), 1)
label_pie <- paste("Angka", names(tabel_poisson), "\n(", persen, "%)", sep="")

# Tampilkan Pie Chart
pie(tabel_poisson, 
    labels = label_pie, 
    main = "Pie Chart Distribusi Poisson",
    col = rainbow(length(tabel_poisson))) # Warna-warni otomatis sesuai jumlah kategori

# 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"))

# =====================================================================
# 1. PENGATURAN AWAL & PEMBANGKITAN DATA PENDIDIKAN
# =====================================================================

# Mengunci seed agar hasil acak selalu sama saat di-run ulang
set.seed(42)

# Membuat 4 kategori pendidikan
kategori_pendidikan <- c("SD", "SMP", "SMA", "S1")

# Membangkitkan data pendidikan untuk 10 orang di Kutai Barat
data_kampung <- sample(kategori_pendidikan, size = 10, replace = TRUE, 
                       prob = c(0.2, 0.2, 0.4, 0.2))


# =====================================================================
# 2. PEMBANGKITAN DATA PEKERJAAN BERDASARKAN PENDIDIKAN
# =====================================================================

# Menentukan pekerjaan secara otomatis berdasarkan latar belakang pendidikan
pekerjaan_responden <- sapply(data_kampung, function(edu) {
  if (edu == "S1") {
    # Lulusan S1 berpeluang besar jadi Guru/PNS (Mengajar)
    return(sample(c("PNS/Guru (Mengajar)", "Swasta"), size = 1, prob = c(0.8, 0.2)))
  } else if (edu == "SMA") {
    # Lulusan SMA bisa Swasta, Petani, atau Belum Bekerja
    return(sample(c("Swasta", "Petani", "Belum Bekerja"), size = 1, prob = c(0.5, 0.3, 0.2)))
  } else {
    # Lulusan SD dan SMP mayoritas Petani atau Swasta
    return(sample(c("Petani", "Swasta", "Belum Bekerja"), size = 1, prob = c(0.7, 0.1, 0.2)))
  }
})


# =====================================================================
# 3. MENAMPILKAN RINGKASAN DATA & TABEL SILANG KE CONSOLE
# =====================================================================

print("--- DATA MENTAH 10 RESPONDEN KUTAI BARAT ---")
## [1] "--- DATA MENTAH 10 RESPONDEN KUTAI BARAT ---"
df_hasil <- data.frame(Responden = 1:10, Pendidikan = data_kampung, Pekerjaan = pekerjaan_responden)
print(df_hasil)
##    Responden Pendidikan           Pekerjaan
## 1          1         SD              Petani
## 2          2         SD       Belum Bekerja
## 3          3        SMA       Belum Bekerja
## 4          4         SD              Petani
## 5          5         S1 PNS/Guru (Mengajar)
## 6          6        SMP              Swasta
## 7          7         S1              Swasta
## 8          8        SMA              Swasta
## 9          9         S1 PNS/Guru (Mengajar)
## 10        10         S1 PNS/Guru (Mengajar)
print("--- TABEL SILANG: HUBUNGAN PENDIDIKAN VS PEKERJAAN ---")
## [1] "--- TABEL SILANG: HUBUNGAN PENDIDIKAN VS PEKERJAAN ---"
tabel_silang <- table(df_hasil$Pendidikan, df_hasil$Pekerjaan)
print(tabel_silang)
##      
##       Belum Bekerja Petani PNS/Guru (Mengajar) Swasta
##   S1              0      0                   3      1
##   SD              1      2                   0      0
##   SMA             1      0                   0      1
##   SMP             0      0                   0      1
# =====================================================================
# 4. VISUALISASI DATA (PENDIDIKAN = PIE CHART, PEKERJAAN = DIAGRAM BATANG)
# =====================================================================

# Mengatur agar layar plot menampilkan 2 grafik sekaligus berdampingan (1 baris, 2 kolom)
par(mfrow = c(1, 2))

# --- A. Pie Chart Pendidikan ---
tabel_pendidikan <- table(data_kampung)
label_pendidikan <- paste(names(tabel_pendidikan), "\n(", tabel_pendidikan, " Orang)", sep="")
pie(tabel_pendidikan, 
    labels = label_pendidikan, 
    main = "Sebaran Responden\nBerdasarkan Pendidikan",
    col = c("#ff9999", "#66b3ff", "#99ff99", "#ffcc99"))

# --- B. Diagram Batang Pekerjaan ---
tabel_pekerjaan <- table(pekerjaan_responden)
barplot(tabel_pekerjaan, 
        main = "Sebaran Responden\nBerdasarkan Pekerjaan",
        xlab = "Jenis Pekerjaan",
        ylab = "Frekuensi (Orang)",
        col = c("#b3e2cd", "#fdb462", "#cbd5e8", "#f4cae4"),
        las = 2,            # Membuat teks label sumbu X menjadi vertikal agar tidak bertumpuk
        cex.names = 0.8,    # Mengecilkan sedikit ukuran teks label pekerjaan agar muat
        ylim = c(0, max(tabel_pekerjaan) + 1)) # Memberikan ruang di atas batang agar grafik rapi

# Mengembalikan pengaturan layar plot ke normal (1 grafik per layar)
par(mfrow = c(1, 1))
# =====================================================================
# 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 <- 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("#F2CFCF", "#C9DCE5", "#D5E3C8", "#A6D5C5"),
        legend.text = 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("red", "black", "blue", "yellow"),
        legend.text = TRUE)

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)