UAS Mata Kuliah Data Mining and Business Intelligence

Pengantar

Laporan ini disusun untuk memenuhi tugas Ujian Akhir Semester (UAS) mata kuliah Data Mining and Business Intelligence. Analisis dilakukan menggunakan data 38 provinsi di Indonesia yang mencakup indikator ekonomi, industri, pendidikan, kesehatan, ketenagakerjaan, dan kemiskinan. Metode yang digunakan meliputi statistik deskriptif, preprocessing data, regresi linear berganda, Hierarchical Clustering (HC), K-Means , K-Medoids, serta Random Forest untuk mengidentifikasi pola dan karakteristik antarprovinsi.

Kelompok 1 – Kelas B Statistika Angkatan 2023

FMIPA Universitas Tanjungpura Anggota:

  1. Febri Subarti (H1091231052)
  2. Jelita Ervita (H1091231056)
  3. Natalie Jessica W. (H1091231062)
  4. Shinta (H1091231066)

Data

Data yang digunakan merupakan data sekunder tahun 2024 yang bersumber dari publikasi dan tabel statistik Badan Pusat Statistik (BPS) Indonesia. Data tahun 2024 dipilih karena merupakan data terbaru yang tersedia secara lengkap pada saat analisis dilakukan. Dataset terdiri atas 38 provinsi di Indonesia dengan sembilan variabel penelitian, yaitu PDRB, persentase pengguna internet, rasio elektrifikasi, kontribusi sektor industri, jumlah industri, Tingkat Partisipasi Angkatan Kerja (TPAK), Rata-rata Lama Sekolah (RLS), Angka Harapan Hidup (AHH), dan tingkat kemiskinan.

Berikut untuk Data lengkap Dapat Diakses : https://docs.google.com/spreadsheets/d/12zCz5LuHASP2_bLIMxnvTsKiuJh308P00N4cNqXlJF8/edit?usp=drive_link

Tujuan Analisis

  1. Mendeskripsikan karakteristik data sosial dan ekonomi provinsi di Indonesia.
  2. Menentukan jumlah cluster optimal menggunakan metode Elbow dan Silhouette.
  3. Mengelompokkan provinsi menggunakan Hierarchical Clustering, K-Means, dan K-Medoids.
  4. Mengidentifikasi faktor-faktor yang berpengaruh terhadap PDRB menggunakan regresi linear dan Random Forest.

1. Import Library dan Data

Tahap pertama dalam analisis adalah memanggil beberapa library yang diperlukan untuk membaca data dan melakukan proses clustering. • Library readxl digunakan untuk mengimpor data yang tersimpan dalam format Excel ke dalam R. • Library cluster digunakan untuk menjalankan berbagai metode pengelompokan data (clustering) • Library factoextra digunakan untuk membantu visualisasi hasil clustering agar lebih mudah dipahami. • Library NbClust digunakan untuk menentukan jumlah cluster yang paling optimal berdasarkan berbagai kriteria statistik. • Library psych digunakan untuk mendukung analisis statistik deskriptif yang lebih lengkap, seperti perhitungan rata-rata, simpangan baku, varians, dan ukuran statistik lainnya apabila diperlukan pada tahap selanjutnya.

#1. data
library(readxl)
library(cluster)    # clustering algorithms
library(factoextra) # clustering algorithms & visualization
## Loading required package: ggplot2
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
## 
##     legend
library(ggpubr)
library(tibble)
library(MVN)
## Registered S3 method overwritten by 'lme4':
##   method           from
##   na.action.merMod car
library(NbClust)
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:MVN':
## 
##     mardia
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(randomForest)
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attaching package: 'randomForest'
## The following object is masked from 'package:psych':
## 
##     outlier
## The following object is masked from 'package:ggplot2':
## 
##     margin
data <- read_excel("C:/Users/acer/Downloads/Data Industri (Project UAS).xlsx")

colnames(data) <- c(
  "Provinsi",
  "PDRB",
  "Internet",
  "Elektrifikasi",
  "Industri",
  "Jumlah_Industri",
  "TPAK",
  "RLS",
  "AHH",
  "Kemiskinan")

