library(ggplot2)
library(dplyr)
data <- read.csv2("Klasifikasi Tingkat KemiskinanP.csv", stringsAsFactors = FALSE)

# Buat nama kolom lebih pendek untuk kemudahan
names(data)[3] <- "Persentase_Kemiskinan"
names(data)[4] <- "Lama_Sekolah"

# Konversi ke numeric (penting!)
data$Persentase_Kemiskinan <- as.numeric(data$Persentase_Kemiskinan)
data$Lama_Sekolah <- as.numeric(data$Lama_Sekolah)

# Hapus baris yang NA
data <- data %>% filter(!is.na(Persentase_Kemiskinan))
head(data)
##         Provinsi         Kab.Kota Persentase_Kemiskinan Lama_Sekolah
## 1           RIAU Kuantan Singingi                  8.97         8.75
## 2           RIAU   Indragiri Hulu                  6.18         8.39
## 3       BENGKULU           Lebong                 12.00           NA
## 4     JAWA TIMUR          Jombang                 10.00         8.55
## 5 SULAWESI UTARA Kepulauan Talaud                  9.00           NA
## 6      GORONTALO          Boalemo                 19.00         7.00
##   Pengeluaran.per.Kapita.Disesuaikan..Ribu.Rupiah.Orang.Tahun.
## 1                                                        10309
## 2                                                        10260
## 3                                                        11317
## 4                                                        11394
## 5                                                         8558
## 6                                                         8940
##   Indeks.Pembangunan.Manusia Umur.Harapan.Hidup..Tahun.
## 1                      70.60                      68.60
## 2                      70.01                      70.26
## 3                      67.46                      63.40
## 4                      73.45                      72.49
## 5                      69.83                      70.24
## 6                      66.42                      69.30
##   Persentase.rumah.tangga.yang.memiliki.akses.terhadap.sanitasi.layak
## 1                                                               87.98
## 2                                                               82.82
## 3                                                               51.55
## 4                                                               90.95
## 5                                                               86.83
## 6                                                               68.82
##   Persentase.rumah.tangga.yang.memiliki.akses.terhadap.air.minum.layak
## 1                                                                85.78
## 2                                                                64.84
## 3                                                                57.37
## 4                                                                99.44
## 5                                                                84.61
## 6                                                                94.21
##   Tingkat.Pengangguran.Terbuka Tingkat.Partisipasi.Angkatan.Kerja
## 1                         2.06                              67.02
## 2                         3.32                              68.45
## 3                         3.18                              72.01
## 4                         7.09                              70.69
## 5                         2.30                              79.19
## 6                         3.57                              65.56
##   PDRB.atas.Dasar.Harga.Konstan.menurut.Pengeluaran..Rupiah.
## 1                                                   24689509
## 2                                                   31176538
## 3                                                    2192263
## 4                                                   28553448
## 5                                                    1665598
## 6                                                    3567638
##   Klasifikasi.Kemiskinan
## 1                      0
## 2                      0
## 3                      0
## 4                      0
## 5                      0
## 6                      0

1. Top 10 Kabupaten dengan Kemiskinan Tertinggi

top_10 <- data %>%
  arrange(desc(Persentase_Kemiskinan)) %>%
  head(10)

ggplot(top_10, aes(x = reorder(Kab.Kota, Persentase_Kemiskinan), 
                   y = Persentase_Kemiskinan)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  geom_text(aes(label = round(Persentase_Kemiskinan, 2)), hjust = -0.1, size = 3) +
  coord_flip() +
  labs(title = "Top 10 Kabupaten/Kota dengan Kemiskinan Tertinggi",
       x = "Kabupaten/Kota",
       y = "Persentase (%)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"))

2. Top 10 Kabupaten dengan Kemiskinan Terendah

bottom_10 <- data %>%
  arrange(Persentase_Kemiskinan) %>%
  head(10)

ggplot(bottom_10, aes(x = reorder(Kab.Kota, -Persentase_Kemiskinan), 
                      y = Persentase_Kemiskinan)) +
  geom_bar(stat = "identity", fill = "forestgreen") +
  geom_text(aes(label = round(Persentase_Kemiskinan, 2)), hjust = -0.1, size = 3) +
  coord_flip() +
  labs(title = "Top 10 Kabupaten/Kota dengan Kemiskinan Terendah",
       x = "Kabupaten/Kota",
       y = "Persentase (%)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"))

3. Histogram Distribusi Kemiskinan

