Data yang digunakan

Data yang digunakan merupakan data IPM antarprovinsi di Indonesia yang berisi angka harapan hidup (AHH), rata-rata lama sekolah (RLS), dan harapan lama sekolah (HLS) pada tahun 2024 di Indonesia berdasarkan tiap provinsi.

Analisis dilakukan menggunakan metode K-Means untuk mengelompokkan provinsi-provinsi di Indonesia berdasarkan karakteristik IPM mereka. Dengan menerapkan clustering menggunakan metode K-Means sangat relevan untuk mengelompokkan provinsi berdasarkan kemiripan nilai ketiga indikator tersebut. Dengan pendekatan ini, pola pembangunan manusia antar wilayah dapat diidentifikasi secara lebih jelas, sehingga kebijakan pembangunan dapat difokuskan untuk mengurangi kesenjangan antarprovinsi dan meningkatkan kualitas hidup masyarakat secara merata.

Memuat packages yang dibutuhkan

library(car)
library(dplyr)
library(ggplot2)
library(factoextra)
library(reshape2)
library(RColorBrewer)
library(readxl)
library(tinytex)

Import dataset ke dalam Rstudio

#Import data IPM 2024
data <- read_excel("C:/Users/binta/Downloads/IPM 2024.xlsx")
data
## # A tibble: 39 × 5
##    Provinsi               RLS   AHH   HLS Pengeluaran
##    <chr>                <dbl> <dbl> <dbl>       <dbl>
##  1 ACEH                  9.95  70.5  14.4       10811
##  2 SUMATERA UTARA       10.2   70.3  13.5       11460
##  3 SUMATERA BARAT        9.72  70.4  14.3       11718
##  4 RIAU                  9.69  72.6  13.4       11857
##  5 JAMBI                 9.26  72.1  13.1       11621
##  6 SUMATERA SELATAN      8.98  71.0  12.6       12015
##  7 BENGKULU              9.4   70.2  13.8       11733
##  8 LAMPUNG               8.8   71.6  12.8       11258
##  9 KEP. BANGKA BELITUNG  8.78  71.5  12.5       13667
## 10 KEP. RIAU            10.6   71.3  13.3       15573
## # ℹ 29 more rows

Summary dan VIF

Summary

Summary adalah untuk memberikan statistik deskriptif dasar dari suatu data atau objek statistik. Dalam Analisis kali ini, summary digunakan untuk mengetahui mean, median, modus, min., 1st quartile, 3rd quartile, dan max.

 summary(data)
##    Provinsi              RLS              AHH             HLS       
##  Length:39          Min.   : 5.100   Min.   :64.75   Min.   : 9.63  
##  Class :character   1st Qu.: 8.790   1st Qu.:68.96   1st Qu.:12.87  
##  Mode  :character   Median : 9.280   Median :70.97   Median :13.23  
##                     Mean   : 9.291   Mean   :70.62   Mean   :13.21  
##                     3rd Qu.: 9.910   3rd Qu.:72.33   3rd Qu.:13.71  
##                     Max.   :11.490   Max.   :75.53   Max.   :15.70  
##   Pengeluaran   
##  Min.   : 5707  
##  1st Qu.:10264  
##  Median :11621  
##  Mean   :11611  
##  3rd Qu.:12322  
##  Max.   :19953

VIF

VIF digunakan untuk mendeteksi multikolinearitas antar variabel independen dalam model regresi linear, yang didalam model regresi tersebut akan mencari tahu pengaruh AHH dan HLS terhadap RLS.

model1 <- lm(RLS ~ AHH + HLS, data = data)

vif_values <- vif(model1)

# Ubah ke data frame
vif_df <- as.data.frame(vif_values)
vif_df$Variable <- rownames(vif_df)

# Rename kolom agar sesuai
colnames(vif_df) <- c("VIF", "Variable")

# Buat heatmap
ggplot(vif_df, aes(x = Variable, y = 1, fill = VIF)) +
  geom_tile(color = "white") +
  geom_text(aes(label = round(VIF, 2)), size = 6) +
  scale_fill_gradient(low = "#E0F7FA", high = "#006064") +
  theme_minimal() +
  theme(
    axis.title = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks = element_blank()
  ) +
  labs(title = "VIF Heatmap", fill = "VIF")

Standarisasi dan Summary

Standarisasi

Standarisasi perlu dilakukan dikarenakan metode K-Means menggunakan jarak Euclidean untuk melihat kesamaan data. Berikut adalah hasil standarisasi dari data.

data_num <- data %>%
  select(RLS, AHH, HLS)