head(data)
## # A tibble: 6 × 10
##   Provinsi   PDRB Internet Elektrifikasi Industri Jumlah_Industri  TPAK   RLS
##   <chr>     <dbl>    <dbl>         <dbl>    <dbl>           <dbl> <dbl> <dbl>
## 1 Aceh     153780     62.9         100.0     4.71          108507  65.1  9.95
## 2 Sumut    632535     74.2         100.0    18.4           123911  71.4 10.2 
## 3 Sumbar   199407     74.5         100.0     8.37           88053  70.3  9.72
## 4 Riau     571234     77.7         100.0    28.1            54425  66.3  9.69
## 5 Jambi    176906     71.8         100.0     9.77           31268  68.9  9.26
## 6 Sumsel   379120     70.5         100.0    18.3            77678  70.8  8.98
## # ℹ 2 more variables: AHH <dbl>, Kemiskinan <dbl>

2. Statistik Deskriptif

Statistik deskriptif digunakan untuk menampilkan ringkasan statistik dari setiap variabel dalam dataset. Output yang dihasilkan meliputi nilai minimum, kuartil pertama (Q1), median, rata-rata (mean), kuartil ketiga (Q3), dan nilai maksimum. Informasi ini berguna untuk memahami karakteristik data secara umum sebelum dilakukan analisis lebih lanjut. describe digunakan untuk menghasilkan statistik deskriptif yang lebih lengkap terhadap seluruh variabel numerik dalam dataset. Penulisan data[, -1] bertujuan untuk mengeluarkan kolom pertama (Provinsi) karena berupa data kategorik dan tidak dapat dihitung statistik numeriknya

#2. STATISTIK DESKRIPTIF
summary(data)
##       Provinsi       PDRB            Internet     Elektrifikasi   
##  Length   :38   Min.   :  13799   Min.   : 6.76   Min.   : 94.02  
##  N.unique :38   1st Qu.:  56565   1st Qu.:63.66   1st Qu.: 99.89  
##  N.blank  : 0   Median : 139185   Median :70.63   Median : 99.99  
##  Min.nchar: 3   Mean   : 343870   Mean   :68.02   Mean   : 99.47  
##  Max.nchar:20   3rd Qu.: 354729   3rd Qu.:75.22   3rd Qu.: 99.99  
##                 Max.   :2151041   Max.   :89.26   Max.   :100.00  
##     Industri      Jumlah_Industri       TPAK            RLS        
##  Min.   : 0.230   Min.   :   587   Min.   :63.98   Min.   : 5.100  
##  1st Qu.: 6.258   1st Qu.: 20747   1st Qu.:67.46   1st Qu.: 8.785  
##  Median :11.660   Median : 49199   Median :70.25   Median : 9.270  
##  Mean   :16.022   Mean   :116141   Mean   :70.14   Mean   : 9.269  
##  3rd Qu.:20.183   3rd Qu.:106312   3rd Qu.:71.63   3rd Qu.: 9.930  
##  Max.   :41.390   Max.   :925985   Max.   :77.50   Max.   :11.490  
##       AHH          Kemiskinan    
##  Min.   :64.75   Min.   : 3.800  
##  1st Qu.:68.87   1st Qu.: 5.782  
##  Median :70.73   Median : 9.570  
##  Mean   :70.58   Mean   :10.665  
##  3rd Qu.:72.32   3rd Qu.:12.610  
##  Max.   :75.53   Max.   :29.660
describe(data[, -1])
##                 vars  n      mean        sd    median   trimmed       mad
## PDRB               1 38 343870.21 529561.49 139185.00 224078.41 127005.45
## Internet           2 38     68.02     14.84     70.63     69.98      7.64
## Elektrifikasi      3 38     99.47      1.42     99.99     99.85      0.00
## Industri           4 38     16.02     12.43     11.66     15.09      9.87
## Jumlah_Industri    5 38 116140.92 215818.79  49199.00  61068.41  57616.80
## TPAK               6 38     70.14      3.42     70.25     69.98      3.78
## RLS                7 38      9.27      1.15      9.27      9.37      0.87
## AHH                8 38     70.58      2.66     70.73     70.58      2.60
## Kemiskinan         9 38     10.66      6.37      9.57      9.84      5.49
##                      min        max      range  skew kurtosis       se
## PDRB            13799.00 2151041.00 2137242.00  2.28     4.23 85906.22
## Internet            6.76      89.26      82.50 -2.20     6.32     2.41
## Elektrifikasi      94.02     100.00       5.98 -2.90     7.37     0.23
## Industri            0.23      41.39      41.16  0.76    -0.68     2.02
## Jumlah_Industri   587.00  925985.00  925398.00  2.92     7.45 35010.43
## TPAK               63.98      77.50      13.52  0.39    -0.51     0.55
## RLS                 5.10      11.49       6.39 -1.43     3.68     0.19
## AHH                64.75      75.53      10.78 -0.11    -0.72     0.43
## Kemiskinan          3.80      29.66      25.86  1.27     1.07     1.03