ggplot(data, aes(x = Persentase_Kemiskinan)) +
  geom_histogram(bins = 30, fill = "coral", color = "black", alpha = 0.7) +
  geom_vline(aes(xintercept = mean(Persentase_Kemiskinan, na.rm = TRUE)), 
             color = "red", linetype = "dashed", size = 1) +
  labs(title = "Distribusi Persentase Kemiskinan",
       subtitle = "Garis merah = rata-rata",
       x = "Persentase Kemiskinan (%)",
       y = "Frekuensi") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"))

4. Boxplot per Provinsi

ggplot(data, aes(x = Provinsi, y = Persentase_Kemiskinan, fill = Provinsi)) +
  geom_boxplot() +
  labs(title = "Boxplot Kemiskinan per Provinsi",
       x = "Provinsi",
       y = "Persentase (%)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"),
        legend.position = "none")

5. Scatter Plot: Kemiskinan vs Lama Sekolah

ggplot(data, aes(x = Lama_Sekolah, y = Persentase_Kemiskinan)) +
  geom_point(color = "darkblue", size = 3, alpha = 0.6) +
  geom_smooth(method = "lm", color = "red", se = TRUE) +
  labs(title = "Hubungan Lama Sekolah dengan Kemiskinan",
       x = "Rata-rata Lama Sekolah (Tahun)",
       y = "Persentase Kemiskinan (%)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"))

# Korelasi
cor_value <- cor(data$Lama_Sekolah, data$Persentase_Kemiskinan, use = "complete.obs")
cat("Korelasi:", round(cor_value, 3))
## Korelasi: -0.905

6. Rata-rata Kemiskinan per Provinsi

provinsi_avg <- data %>%
  group_by(Provinsi) %>%
  summarise(Rata_Kemiskinan = mean(Persentase_Kemiskinan, na.rm = TRUE),
            Jumlah_Kab = n()) %>%
  arrange(desc(Rata_Kemiskinan))

ggplot(provinsi_avg, aes(x = reorder(Provinsi, Rata_Kemiskinan), 
                         y = Rata_Kemiskinan, fill = Provinsi)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = round(Rata_Kemiskinan, 2)), hjust = -0.1, size = 4) +
  coord_flip() +
  labs(title = "Rata-rata Kemiskinan per Provinsi",
       x = "Provinsi",
       y = "Rata-rata (%)") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"),
        legend.position = "none")

print(provinsi_avg)
## # A tibble: 6 × 3
##   Provinsi       Rata_Kemiskinan Jumlah_Kab
##   <chr>                    <dbl>      <int>
## 1 PAPUA                    26             2
## 2 GORONTALO                19             1
## 3 BENGKULU                 12             1
## 4 JAWA TIMUR               10             1
## 5 SULAWESI UTARA            9             1
## 6 RIAU                      7.58          2

7. Density Plot

ggplot(data, aes(x = Persentase_Kemiskinan)) +
  geom_density(fill = "purple", alpha = 0.5, color = "black") +
  geom_vline(aes(xintercept = mean(Persentase_Kemiskinan, na.rm = TRUE)), 
             color = "red", linetype = "dashed") +
  geom_vline(aes(xintercept = median(Persentase_Kemiskinan, na.rm = TRUE)), 
             color = "blue", linetype = "dashed") +
  labs(title = "Kurva Distribusi Kemiskinan",
       subtitle = "Merah = Mean, Biru = Median",
       x = "Persentase Kemiskinan (%)",
       y = "Density") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold"))

Statistik Deskriptif

summary(data$Persentase_Kemiskinan)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   6.180   8.992  11.000  14.644  16.750  36.000
stats <- data %>%
  group_by(Provinsi) %>%
  summarise(
    Jumlah = n(),
    Min = min(Persentase_Kemiskinan, na.rm = TRUE),
    Rata_rata = mean(Persentase_Kemiskinan, na.rm = TRUE),
    Median = median(Persentase_Kemiskinan, na.rm = TRUE),
    Max = max(Persentase_Kemiskinan, na.rm = TRUE)
  ) %>%
  arrange(desc(Rata_rata))

print(stats)
## # A tibble: 6 × 6
##   Provinsi       Jumlah   Min Rata_rata Median   Max
##   <chr>           <int> <dbl>     <dbl>  <dbl> <dbl>
## 1 PAPUA               2 16        26     26    36   
## 2 GORONTALO           1 19        19     19    19   
## 3 BENGKULU            1 12        12     12    12   
## 4 JAWA TIMUR          1 10        10     10    10   
## 5 SULAWESI UTARA      1  9         9      9     9   
## 6 RIAU                2  6.18      7.58   7.58  8.97