data_scaled <- scale(data_num)
data_scaled
##                RLS         AHH           HLS
##  [1,]  0.581697283 -0.05099330  1.1707033611
##  [2,]  0.784567604 -0.10965259  0.2779880021
##  [3,]  0.378826963 -0.09073024  1.0814318252
##  [4,]  0.352365617  0.73806865  0.2085545853
##  [5,] -0.026913677  0.55641410 -0.0691790819
##  [6,] -0.273886240  0.13444572 -0.5651320592
##  [7,]  0.096572605 -0.16641963  0.5358835502
##  [8,] -0.432654317  0.35205273 -0.4262652255
##  [9,] -0.450295214  0.34637603 -0.7139179523
## [10,]  1.199128692  0.25176428  0.0597686921
## [11,]  1.940046383  1.34736829  0.2978261212
## [12,] -0.044554574  1.43441110 -0.4064271065
## [13,] -0.723729124  1.69553952 -0.3469127492
## [14,]  0.828669847  1.85827172  2.4701001614
## [15,] -0.529679253  0.67184043  0.2184736448
## [16,]  0.228879335  0.16850594 -0.1088553201
## [17,]  0.511133694  1.02947283  0.4069357762
## [18,] -0.697267778 -1.07469239  0.7640219198
## [19,] -0.714908675 -0.97818841  0.0200924539
## [20,] -0.891317649  0.37097508 -0.5254558210
## [21,] -0.106297715 -0.05477777 -0.4361842851
## [22,] -0.238604446 -0.34996642 -0.3369936896
## [23,]  0.819849398  1.67850940  0.8136172175
## [24,]  0.255340682  0.81565028  0.0002543349
## [25,]  0.643440424  0.80429687 -0.2378030942
## [26,] -0.009272779 -0.43700923  0.1292021089
## [27,] -0.062195472  0.32556144  0.3375023594
## [28,]  0.396467861  0.38989743  0.4962073121
## [29,] -0.573781496 -0.56000450 -0.0394219033
## [30,] -0.644345086 -1.62722499 -0.3171555706
## [31,]  1.013899270 -1.36798880  0.8731315748
## [32,]  0.361186066 -0.49188404  0.5358835502
## [33,]  0.511133694 -1.33203634 -0.0394219033
## [34,]  1.049181064 -1.04820110  0.6648313243
## [35,]  1.243230936 -0.69813764  0.5061263716
## [36,] -0.265065792 -1.56856570 -0.5353748805
## [37,] -2.752432325 -1.36609657 -3.5507689820
## [38,] -3.696220336 -2.21949451 -3.2135209575
## [39,] -0.062195472  0.62264232  0.0002543349
## attr(,"scaled:center")
##       RLS       AHH       HLS 
##  9.290513 70.619744 13.209744 
## attr(,"scaled:scale")
##      RLS      AHH      HLS 
## 1.133729 2.642378 1.008160

Summary

Setelah dilakukan standarisasiy dilakukan pengecekan statistika deskriptif untuk memvalidasi data yang ada dengan mean mendekati 0 dan variansi mendekati 1.

 summary(data_scaled)
##       RLS                 AHH               HLS          
##  Min.   :-3.696220   Min.   :-2.2195   Min.   :-3.55077  
##  1st Qu.:-0.441475   1st Qu.:-0.6291   1st Qu.:-0.34195  
##  Median :-0.009273   Median : 0.1344   Median : 0.02009  
##  Mean   : 0.000000   Mean   : 0.0000   Mean   : 0.00000  
##  3rd Qu.: 0.546415   3rd Qu.: 0.6472   3rd Qu.: 0.50117  
##  Max.   : 1.940046   Max.   : 1.8583   Max.   : 2.47010

Elbow Method, Silhouette Method, dan Cluster Plot

Elbow Method

Interpretasi

fviz_nbclust(data_scaled, kmeans, method = "wss") +
  labs(title = "Elbow Method") +
  theme_minimal()

Silhouette Method

Interpretasi

fviz_nbclust(data_scaled, kmeans, method = "silhouette") +
  labs(title = "Silhouette Method") +
  theme_minimal()

Cluster Plot

Interpretasi

# Misalnya jumlah klaster optimal adalah 3
set.seed(123)  # agar hasil bisa direproduksi
kmeans_result <- kmeans(data_scaled, centers = 2, nstart = 25)
data$cluster <- as.factor(kmeans_result$cluster)
fviz_cluster(kmeans_result, data = data_scaled,
             geom = "point", ellipse.type = "convex",
             palette = "jco", ggtheme = theme_minimal())

data %>%
  group_by(cluster) %>%
  summarise(across(c(RLS, AHH, HLS), mean, .names = "mean_{.col}"))
## # A tibble: 2 × 4
##   cluster mean_RLS mean_AHH mean_HLS
##   <fct>      <dbl>    <dbl>    <dbl>
## 1 1           9.49     70.9     13.4
## 2 2           5.64     65.9      9.8

Info Judul

Info Judul

Interpretasi

data$cluster <- as.factor(kmeans_result$cluster)
data %>% select(Provinsi,RLS, AHH, HLS, cluster)
## # A tibble: 39 × 5
##    Provinsi               RLS   AHH   HLS cluster
##    <chr>                <dbl> <dbl> <dbl> <fct>  
##  1 ACEH                  9.95  70.5  14.4 1      
##  2 SUMATERA UTARA       10.2   70.3  13.5 1      
##  3 SUMATERA BARAT        9.72  70.4  14.3 1      
##  4 RIAU                  9.69  72.6  13.4 1      
##  5 JAMBI                 9.26  72.1  13.1 1      
##  6 SUMATERA SELATAN      8.98  71.0  12.6 1      
##  7 BENGKULU              9.4   70.2  13.8 1      
##  8 LAMPUNG               8.8   71.6  12.8 1      
##  9 KEP. BANGKA BELITUNG  8.78  71.5  12.5 1      
## 10 KEP. RIAU            10.6   71.3  13.3 1      
## # ℹ 29 more rows

Info Judul

Interpretasi

data %>%
  count(cluster, name = "jumlah_provinsi")
## # A tibble: 2 × 2
##   cluster jumlah_provinsi
##   <fct>             <int>
## 1 1                    37
## 2 2                     2