Berdasarkan hasil statistik deskriptif, terlihat terdapat variasi yang cukup besar antarprovinsi terutama pada variabel PDRB dan jumlah industri. Sementara itu, variabel elektrifikasi cenderung memiliki nilai yang relatif tinggi dan merata di sebagian besar provinsi. Perbedaan karakteristik tersebut menunjukkan adanya keragaman kondisi sosial dan ekonomi antarwilayah di Indonesia.

3.Preprocessing

Preprocessing dilakukan sebelum analisis clustering untuk memastikan seluruh variabel berada pada skala yang sebanding sehingga tidak ada variabel yang mendominasi proses pengelompokan.

#3. PREPROCESSING
boxplot(data[, -1],
        main = "Boxplot Variabel Penelitian",
        col = rainbow(9),
        las = 2)

Boxplot digunakan untuk menampilkan sebaran data dari seluruh variabel numerik dalam bentuk diagram kotak (boxplot).Hasil boxplot menunjukkan bahwa setiap variabel memiliki rentang nilai yang berbeda-beda. Variabel seperti PDRB dan Jumlah Industri memiliki skala yang jauh lebih besar dibandingkan variabel lainnya, sedangkan variabel seperti RLS, AHH, dan Kemiskinan memiliki rentang yang relatif kecil. Kondisi ini menunjukkan bahwa data belum berada pada skala yang sama sehingga diperlukan proses standarisasi menggunakan metode z-score sebelum dilakukan clustering.

datacluster <- data[, -1]

datascaled <- scale(datacluster)
boxplot(datascaled,
        main = "Boxplot Setelah Standarisasi",
        col = rainbow(9),
        las = 2)

Baris pertama digunakan untuk mengambil seluruh variabel numerik yang akan digunakan dalam proses clustering dengan mengeluarkan kolom Provinsi. fungsi scale() digunakan untuk melakukan standarisasi data. Setelah dilakukan standarisasi, seluruh variabel berada pada rentang yang lebih seimbang. Perbedaan skala yang sebelumnya sangat besar telah berkurang sehingga tidak ada variabel yang mendominasi perhitungan jarak dalam proses clustering. Dengan demikian, data telah memenuhi kondisi yang lebih baik untuk digunakan pada analisis clustering menggunakan metode Hierarchical Clustering, K-Means, maupun K-Medoids.

4.Regresi Linear Berganda

Sebelum melakukan clustering, dilakukan analisis regresi linear Berganda untuk mengetahui hubungan antara variabel-variabel independen dengan PDRB sebagai indikator utama kondisi ekonomi provinsi.

Fungsi lm() (linear model) digunakan untuk membentuk model regresi linear berganda dengan tujuan mengetahui seberapa besar pengaruh masing-masing variabel terhadap PDRB.

Pada model ini: Variabel dependen (Y) = PDRB Variabel independen (X) = Internet, Elektrifikasi, Industri, Jumlah Industri, TPAK, RLS, AHH, Kemiskinan.

Fungsi summary() digunakan untuk menampilkan hasil lengkap model regresi, meliputi Koefisien regresi, nilai t hitung, p-value, koefisien, determinasi (R²), adjusted R², uji F (simultan)

#4. REGRESI LINEAR
model <- lm(PDRB ~ Internet + Elektrifikasi + Industri + Jumlah_Industri + 
              TPAK + RLS + AHH + Kemiskinan, data = data)

summary(model)
## 
## Call:
## lm(formula = PDRB ~ Internet + Elektrifikasi + Industri + Jumlah_Industri + 
##     TPAK + RLS + AHH + Kemiskinan, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -466165 -161236  -10329   89807 1313402 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      1.732e+07  8.656e+06   2.001   0.0548 .  
## Internet         1.044e+04  1.252e+04   0.834   0.4109    
## Elektrifikasi   -1.696e+05  7.694e+04  -2.204   0.0356 *  
## Industri         1.708e+03  5.303e+03   0.322   0.7497    
## Jumlah_Industri  1.820e+00  3.429e-01   5.309 1.08e-05 ***
## TPAK            -4.283e+04  2.136e+04  -2.005   0.0544 .  
## RLS              7.062e+04  9.945e+04   0.710   0.4833    
## AHH              1.889e+04  3.724e+04   0.507   0.6158    
## Kemiskinan      -3.896e+03  1.996e+04  -0.195   0.8466    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 331800 on 29 degrees of freedom
## Multiple R-squared:  0.6924, Adjusted R-squared:  0.6075 
## F-statistic: 8.158 on 8 and 29 DF,  p-value: 1.018e-05

