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