Hasil regresi menunjukkan bahwa model mampu menjelaskan sebagian besar variasi PDRB yang ditunjukkan oleh nilai koefisien determinasi (R²) sebesar 69,24%. Selain itu, variabel jumlah industri menunjukkan pengaruh yang signifikan terhadap PDRB. Hal ini mengindikasikan bahwa aktivitas industri memiliki peran penting dalam mendorong pertumbuhan ekonomi suatu provinsi.

5. Penentuan Jumlah Cluster

Sebelum proses clustering dilakukan, diperlukan penentuan jumlah cluster optimal. Pada penelitian ini digunakan metode Elbow dan Silhouette untuk membantu menentukan jumlah cluster yang paling sesuai.

  1. Elbow

Metode Elbow digunakan untuk menentukan jumlah cluster yang optimal dengan melihat nilai Within Cluster Sum of Squares (WSS).

Semakin kecil nilai WSS, semakin homogen anggota dalam cluster. Grafik kemudian digunakan untuk mencari titik “siku” (elbow point), yaitu titik ketika penurunan WSS mulai melambat. Titik siku tersebut menunjukkan jumlah cluster yang dianggap paling optimal.

#5. PENENTUAN JUMLAH CLUSTER (k)
#a. Elbow
set.seed(123)
wss <- numeric(10)

for (k in 1:10) {
  km <- kmeans(datascaled, centers = k, nstart = 25)
  wss[k] <- km$tot.withinss
}

plot(1:10, wss, type="b", pch=19,
     xlab="k", ylab="WSS",
     main="Elbow Method")

Berdasarkan grafik Elbow Method, jumlah cluster optimal ditentukan pada titik di mana penurunan nilai WSS mulai melambat dan membentuk pola siku. Jumlah cluster pada titik k= 3 menjadi kandidat yang digunakan pada tahap clustering selanjutnya.

  1. Silhouette

Metode Silhouette digunakan untuk mengukur kualitas hasil clustering.

Nilai Silhouette menunjukkan: 1) Seberapa dekat suatu objek dengan anggota dalam cluster yang sama. 2) Seberapa jauh objek tersebut dari cluster lain

#b. Silhouette
sil <- numeric(10)

for (k in 2:10) {
  km <- kmeans(datascaled, centers = k, nstart = 25)
  ss <- silhouette(km$cluster, dist(datascaled))
  sil[k] <- mean(ss[,3])
}

plot(1:10, sil, type="b", pch=19,
     xlab="k", ylab="Silhouette Score",
     main="Silhouette Method")

Berdasarkan grafik, jumlah cluster yang paling optimal menurut Silhouette Method adalah 2 cluster, karena menghasilkan nilai silhouette tertinggi. Namun, k = 3 juga masih memberikan nilai silhouette yang cukup tinggi (≈ 0,46) dan tidak jauh berbeda dari k = 2. Oleh karena itu, penggunaan 3 cluster masih dapat diterima, terutama jika didukung oleh metode lain seperti Elbow Method dan NbClust.

6. HIERARCHICAL CLUSTERING (Hc)

Fungsi dist() digunakan untuk menghitung jarak antarobjek (provinsi) berdasarkan seluruh variabel yang telah distandarisasi. Jarak yang digunakan adalah Euclidean Distance, yaitu ukuran kemiripan antarprovinsi berdasarkan seluruh indikator yang digunakan dalam penelitian. Semakin kecil jarak antarprovinsi, maka karakteristik kedua provinsi semakin mirip.

Fungsi NbClust() digunakan untuk membantu menentukan jumlah cluster yang paling optimal. Fungsi hclust() digunakan untuk membentuk struktur hierarki cluster menggunakan metode Ward. Metode Ward dipilih karena mampu menghasilkan cluster yang relatif homogen dengan meminimalkan variasi di dalam cluster.

Dendrogram menunjukkan proses penggabungan provinsi secara bertahap berdasarkan tingkat kemiripannya.

Sebelum membentuk cluster menggunakan metode K-Means, perlu ditentukan terlebih dahulu jumlah cluster yang paling optimal.

Berbeda dengan metode Elbow dan Silhouette yang hanya menggunakan satu kriteria, fungsi NbClust() mengevaluasi banyak indeks sekaligus sehingga hasilnya cenderung lebih kuat dan objektif.

#Hasil NBclust
distmatrix <- dist(datascaled)
NbClust(datascaled, diss=NULL, distance = "euclidean", min.nc=2, max.nc=10, 
        method = "ward.D2", index = "kl") 
## $All.index
##      2      3      4      5      6      7      8      9     10 
## 1.1170 2.2310 1.0680 1.2424 1.1705 1.2444 0.9984 1.0271 2.0557 
## 
## $Best.nc
## Number_clusters     Value_Index 
##           3.000           2.231 
## 
## $Best.partition
##  [1] 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3

Artinya, menurut indeks KL, jumlah cluster terbaik adalah 3 cluster dengan nilai indeks sebesar 2,231.

fungsi cutree() digunakan untuk memotong dendrogram hasil Hierarchical Clustering menjadi sejumlah cluster tertentu (k=3).

hc <- hclust(distmatrix, method="ward.D2")
plot(hc)
rect.hclust(hc, k=3, border="red")

data$clusterhc <- cutree(hc, k=3)

Dendrogram menunjukkan proses penggabungan provinsi secara bertahap berdasarkan tingkat kemiripannya.

Pemotongan dendrogram pada k = 3 menghasilkan tiga kelompok provinsi yang berbeda karakteristik.

Hal ini memperkuat hasil sebelumnya bahwa jumlah cluster optimal adalah tiga cluster.

7. K-Means

Sebelum membentuk cluster menggunakan metode K-Means, perlu ditentukan terlebih dahulu jumlah cluster yang paling optimal.

Berbeda dengan metode Elbow dan Silhouette yang hanya menggunakan satu kriteria, fungsi NbClust() mengevaluasi banyak indeks sekaligus sehingga hasilnya cenderung lebih kuat dan objektif.

#7. KMEANS CLUSTERING
set.seed(123)

nb <- NbClust(datascaled,
              distance = "euclidean",
              min.nc = 2,
              max.nc = 10,
              method = "kmeans")
## Warning in pf(beale, pp, df2): NaNs produced

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 15 proposed 3 as the best number of clusters 
## * 1 proposed 8 as the best number of clusters 
## * 6 proposed 9 as the best number of clusters 
## * 1 proposed 10 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  3 
##  
##  
## *******************************************************************

Grafik tersebut merupakan Grafik Hubert Index dari fungsi NbClust untuk menentukan jumlah cluster optimal pada metode K-Means. Berdasarkan grafik Hubert Statistic dan Hubert Statistic Second Differences, jumlah cluster optimal adalah 3 cluster. Hal ini ditunjukkan oleh lonjakan terbesar pada nilai second differences yang terjadi pada k = 3. Selain itu, setelah k = 3 peningkatan kualitas cluster cenderung melambat, sehingga pembagian data menjadi tiga kelompok dianggap paling representatif untuk menggambarkan karakteristik provinsi di Indonesia.

Fungsi summary() digunakan untuk menampilkan ringkasan hasil analisis yang telah dilakukan oleh fungsi NbClust(). Ringkasan ini berisi informasi mengenai indeks-indeks yang digunakan dalam menentukan jumlah cluster optimal serta hasil pembagian cluster yang direkomendasikan.

summary(nb)
##                    Length Class  Mode   
## All.index          234    -none- numeric
## All.CriticalValues  27    -none- numeric
## Best.nc             52    -none- numeric
## Best.partition      38    -none- numeric
  1. All.index (234) menunjukkan kumpulan nilai dari berbagai indeks yang digunakan NbClust untuk mengevaluasi jumlah cluster.
  2. All.CriticalValues (27) berisi nilai kritis yang digunakan beberapa indeks dalam proses evaluasi.
  3. Best.nc (52) menyimpan informasi mengenai jumlah cluster terbaik yang direkomendasikan oleh masing-masing indeks.
  4. Best.partition (38) menunjukkan hasil pembagian cluster untuk seluruh objek yang dianalisis, yaitu 38 provinsi.

Hasil ringkasan menunjukkan bahwa proses evaluasi jumlah cluster telah berhasil dilakukan terhadap seluruh data provinsi. Informasi yang diperoleh dari NbClust digunakan sebagai dasar dalam menentukan jumlah cluster optimal sebelum analisis K-Means dilakukan. Berdasarkan hasil sebelumnya, mayoritas indeks merekomendasikan penggunaan 3 cluster sehingga jumlah tersebut digunakan pada tahap clustering selanjutnya

Fungsi kmeans() digunakan untuk melakukan pengelompokan data menggunakan metode K-Means.

Parameter yang digunakan: datascaled → data yang telah distandarisasi. centers = 3 → jumlah cluster yang dibentuk sebanyak 3 cluster. nstart = 25 → proses clustering diulang sebanyak 25 kali dengan titik awal yang berbeda untuk memperoleh hasil yang lebih stabil.

data$clusterkmeans digunakan untuk menyimpan hasil pengelompokan K-Means ke dalam dataset sehingga setiap provinsi memiliki label cluster.

kmeansresult <- kmeans(datascaled, centers = 3, nstart = 25)

RNGkind(sample.kind = "Rounding")
## Warning in RNGkind(sample.kind = "Rounding"): non-uniform 'Rounding' sampler
## used
data$clusterkmeans <- kmeansresult$cluster
kmeansresult
## K-means clustering with 3 clusters of sizes 31, 4, 3
## 
## Cluster means:
##         PDRB   Internet Elektrifikasi   Industri Jumlah_Industri       TPAK
## 1 -0.2915481  0.1722849     0.2679657 -0.0202555      -0.2782549 -0.1348303
## 2  2.6533591  0.5875488     0.3106342  1.0758586       2.3866623 -0.0411672
## 3 -0.5251487 -2.5636762    -3.1831582 -1.2251714      -0.3069161  1.4481365
##          RLS         AHH Kemiskinan
## 1  0.2011754 -0.02240159 -0.1620659
## 2  0.1780034  1.29319531 -0.4829363
## 3 -2.3161508 -1.49277727  2.3185958
## 
## Clustering vector:
##  [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 1 2 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3
## 
## Within cluster sum of squares by cluster:
## [1] 115.00844  26.16817  14.95730
##  (between_SS / total_SS =  53.1 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Fungsi fviz_cluster() digunakan untuk memvisualisasikan hasil clustering K-Means.

#visualiasi
fviz_cluster(kmeansresult, data = datascaled)

Hasil visualisasi menunjukkan bahwa metode K-Means berhasil membentuk tiga cluster yang dapat dibedakan secara visual. Sebagian besar provinsi berada dalam satu cluster utama, sedangkan beberapa provinsi membentuk cluster yang lebih kecil. Pemisahan antarcluster terlihat cukup jelas dan tidak menunjukkan tumpang tindih yang besar, sehingga hasil clustering dapat dikatakan cukup baik dalam mengelompokkan provinsi berdasarkan kemiripan karakteristik data yang digunakan.

8. K-MEDOIDS

Selain K-Means, dilakukan pula pengelompokan menggunakan metode K-Medoids. Metode ini dipilih karena lebih robust terhadap keberadaan outlier dibandingkan K-Means.

Fungsi pam() (Partitioning Around Medoids) digunakan untuk melakukan pengelompokan data menggunakan metode K-Medoids.

#8.K-MEDOIDS 
kmedoidsresult <- pam(datascaled, k = 3)
kmedoidsresult
## Medoids:
##      ID        PDRB    Internet Elektrifikasi   Industri Jumlah_Industri
## [1,]  6  0.06656411  0.16954576     0.3652338  0.1808609      -0.1782186
## [2,] 15  3.00614722  0.09002241     0.1397900  1.1931397       3.7524261
## [3,] 37 -0.45018231 -2.64948948    -3.5095821 -1.2707695      -0.5204038
##           TPAK        RLS        AHH  Kemiskinan
## [1,] 0.1986029 -0.2521236  0.1496186 -0.02430388
## [2,] 0.9676217 -0.5053963  0.6826933 -0.17351649
## [3,] 1.0962788 -2.7062491 -1.3388613  2.65995235
## Clustering vector:
##  [1] 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3
## Objective function:
##    build     swap 
## 1.952712 1.952712 
## 
## Available components:
##  [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
##  [6] "clusinfo"   "silinfo"    "diss"       "call"       "data"
data$clusterkmedoids <- kmedoidsresult$clustering

Hasil K-Medoids menunjukkan pola pengelompokan yang relatif serupa dengan metode K-Means. Perbedaan utama terletak pada penggunaan objek aktual sebagai pusat cluster sehingga metode ini lebih stabil terhadap pengaruh data ekstrem.

9. Perbandingan Hasil Clustering

Tahap berikutnya adalah membandingkan karakteristik cluster yang dihasilkan oleh masing-masing metode clustering.

Fungsi aggregate() digunakan untuk menghitung rata-rata setiap variabel pada masing-masing cluster.

Karena data yang digunakan adalah hasil standarisasi, maka Nilai positif → di atas rata-rata nasional. Nilai negatif → di bawah rata-rata nasional.

Tahap ini bertujuan untuk mengetahui karakteristik setiap cluster sehingga hasil pengelompokan dapat diinterpretasikan secara substantif.

#9. Perbandingan
profile_hc <- aggregate(datascaled,
                        by = list(cluster = data$clusterhc),
                        mean)
profile_kmeans <- aggregate(datascaled,
                            by = list(cluster = data$clusterkmeans),
                            mean)
profile_kmedoids <- aggregate(datascaled,
                              by = list(cluster = data$clusterkmedoids),
                              mean)

profile_kmeans$metode <- "KMeans"
profile_kmedoids$metode <- "KMedoids"
profile_hc$metode <- "Hierarchical"

all_profile <- rbind(profile_kmeans,
                     profile_kmedoids,
                     profile_hc)

all_profile
##   cluster       PDRB   Internet Elektrifikasi    Industri Jumlah_Industri
## 1       1 -0.2915481  0.1722849     0.2679657 -0.02025550      -0.2782549
## 2       2  2.6533591  0.5875488     0.3106342  1.07585860       2.3866623
## 3       3 -0.5251487 -2.5636762    -3.1831582 -1.22517135      -0.3069161
## 4       1 -0.1757941  0.2086335     0.2712255 -0.03101962      -0.2760885
## 5       2  2.4002856  0.3382521     0.2900859  1.55604731       3.2518596
## 6       3 -0.5251487 -2.5636762    -3.1831582 -1.22517135      -0.3069161
## 7       1 -0.1856783  0.1746513     0.1963645 -0.06573487      -0.2636289
## 8       2  2.4002856  0.3382521     0.2900859  1.55604731       3.2518596
## 9       3 -0.5367369 -3.3891240    -3.6751424 -1.24944566      -0.5279124
##         TPAK        RLS          AHH Kemiskinan       metode
## 1 -0.1348303  0.2011754 -0.022401594 -0.1620659       KMeans
## 2 -0.0411672  0.1780034  1.293195307 -0.4829363       KMeans
## 3  1.4481365 -2.3161508 -1.492777272  2.3185958       KMeans
## 4 -0.1766775  0.2555136  0.020573169 -0.1890267     KMedoids
## 5  0.4364237 -0.4093274  1.273330138 -0.3023105     KMedoids
## 6  1.4481365 -2.3161508 -1.492777272  2.3185958     KMedoids
## 7 -0.1061160  0.2295445 -0.008961516 -0.1435312 Hierarchical
## 8  0.4364237 -0.4093274  1.273330138 -0.3023105 Hierarchical
## 9  1.0962788 -3.1734936 -1.762130188  2.8217302 Hierarchical

Berdasarkan rata-rata variabel pada setiap cluster, terlihat adanya perbedaan karakteristik yang cukup jelas. Cluster dengan nilai PDRB dan jumlah industri yang tinggi cenderung merepresentasikan provinsi yang lebih maju secara ekonomi. Sebaliknya, cluster dengan tingkat kemiskinan yang relatif tinggi menunjukkan wilayah yang masih menghadapi berbagai tantangan pembangunan.

10. Random Forest

Random Forest digunakan untuk mengetahui variabel mana yang memiliki tingkat kepentingan terbesar dalam memengaruhi PDRB.

#10. Random forest
set.seed(123)

rf_model <- randomForest(
  PDRB ~ Internet + Elektrifikasi + Industri + 
    Jumlah_Industri + TPAK + RLS + AHH + Kemiskinan,
  data = data,
  importance = TRUE,
  ntree = 500)

print(rf_model)
## 
## Call:
##  randomForest(formula = PDRB ~ Internet + Elektrifikasi + Industri +      Jumlah_Industri + TPAK + RLS + AHH + Kemiskinan, data = data,      importance = TRUE, ntree = 500) 
##                Type of random forest: regression
##                      Number of trees: 500
## No. of variables tried at each split: 2
## 
##           Mean of squared residuals: 1.8207e+11
##                     % Var explained: 33.32
importance(rf_model)
##                   %IncMSE IncNodePurity
## Internet         3.865962  7.637752e+11
## Elektrifikasi    1.269467  5.850779e+11
## Industri         5.103552  1.342088e+12
## Jumlah_Industri 12.770792  2.349129e+12
## TPAK             1.408811  8.273964e+11
## RLS              1.045128  1.274650e+12
## AHH              7.679594  1.612155e+12
## Kemiskinan       4.379882  6.556202e+11

Hasil Random Forest menunjukkan bahwa variabel jumlah industri memiliki tingkat kepentingan paling tinggi dalam memprediksi PDRB. Selain itu, variabel Angka Harapan Hidup (AHH) dan kontribusi sektor industri juga memberikan pengaruh yang cukup besar. Terlihat hasil % var explained sebesar 33,32%. Nilai tersebut menunjukkan bahwa model Random Forest mampu menjelaskan variasi PDRB regional sebesar 33,32%. Temuan ini menunjukkan bahwa perkembangan sektor industri dan kualitas hidup masyarakat berperan penting dalam mendukung aktivitas ekonomi daerah.

Kesimpulan

Berdasarkan hasil analisis telah dilakukan menggunakan beberapa metode, seperti metode regresi linear berganda, clustering, dan Random Forest. Diperoleh beberapa kesimpulan. 1) Hasil regresi menunjukkan variabel jumlah industri memiliki pengaruh positif secara signifikan terhadap PDRB menunjukkan bahwa peningkatan jumlah industri berperan penting dalam mendorong pertumbuhan ekonomi daerah di Indonesia. 2) Hasil clustering menunjukkan provinsi di Indonesia dapat dikelompokkan menjadi tiga (3) kelompok/cluster berisi wilayah maju, wilayah menengah, dan wilayah tertinggal. Perbedaan kelompok ini mencerminkan ada ketimpangan pembangunan ekonomi antar wilayah di Indonesia.
3) Metode random forest menunjukkan bahwa variabel jumlah industri, angka harapan hidup (AHH), dan industri merupakan variabel paling berpengaruh terhadap PDRB sehingga memperkuat hasil analisis regresi linear berganda. 4) Hasil perbandingan metode clustering menunjukkan bahwa sebagian besar provinsi memiliki hasil pengelompokan yang konsisten, sehingga hasil clustering dapat dianggap stabil dan representatif. Meskipun angka cluster ada terbalik dari 1 menjadi 3 maupun sebaliknya dengan arti kelompok yang sama.

Secara keseluruhan, diperoleh kesimpulan bahwa sektor industri menjadi faktor utama dalam meningkatkan PDRB, sedangkan faktor lain seperti pendidikan, kesehatan, dan digitalisasi berperan sebagai faktor pendukung.

Referensi

Badan Pusat Statistik Indonesia. (9 Desember 2024). Keadaan Angkatan Kerja di Indonesia Agustus 2024. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/publication/2024/12/09/6f1fd1036968c8a28e4cfe26/keadaan-angkatan-kerja-di-indonesia-agustus-2024.html

Badan Pusat Statistik Indonesia. (29 Agustus 2025). Statistik Telekomunikasi Indonesia 2024. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/publication/2025/08/29/beaa2be400eda6ce6c636ef8/statistik-telekomunikasi-indonesia-2024.html

Badan Pusat Statistik. (2024). Jumlah perusahaan industri skala mikro dan kecil menurut provinsi. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/statistics-table/2/NDQwIzI=/jumlah-perusahaan-industri-skala-mikro-dan-kecil-menurut-provinsi.html

Badan Pusat Statistik. (2024). Persentase angkatan kerja terhadap penduduk usia kerja (TPAK) menurut provinsi. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/statistics-table/2/MjM5NiMy/persentase-angkatan-kerja-terhadap-penduduk-usia-kerja--tpak--menurut-provinsi--persen-.html

Badan Pusat Statistik. (2024). Angka harapan hidup menurut provinsi dan jenis kelamin. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/statistics-table/2/NTAxIzI=/angka-harapan-hidup-ahh-menurut-provinsi-dan-jenis-kelamin.html

Badan Pusat Statistik. (2024). Jumlah dan persentase penduduk miskin menurut provinsi. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/statistics-table/3/UkVkWGJVZFNWakl6VWxKVFQwWjVWeTlSZDNabVFUMDkjMw==/jumlah-dan-persentase-penduduk-miskin-menurut-provinsi--2024.html

Badan Pusat Statistik. (2025). Produk domestik regional bruto provinsi-provinsi di Indonesia menurut lapangan usaha 2020–2024. Diakses pada 22 Mei 2026, dari https://www.bps.go.id/id/publication/2025/04/11/95c729ee8c6fb5e2cb86b00f/produk-domestik-regional-bruto-provinsi-provinsi-di-indonesia-menurut-lapangan-usaha-2020-2024.html

Kementerian Energi dan Sumber Daya Mineral. (2024, September 24).KESDM tekankan pentingnya digitalisasi di pembangkit energi bersih. https://gatrik.esdm.go.id/berita/?slug=kesdm-tekankan-pentingnya-digitalisasi-di-pembangkit-energi-bersih&category=

https://rpubs.com/agustinaadh/abcdfirst68