Principal Component Analysis (PCA) merupakan metode yang sering digunakan dalam bidang Analisis Data dan Machine Learning. PCA digunakan untuk mengurangi dimensi dari sebuah dataset yang memiliki dimensi tinggi, sehingga memungkinkan untuk analisis lanjutan seperti visualisasi dan lain sebagainya. Fungsi lain dari PCA adalah dapat meningkatkan efisiensi komputasi dan menghilangkan multikolinieritas. Pada tutorial ini, akan dibahas konsep PCA secara lengkap mulai dari prinsip-prinsip dasar sampai implementasinya dengan bahasa R.
Pengenalan PCA
Principal Component Analysis (PCA) merupakan teknik statistik yang dirancang untuk menyederhanakan data berdimensi tinggi menjadi bentuk yang lebih ringkas tanpa kehilangan informasi penting di dalamnya. Perlu dicatat bahwa pengurangan dimensi di sini bukan berarti kita menghapus atau membuang variabel begitu saja. Sebaliknya, PCA bekerja dengan cara mencari pola tersembunyi lalu merangkum variabel-variabel lama menjadi sekumpulan variabel baru yang disebut komponen utama (principal components). Hebatnya, komponen-komponen baru ini bersifat ortogonal, yang artinya mereka sama sekali tidak saling berkorelasi. Melalui komponen utama inilah data asli kita diproyeksikan ke dalam dimensi yang lebih rendah.
Di era sekarang, kita sering kali berhadapan dengan dataset yang memiliki segudang fitur atau variabel. Sayangnya, semakin banyak fitur yang dimiliki, data tersebut akan menjadi semakin kompleks dan sulit dikelola—baik saat ingin divisualisasikan, dianalisis hubungannya, maupun saat digunakan untuk membangun model. Fenomena dimensi tinggi ini kerap memicu beberapa kendala utama, di antaranya:
Sulit Divisualisasikan: Manusia hanya mampu melihat dan memahami grafik maksimal hingga tiga dimensi. Lebih dari itu, data akan sangat sulit digambarkan secara visual.
Masalah Redundansi: Banyaknya fitur sering kali memicu korelasi yang terlalu kuat antar variabel (multikolinieritas). Informasi yang tumpang tindih ini bisa merusak akurasi dan validitas hasil analisis model kita.
Risiko Overfitting: Model cenderung menjadi terlalu rumit dan hanya “menghafal” data latih, sehingga performanya justru anjlok saat diuji dengan data baru.
Beban Komputasi: Semakin kaya fiturnya, waktu proses dan sumber daya komputer yang dibutuhkan untuk pengolahan data akan membengkak secara eksponensial.
Implementasi Utama PCA
Berikut adalah contoh-contoh implementasi dari metode PCA:
Reduksi Dimensi Implementasi paling mendasar dari PCA adalah mereduksi dimensi data dengan cara meringkas sejumlah besar fitur asli menjadi beberapa komponen utama saja tanpa membuang informasi esensialnya. Melalui proses dekomposisi matriks, variabel-variabel lama yang jumlahnya mungkin puluhan atau ratusan dapat diringkas menjadi dua atau tiga komponen utama yang sudah mampu merangkum sebagian besar keragaman (variance) data asli. Hal ini membuat struktur data menjadi jauh lebih sederhana dan mempermudah langkah analisis data selanjutnya.
Menghilangkan Masalah Multikolinieritas PCA sangat andal untuk mengatasi masalah multikolinieritas, yaitu kondisi di mana terdapat hubungan korelasi linier yang sangat kuat antar-variabel independen dalam dataset. Karena setiap komponen utama yang dihasilkan oleh PCA dirancang agar saling tegak lurus (ortogonal), nilai korelasi antar-komponen baru tersebut dipastikan bernilai tepat nol (\(0\)). Dengan menggunakan skor komponen utama ini sebagai prediktor baru dalam model regresi atau algoritma Machine Learning, Anda dapat menikmati kestabilan pemodelan yang optimal tanpa khawatir hasil estimasi menjadi bias.
Visualisasi Komponen Utama (Analisis Biplot) Analisis Biplot merupakan metode visualisasi utama dalam PCA yang memetakan skor objek dan loading variabel secara simultan ke dalam sebuah grafik dua dimensi. Melalui Biplot, kita dapat melihat posisi kedekatan antar-sampel data untuk mendeteksi adanya kelompok alami (cluster) sekaligus melihat arah serta kekuatan pengaruh setiap variabel asli melalui representasi vektor panah. Grafik ini memudahkan peneliti dalam melakukan interpretasi visual yang mendalam terhadap perilaku data multidimensi yang semula mustahil untuk digambar.
Deteksi Data Pencilan (Outlier Detection) PCA sering kali diimplementasikan sebagai instrumen untuk mendeteksi data pencilan (outliers) atau anomali sebelum model intensif dibangun. Ketika data diproyeksikan ke dalam ruang komponen utama, objek atau sampel yang memiliki karakteristik sangat tidak wajar akan terlempar jauh dari pusat sebaran data (titik koordinat \(0,0\)). Dengan memeriksa plot skor komponen utama, data pencilan ini dapat diidentifikasi secara objektif untuk kemudian dievaluasi apakah perlu dibersihkan atau dipertahankan.
Pra-pemrosesan Analisis Klasterisasi (Clustering Pre-processing) Dalam algoritma pengelompokan seperti K-Means atau Hierarchical Clustering, PCA sering dijadikan sebagai langkah pra-pemrosesan untuk meningkatkan akurasi dan kecepatan komputasi. Algoritma klasterisasi berbasis jarak sering kali mengalami penurunan performa pada data berdimensi tinggi akibat fenomena curse of dimensionality. Melalui penyederhanaan dimensi yang dilakukan oleh PCA terlebih dahulu, jarak antar-objek dapat dihitung secara lebih efisien dan menghasilkan pengelompokan objek yang jauh lebih tegas serta stabil.
Rekayasa Fitur dan Kompresi Data (Feature Engineering) Dalam ekosistem Machine Learning, PCA bertindak sebagai teknik ekstraksi fitur tak terdiawasi (unsupervised feature extraction) yang sangat berguna untuk efisiensi penyimpanan dan memori. Alih-alih melakukan seleksi fitur dengan cara membuang variabel tertentu secara subjektif, PCA meramu kombinasi linier baru dari seluruh variabel secara matematis. Langkah ini berhasil mengompresi ukuran dataset secara signifikan dan memangkas waktu komputasi pelatihan model (training time) tanpa mengorbankan performa prediksi model tersebut.
Tahapan PCA
Secara matematis dan prosedural, proses Principal Component Analysis (PCA) dilakukan melalui 5 tahapan utama berikut:
1. Standardisasi Data
Langkah awal yang wajib dilakukan adalah mentransformasikan data asli agar seluruh variabel berada pada skala yang sama. Proses ini mengubah data sehingga memiliki rata-rata (\(\mu = 0\)) dan simpangan baku (\(\sigma = 1\)).
\[\mathbf{Z} = \frac{\mathbf{X} - \mu}{\sigma}\]
Tujuan: Menghindari bias analisis akibat perbedaan satuan atau skala pengukuran, sehingga setiap fitur memiliki bobot kepentingan yang setara.
2. Pembentukan Matriks Kovarian
Setelah data distandardisasi, langkah berikutnya adalah menghitung matriks kovarian untuk melihat bagaimana variabel-variabel dalam dataset saling berhubungan. Matriks kovarian merupakan matriks persegi; jika dataset Anda memiliki sebanyak \(k\) buah variabel, maka matriks kovarian yang terbentuk akan berukuran \(k \times k\). Di dalam matriks ini, setiap elemen menggambarkan tingkat asosiasi atau arah hubungan linear antar-pasangan variabel.
3. Menghitung Nilai dan Vektor Eigen
Tahap ini merupakan inti dari mekanika PCA untuk mengekstrak komponen utama dari matriks kovarian yang telah dibuat:
Nilai Eigen (\(\lambda\)): Merupakan nilai skalar non-negatif yang mencerminkan besarnya varians data yang berhasil ditangkap oleh suatu vektor eigen. Dalam konteks PCA, nilai eigen berfungsi sebagai tolok ukur kuantitatif untuk menilai tingkat kepentingan dari masing-masing komponen utama.
Vektor Eigen (\(\mathbf{v}\)): Merupakan vektor geometris yang berpasangan dengan nilai eigen. Vektor ini merepresentasikan arah atau orientasi ruang di mana sebaran data memiliki variasi paling maksimum. Dalam aplikasinya, vektor eigen disajikan dalam bentuk ternormalisasi dengan panjang vektor tepat bernilai \(1\).
4. Mengurutkan Komponen
Untuk menentukan komponen utama yang paling informatif, nilai eigen beserta vektor eigen pasangannya diurutkan secara menurun (descending), mulai dari nilai terbesar hingga terkecil:
Komponen Utama Pertama (PC1): Diambil dari vektor eigen yang memiliki nilai eigen (\(\lambda\)) terbesar, karena area ini menyimpan proporsi varians data paling tinggi.
Komponen Utama Kedua (PC2): Merupakan vektor eigen dengan nilai eigen terbesar kedua yang arahnya tegak lurus dengan PC1, dan seterusnya hingga komponen ke-\(k\).
5. Transformasi Data Asli
Langkah terakhir adalah memilih subset dari \(m\) buah vektor eigen teratas (di mana \(m < k\)) untuk menyusun sebuah matriks transformasi bernama matriks loading. Data standardisasi awal kemudian dikalikan secara matriks dengan matriks transformasi ini:
\[\mathbf{Y} = \mathbf{Z} \mathbf{V}_m\]
Hasil perkalian matriks tersebut menghasilkan koordinat skor baru (score data). Data baru inilah yang menjadi output akhir PCA, di mana dimensinya telah berhasil diringkas menjadi hanya sebanyak \(m\) komponen utama tanpa kehilangan karakteristik esensial data aslinya.
Penerapan PCA dengan R (Manual)
Pada bagian ini, akan diterapkan PCA menggunakan R. Meskipun tersedia
paket-paket di R, seperti FactoMineR yang menyediakan
fungsi untuk melakukan PCA dengan mudah, namun memahami langkah-langkah
dari PCA sangat penting. Melakukan PCA secara manual membantu kita lebih
memahami konsep dan matematika di balik teknik ini, serta memberikan
wawasan yang lebih dalam tentang bagaimana PCA bekerja dan bagaimana
menginterpretasi hasilnya.
1. Memuat Data
Data yang digunakan diambil dari https://www.bps.go.id yaitu data Produk Domestik Regional Bruto, Tingkat Pengangguran Terbuka, Persentase Penduduk Miskin, Indeks Pembangunan Manusia, Upah Minimum Provinsi, dan Happines Indeks per Provinsi Seluruh Indonesia untuk tahun 2025, kecuali untuk Happines Indeks menggunakan data terakhir yaitu tahun 2021.
# memuat data
data <- read.csv("indonesia_2025.csv", sep=";")
# menjadikan kolom no sebagai identitas baris
row.names(data) <- data$no
data$no <- NULL
# menampilkan struktur data
str(data)## 'data.frame': 38 obs. of 7 variables:
## $ provinsi: chr "Aceh" "Bali" "Banten" "Bengkulu" ...
## $ pdrb : num 257502 324149 936204 111829 208134 ...
## $ tpt : chr "5,64" "1,49" "6,69" "3,41" ...
## $ ppm : num 12.22 3.42 5.51 11.88 10.08 ...
## $ ipm : num 76.2 79.4 77.2 75.7 82.5 ...
## $ ump : chr "3.685.616" "2.996.561" "2.905.120" "2.670.039" ...
## $ hi : num 71.2 71.4 68.1 69.7 71.7 ...
2. Penyiapan Data
Berdasarkan hasil str(data) terdpaat kolom
tpt, ump yang seharusnya adalah numerik namun
masih terdeteksi sebagai string, maka perlu dilakukan konversi tipe data
sebagai berikut:
# 1. Membersihkan dan mengonversi kolom TPT (mengubah koma ',' menjadi titik '.')
data$tpt <- as.numeric(gsub(",", ".", data$tpt))
# 2. Membersihkan dan mengonversi kolom UMP (menghapus titik ribuan)
data$ump <- as.numeric(gsub("\\.", "", data$ump))
# 3. Opsional: Pastikan kolom provinsi tetap berupa karakter/faktor, dan sisanya murni numerik
data$provinsi <- as.character(data$provinsi)
# 4. Cek kembali struktur data hasil konversi
str(data)## 'data.frame': 38 obs. of 7 variables:
## $ provinsi: chr "Aceh" "Bali" "Banten" "Bengkulu" ...
## $ pdrb : num 257502 324149 936204 111829 208134 ...
## $ tpt : num 5.64 1.49 6.69 3.41 3.46 6.05 3.42 4.26 6.77 4.66 ...
## $ ppm : num 12.22 3.42 5.51 11.88 10.08 ...
## $ ipm : num 76.2 79.4 77.2 75.7 82.5 ...
## $ ump : num 3685616 2996561 2905120 2670039 2264081 ...
## $ hi : num 71.2 71.4 68.1 69.7 71.7 ...
3. Normalisasi Data
Proses normalisasi di R dapat dilakukan menggunakan fungsi
scale. Secara default, fungsi scale akan
mentransformasi data sehingga memiliki nilai rata-rata 0 dan simpangan
baku 1.
# 1. Mengubah kolom provinsi menjadi nama baris (row names) agar tidak mengganggu komputasi
data_numerik <- data[, -1] # Mengambil semua kolom kecuali kolom ke-1 (provinsi)
rownames(data_numerik) <- data$provinsi
# 2. Melakukan standardisasi data (Z-score scaling)
scaled.data <- scale(data_numerik)
# 3. Pengecekan nilai rata-rata dan simpangan baku hasil transformasi
scaled.mean <- apply(scaled.data, 2, mean)
scaled.sd <- apply(scaled.data, 2, sd)
check <- data.frame(
Rataan = round(scaled.mean, 4),
SimpanganBaku = round(scaled.sd, 4)
)
# Menampilkan tabel hasil pengecekan
check## Rataan SimpanganBaku
## pdrb 0 1
## tpt 0 1
## ppm 0 1
## ipm 0 1
## ump 0 1
## hi 0 1
3. Membuat Matriks Kovarian
Matriks kovarian dapat dihitung menggunakan fungsi cov.
Output dari fungsi cov adalah matriks persegi berukuran \(k \times k\) dengan k adalah banyaknya
variabel.
Jika ingin divisualisasikan, kita dapat menggunakan fungsi corrplot dari paket corrplot untuk menampilkan matriks kovarian tersebut.
cov.matrix <- cov(scaled.data)
# menampilkan hasil matriks kovarian
# cov.matrix
corrplot::corrplot(cov.matrix, order = "hclust",
tl.col = "black", tl.srt = 45, tl.cex = 0.5)4. Menghitung Nilai Eigen dan Vektor Eigen
Nilai eigen dan vektor eigen diperoleh dari dekomposisi matriks
kovarian. Dekomposisi matriks pada bahasa R dilakukan dengan fungsi
eigen. Fungsi eigen menghasilkan 2 output yaitu values yang
berisi nilai eigen dan vectors berisi vektor
eigen. Selanjutnya, nilai eigen dan vektor eigen diurutkan dari nilai
terbesar berdasarkan nilai eigen.
# Hitung nilai eigen dan vektor eigen
eigen.decomp <- eigen(cov.matrix)
# Lihat hasil
eigen.vals <- eigen.decomp$values
eigen.vecs <- eigen.decomp$vectors
# Urutkan nilai eigen dan vektor eigen
sorted.idx <- order(eigen.vals, decreasing = TRUE)
sorted.eigen.vals <- eigen.vals[sorted.idx]
sorted.eigen.vecs <- eigen.vecs[, sorted.idx]
cat("NILAI EIGEN (terurut):\n\n")## NILAI EIGEN (terurut):
## [1] 2.5136059 1.0894140 1.0285734 0.7027394 0.5007689 0.1648983
##
## VEKTOR EIGEN:
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.36510780 -0.274762638 -0.314623415 0.8183036 0.1398762 0.055025228
## [2,] -0.27313941 -0.758199967 -0.017256393 -0.3133230 -0.4736307 0.166530757
## [3,] 0.54442201 -0.202255047 0.005354137 0.2899567 -0.4079359 -0.642014277
## [4,] -0.57833946 0.009898339 -0.014234723 -0.2476783 0.2199918 -0.745306595
## [5,] 0.05785592 0.212860063 -0.928945475 -0.2265950 -0.1924173 -0.005819982
## [6,] -0.39733109 0.513150869 0.193761022 0.1882635 -0.7101240 0.039263311
5. Memilih Komponen Utama
Nilai eigen menunjukkan banyaknya keragaman data yang bisa dijelaskan oleh setiap komponen utama. Nilai ini biasa disajikan dalam bentuk persentase, sehingga lebih mudah diinterpretasikan. Selanjutnya berdasarkan kumulatif persentase varians tersebut, kita dapat memutuskan berapa banyak komponen utama yang akan digunakan untuk transformasi data asli. Hasil di bawah ini menunjukkan bahwa komponen utama pertama dapat menjelaskan sekitar 38,378 persen keragaman data. Sementara itu, akumulasi keragaman yang dapat dijelaskan oleh 2 komponen utama adalah sebesar 76,941.
# Hitung total nilai eigen
tot.eigen <- sum(eigen.vals)
var.pc <- sapply(sorted.eigen.vals, function(x) x/tot.eigen)*100
print(var.pc)## [1] 41.893432 18.156900 17.142891 11.712324 8.346148 2.748305
##
## Total keragaman (5 PC): 97.25169
6. Transformasi Data Asli
Data hasil PCA diperoleh dengan melakukan perkalian antara matriks data asli dengan vektor eigen dari komponen utama yang dipilih (misal 2). Perkalian ini menghasilkan data baru dengan jumlah dimensi sebanyak 2 kolom. Jika berbicara tentang pemodelan dengan memanfaatkan PCA, maka, hasil transformasi ini selanjutnya akan menjadi dataset untuk pemodelan.
# memilih 5 komponen utama
selected.eigen.vecs <- sorted.eigen.vecs[, 1:2]
# Proyeksikan data asli ke ruang berdimensi lebih rendah
pca.result <- scaled.data %*% selected.eigen.vecs
# Ubah menjadi data frame (jika diperlukan)
pca.data <- as.data.frame(pca.result)
colnames(pca.data) <- paste("PC", 1:2, sep = "")
# pca.X$Status <- status.ipm
head(pca.data) ## PC1 PC2
## Aceh -0.2587736 -0.2809370
## Bali -0.6275487 2.0990864
## Banten -1.4328961 -1.0928549
## Bengkulu 0.2237502 0.7132977
## DI Yogyakarta -0.7933432 0.6646964
## DKI Jakarta -3.3351156 -0.8818355
Penerapan PCA dengan FactoMineR
Paket FactoMineR menyediakan fungsi PCA
untuk melakukan PCA. Ringkasan output dari fungsi ini selanjutnya dapat
dilihat menggunakan fungsi summary.PCA. Informasi yang
disajikan dari ringkasan tersebut mencakup nilai eigen beserta
kumulatifnya, termasuk kontribusi menurut individu dan variabel.
# Lakukan PCA dengan fungsi PCA dari FactoMineR
pca_result <- PCA(data_numerik,
scale.unit = T,
graph = F,
ncp=7) # ncp kita set agar menghasilkan output semua dimensi (default 5)
# menampilkan ringkasan hasil pca
summary.PCA(pca_result)##
## Call:
## PCA(X = data_numerik, scale.unit = T, ncp = 7, graph = F)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6
## Variance 2.514 1.089 1.029 0.703 0.501 0.165
## % of var. 41.893 18.157 17.143 11.712 8.346 2.748
## Cumulative % of var. 41.893 60.050 77.193 88.906 97.252 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3
## Aceh | 1.273 | 0.262 0.072 0.042 | 0.285 0.196 0.050 | 0.354
## Bali | 2.705 | 0.636 0.423 0.055 | -2.127 10.931 0.619 | -0.423
## Banten | 1.975 | 1.452 2.208 0.540 | 1.108 2.963 0.314 | -0.233
## Bengkulu | 1.249 | -0.227 0.054 0.033 | -0.723 1.262 0.335 | -0.836
## DI Yogyakarta | 2.176 | 0.804 0.677 0.137 | -0.674 1.096 0.096 | -1.245
## DKI Jakarta | 5.145 | 3.380 11.960 0.432 | 0.894 1.929 0.030 | 3.532
## Gorontalo | 1.214 | -0.618 0.400 0.260 | -0.940 2.134 0.600 | -0.290
## Jambi | 0.850 | 0.457 0.219 0.289 | -0.590 0.840 0.482 | -0.158
## Jawa Barat | 3.413 | 2.114 4.679 0.384 | 1.959 9.269 0.329 | -0.327
## Jawa Tengah | 1.939 | 0.926 0.898 0.228 | 0.524 0.664 0.073 | -0.767
## ctr cos2
## Aceh 0.320 0.077 |
## Bali 0.457 0.024 |
## Banten 0.139 0.014 |
## Bengkulu 1.790 0.448 |
## DI Yogyakarta 3.969 0.328 |
## DKI Jakarta 31.909 0.471 |
## Gorontalo 0.216 0.057 |
## Jambi 0.064 0.035 |
## Jawa Barat 0.274 0.009 |
## Jawa Tengah 1.504 0.156 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## pdrb | 0.579 13.330 0.335 | 0.287 7.549 0.082 | 0.319 9.899
## tpt | 0.433 7.461 0.188 | 0.791 57.487 0.626 | 0.018 0.030
## ppm | -0.863 29.640 0.745 | 0.211 4.091 0.045 | -0.005 0.003
## ipm | 0.917 33.448 0.841 | -0.010 0.010 0.000 | 0.014 0.020
## ump | -0.092 0.335 0.008 | -0.222 4.531 0.049 | 0.942 86.294
## hi | 0.630 15.787 0.397 | -0.536 26.332 0.287 | -0.197 3.754
## cos2
## pdrb 0.102 |
## tpt 0.000 |
## ppm 0.000 |
## ipm 0.000 |
## ump 0.888 |
## hi 0.039 |
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 38 individuals, described by 6 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. for the variables"
## 4 "$var$cor" "correlations variables - dimensions"
## 5 "$var$cos2" "cos2 for the variables"
## 6 "$var$contrib" "contributions of the variables"
## 7 "$ind" "results for the individuals"
## 8 "$ind$coord" "coord. for the individuals"
## 9 "$ind$cos2" "cos2 for the individuals"
## 10 "$ind$contrib" "contributions of the individuals"
## 11 "$call" "summary statistics"
## 12 "$call$centre" "mean of the variables"
## 13 "$call$ecart.type" "standard error of the variables"
## 14 "$call$row.w" "weights for the individuals"
## 15 "$call$col.w" "weights for the variables"
Output fungsi PCA terdiri dari beberapa properti penting yaitu:
eig: matriks yang berisi semua nilai eigen, persentase variansi, dan persentase kumulatif dari variansivar: sebuah daftar matriks yang berisi semua hasil untuk variabel aktif (coord: koordinat , cor: korelasi antara variabel dan sumbu, cos2: cosinus kuadrat, contrib: kontribusi)ind: daftar matriks yang berisi semua hasil untuk individu aktif (coord: koordinat , cor: korelasi antara variabel dan sumbu, cos2: cosinus kuadrat, contrib: kontribusi)svd: berisi hasil dekomposisi matriks (vs, U dan V)call: berisi informasi pengaturan nilai parameter saat pemanggilan fungsi
catatan: vektor eigen yang dihasilkan mungkin berbeda tanda antar software/paket namun hal ini tidak mempengaruhi hasil. Meskipun demikian, bisa saja terdapat perbedaan tingkat desimal hasil PCA yang disebabkan presisi nilai desimal pada output masing-masing software/paket tersebut.
##
## NILAI EIGEN:
## [1] 2.5136059 1.0894140 1.0285734 0.7027394 0.5007689 0.1648983
##
## VEKTOR EIGEN:
## V.1 V.2 V.3 V.4 V.5 V.6
## 1 0.36510780 0.274762638 0.314623415 0.8183036 -0.1398762 -0.055025228
## 2 0.27313941 0.758199967 0.017256393 -0.3133230 0.4736307 -0.166530757
## 3 -0.54442201 0.202255047 -0.005354137 0.2899567 0.4079359 0.642014277
## 4 0.57833946 -0.009898339 0.014234723 -0.2476783 -0.2199918 0.745306595
## 5 -0.05785592 -0.212860063 0.928945475 -0.2265950 0.1924173 0.005819982
## 6 0.39733109 -0.513150869 -0.193761022 0.1882635 0.7101240 -0.039263311
##
## DATA HASIL REDUKSI DIMENSI (2 PC):
## $coord
## Dim.1 Dim.2 Dim.3 Dim.4
## Aceh 0.26224719 0.28470812 0.35387236 -0.653576459
## Bali 0.63597253 -2.12726333 -0.42257586 -0.017734058
## Banten 1.45213049 1.10752479 -0.23305071 -0.471278613
## Bengkulu -0.22675366 -0.72287258 -0.83633304 0.004096522
## DI Yogyakarta 0.80399257 -0.67361889 -1.24546677 -0.211851536
## DKI Jakarta 3.37988425 0.89367275 3.53156234 1.217700463
## Gorontalo -0.61846757 -0.93992286 -0.29042413 0.024629450
## Jambi 0.45697702 -0.58961164 -0.15790933 -0.302144385
## Jawa Barat 2.11410205 1.95890447 -0.32738725 1.699976514
## Jawa Tengah 0.92631431 0.52426640 -0.76670104 1.410807561
## Jawa Timur 1.50259626 0.47646597 -0.12843941 2.775524628
## Kalimantan Barat 0.28330049 -0.16649277 -0.53970198 -0.268783692
## Kalimantan Selatan 0.76358141 -0.79718779 0.13261485 -0.596005970
## Kalimantan Tengah 0.45019705 -0.86743797 0.08157181 -0.488707684
## Kalimantan Timur 1.43518269 -0.03643956 0.44350068 -0.427482976
## Kalimantan Utara 0.29411618 -1.02940716 0.14278033 -0.477773337
## Kepulauan Bangka Belitung -0.56612200 0.66969249 1.02642388 -1.363966887
## Kepulauan Riau 0.59583442 1.89801986 0.87728430 -1.800016466
## Lampung 0.11269954 -0.31819380 -0.45650101 0.115584848
## Maluku -0.08196077 0.72183618 -0.34951492 -0.539485863
## Maluku Utara 0.25554446 -0.59640256 -0.05060283 -0.532952869
## Nusa Tenggara Barat -0.40558765 -0.89420821 -0.89343644 0.235174718
## Nusa Tenggara Timur -1.34810875 -0.49740081 -1.22717815 0.698478641
## Papua -0.22128692 1.19993204 0.23672690 -0.758331553
## Papua Barat -1.49331124 -0.16348462 0.14940722 0.203761813
## Papua Barat Daya -1.50062226 3.38863387 -3.27733142 -0.115072357
## Papua Pegunungan -5.45468584 -0.22805358 1.33762132 1.119284472
## Papua Selatan -2.62891681 0.79874713 1.41748471 -0.496161814
## Papua Tengah -4.56463465 0.95249463 1.42103449 0.618241629
## Riau 0.88828161 -0.41840216 0.46155062 0.290704485
## Sulawesi Barat -0.68738729 -1.26973001 -0.41536320 0.142597330
## Sulawesi Selatan 0.58696049 -0.54810124 0.46295422 -0.076070430
## Sulawesi Tengah -0.35431200 -1.09770567 -0.50997897 0.426861646
## Sulawesi Tenggara -0.18273178 -0.98942518 -0.39374371 0.017658451
## Sulawesi Utara 0.86417181 0.18574835 0.41753830 -1.045272394
## Sumatera Barat 1.07010861 0.24686313 -0.37011588 -0.752399519
## Sumatera Selatan 0.11381923 -0.75829093 0.47157545 0.172450352
## Sumatera Utara 1.08687454 0.42214312 -0.07374773 0.221535336
## Dim.5 Dim.6
## Aceh 0.88862870 0.357328704
## Bali -1.43095331 0.398469669
## Banten 0.40147114 -0.360140700
## Bengkulu -0.13573605 0.518395579
## DI Yogyakarta -0.58380207 1.302521002
## DKI Jakarta -0.06473174 0.534099324
## Gorontalo 0.31680827 0.148668337
## Jambi 0.09288319 -0.201568643
## Jawa Barat 0.14766973 -0.567358979
## Jawa Tengah -0.16435946 -0.140237849
## Jawa Timur -0.67949520 0.057125272
## Kalimantan Barat 0.20711438 -0.804630137
## Kalimantan Selatan -0.17052509 -0.369355231
## Kalimantan Tengah -0.10841468 -0.396643434
## Kalimantan Timur 0.07015519 0.101677721
## Kalimantan Utara 0.04295069 -0.445124458
## Kepulauan Bangka Belitung -1.81760690 -0.296324715
## Kepulauan Riau -1.48027141 0.154971734
## Lampung 0.10852377 -0.082621462
## Maluku 1.43854768 0.283876629
## Maluku Utara 0.32357513 -0.739027655
## Nusa Tenggara Barat -0.23814182 0.255051413
## Nusa Tenggara Timur 0.38025055 0.266857440
## Papua 1.75505844 0.564856733
## Papua Barat 1.42574414 0.132882398
## Papua Barat Daya -0.81761455 0.024757030
## Papua Pegunungan -0.32013181 -0.578993862
## Papua Selatan -0.65316110 0.433812141
## Papua Tengah 0.23591490 0.241555286
## Riau -0.18749814 -0.122756470
## Sulawesi Barat -0.03982693 -0.247981781
## Sulawesi Selatan 0.05688319 -0.042499932
## Sulawesi Tengah -0.13634704 -0.001962399
## Sulawesi Tenggara -0.03192534 0.133170810
## Sulawesi Utara 0.76524212 -0.255315134
## Sumatera Barat 0.21148725 -0.216778679
## Sumatera Selatan 0.07726880 0.106731410
## Sumatera Utara 0.11436536 -0.147487116
Visualisasi PCA
1. Scree Plot (fviz_eig)
Scree Plot merupakan grafik yang menampilkan persentase keragaman (variansi) yang dapat dijelaskan oleh setiap komponen utama (Principal Component/PC) pada PCA. Visualisasi ini membantu menentukan jumlah komponen utama yang perlu dipertahankan agar informasi penting dalam data tetap terwakili.
Pada scree plot, sumbu horizontal menunjukkan urutan komponen utama (PC1, PC2, dan seterusnya), sedangkan sumbu vertikal menunjukkan persentase variansi yang dijelaskan oleh masing-masing komponen. Umumnya, komponen utama yang memiliki persentase variansi lebih besar diprioritaskan karena mampu menjelaskan lebih banyak informasi dari data. Selain itu, scree plot juga dapat digunakan untuk mengidentifikasi titik siku (elbow point), yaitu titik ketika penambahan komponen utama hanya memberikan peningkatan variansi yang relatif kecil.
Visualisasi scree plot dapat dibuat menggunakan fungsi
fviz_eig() dari paket factoextra. Berikut
contoh scree plot berdasarkan hasil PCA yang telah diperoleh sebelumnya.
Berikut contoh hasil menggunakan hasil sebelumnya:
# membuat scree plot
screeplot <- fviz_eig(pca_result,
addlabels = TRUE,
ncp = 10,
barfill = "skyblue",
barcolor = "darkblue",
linecolor = "red")
# Tampilkan scree plot
plot(screeplot)Berdasarkan hasil Scree plot di atas, terlihat bahwa
Dimensi 1 cukup mendominasi karena mampu menjelaskan
variansi sebesar 41.9%. Kemudian untuk Dimensi
2 dan seterusnya terjadi penurunan yang signifikan. Nilai
Dimensi 2 yaitu sebesar 18.2% kemudian
dimensi-dimensi selanjutnya menurun secara perlahan, sehingga nampak
terlihat titik “siku” atau biasa disebut elbow yang berarti
penurunan drastis pertama berada di antara Dimensi 1
dan Dimensi 2.
Correlation Circle (fviz_pca_var)
Correlation circle merupakan salah satu visualisasi pada Principal Component Analysis (PCA) yang digunakan untuk melihat hubungan antar variabel setelah data direduksi ke dalam beberapa komponen utama. Pada grafik ini, setiap variabel digambarkan sebagai sebuah panah (vektor) yang berawal dari titik pusat (0,0).
Beberapa hal penting yang dapat dipahami dari correlation circle adalah sebagai berikut.
- Panjang panah menunjukkan seberapa baik suatu variabel direpresentasikan oleh komponen utama yang ditampilkan (PC1 dan PC2). Semakin panjang panah dan semakin mendekati lingkaran, semakin besar peran variabel tersebut dalam menjelaskan variasi data.
- Arah panah menunjukkan hubungan variabel dengan masing-masing komponen utama. Variabel yang mengarah ke kanan memiliki hubungan positif dengan PC1, sedangkan yang mengarah ke kiri memiliki hubungan negatif dengan PC1. Demikian pula, arah ke atas menunjukkan hubungan positif dengan PC2 dan arah ke bawah menunjukkan hubungan negatif dengan PC2.
- Sudut antar panah menunjukkan hubungan antarvariabel. Panah yang searah menunjukkan korelasi positif, panah yang saling berlawanan menunjukkan korelasi negatif, sedangkan panah yang membentuk sudut mendekati 90° menunjukkan hubungan yang lemah atau tidak berkorelasi.
- Warna panah menunjukkan besarnya kontribusi (contribution) masing-masing variabel terhadap pembentukan komponen utama. Semakin merah warnanya, semakin besar kontribusi variabel tersebut.
Visualisasi ini membantu peneliti memahami variabel mana yang memiliki pengaruh paling besar terhadap struktur data serta bagaimana hubungan antarvariabel setelah dilakukan reduksi dimensi menggunakan PCA.
# Buat correlation circle untuk kontribusi (contrib)
contrib_circle_var <- fviz_pca_var(pca_result, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) +
ggtitle("Hubungan Antarvariabel pada Komponen Utama")
contrib_circle_var
Pada contoh ini digunakan data seluruh provinsi di Indonesia yang
terdiri atas enam variabel, yaitu Produk Domestik Regional Bruto (PDRB),
Tingkat Pengangguran Terbuka (TPT), Persentase Penduduk Miskin (PPM),
Indeks Pembangunan Manusia (IPM), Upah Minimum Provinsi (UMP), dan
Happiness Index (HI). Dua komponen utama pertama mampu menjelaskan
sekitar 60,1% keragaman data, yaitu Dim1 sebesar 41,9% dan Dim2 sebesar
18,2%.
Berdasarkan Gambar di atas dapat diinterpretasikan sebagai berikut.
- Variabel IPM memiliki kontribusi terbesar terhadap PC1. Hal ini terlihat dari panah IPM yang hampir mencapai lingkaran dan berwarna merah, sehingga IPM menjadi salah satu variabel yang paling berperan dalam membedakan karakteristik antarprovinsi.
- Variabel TPT memiliki kontribusi terbesar terhadap PC2. Panah TPT mengarah kuat ke atas dan mendekati lingkaran, sehingga variasi pada komponen utama kedua banyak dipengaruhi oleh tingkat pengangguran terbuka.
- PDRB dan HI memiliki arah yang relatif sama. Hal ini menunjukkan bahwa kedua variabel cenderung berkorelasi positif. Secara umum, provinsi dengan nilai PDRB yang lebih tinggi cenderung memiliki nilai Happiness Index yang lebih tinggi pula.
- IPM dan PPM berada pada arah yang hampir berlawanan. Hal ini menunjukkan adanya korelasi negatif antara kedua variabel. Artinya, provinsi dengan nilai IPM yang tinggi cenderung memiliki persentase penduduk miskin yang lebih rendah, dan sebaliknya.
- UMP berada dekat dengan titik pusat. Posisi ini menunjukkan bahwa UMP kurang terwakili oleh dua komponen utama pertama (PC1 dan PC2). Dengan kata lain, variasi UMP kemungkinan lebih banyak dijelaskan oleh komponen utama berikutnya (misalnya PC3 atau PC4), sehingga kontribusinya pada dua dimensi pertama relatif kecil.
- Warna panah memperlihatkan besarnya kontribusi masing-masing variabel. Variabel IPM, TPT, HI, dan PPM memiliki warna yang lebih merah sehingga memberikan kontribusi yang lebih besar terhadap pembentukan dua komponen utama dibandingkan PDRB dan terutama UMP.
Berdasarkan correlation circle, dapat disimpulkan bahwa IPM, TPT, HI, dan PPM merupakan variabel yang paling berperan dalam membentuk struktur data antarprovinsi pada dua komponen utama pertama. Selain itu, terlihat adanya hubungan positif antara PDRB dan HI, serta hubungan negatif antara IPM dan PPM. Sementara itu, UMP memiliki kontribusi yang relatif kecil pada Dim1 dan Dim2, sehingga informasi yang dikandungnya kemungkinan lebih banyak dijelaskan oleh komponen utama berikutnya.
Catatan penting: Interpretasi hubungan antarvariabel pada correlation circle didasarkan pada arah panah, sedangkan besar kontribusi ditunjukkan oleh warna panah (karena Anda menggunakan col.var = “contrib”). Adapun panjang panah menunjukkan seberapa baik variabel tersebut direpresentasikan oleh bidang PC1–PC2, bukan besarnya kontribusi secara langsung. Ini adalah perbedaan yang sering membingungkan bagi pemula.
Individual Factor Map(fviz_pca_ind)
Visualisasi individu (Individual Factor Map) digunakan untuk melihat posisi setiap objek atau observasi pada ruang komponen utama hasil PCA.
Beberapa informasi yang dapat diperoleh dari visualisasi ini adalah sebagai berikut.
- Individu yang letaknya berdekatan memiliki karakteristik yang relatif mirip berdasarkan variabel yang digunakan.
- Individu yang berjauhan menunjukkan karakteristik yang semakin berbeda.
- Individu yang berada jauh dari titik pusat (0,0) memiliki karakteristik yang lebih berbeda dibandingkan rata-rata individu lainnya sehingga memberikan kontribusi lebih besar dalam pembentukan komponen utama.
- Pada visualisasi ini, warna titik menunjukkan besarnya kontribusi (contribution) masing-masing individu terhadap pembentukan dua komponen utama. Semakin merah warna titik, semakin besar kontribusinya.
Visualisasi ini membantu mengidentifikasi kelompok individu yang memiliki karakteristik serupa sekaligus mendeteksi individu yang memiliki karakteristik unik atau berbeda dibandingkan individu lainnya.
# Correlation circle / plot individu berdasarkan kontribusi
contrib_ind <- fviz_pca_ind(
pca_result,
col.ind = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE,
labelsize = 1.5
) +
ggtitle("Sebaran Individu pada Komponen Utama")
contrib_ind
Pada contoh ini, setiap titik merepresentasikan satu provinsi di
Indonesia. Posisi masing-masing provinsi ditentukan berdasarkan
kemiripan nilai keenam variabel yang digunakan, yaitu PDRB, TPT, PPM,
IPM, UMP, dan Happiness Index. Berdasarkan visualisasi di atas dapat
diperoleh beberapa informasi sebagai berikut:
Sebagian besar provinsi berkumpul di sekitar titik pusat. Hal ini menunjukkan bahwa sebagian besar provinsi memiliki karakteristik yang relatif mirip jika dilihat berdasarkan kombinasi enam indikator yang digunakan.
Beberapa provinsi berada jauh dari kelompok utama. Provinsi seperti: Papua Pegunungan, Papua Tengah, Papua Barat Daya, DKI Jakarta, Jawa Barat berada cukup jauh dari pusat sehingga memiliki karakteristik yang berbeda dibandingkan mayoritas provinsi lainnya.
Papua Pegunungan memiliki posisi paling jauh pada arah negatif Dim1. Hal ini menunjukkan bahwa Papua Pegunungan merupakan salah satu provinsi yang paling berbeda dibandingkan provinsi lainnya berdasarkan kombinasi indikator yang digunakan. Selain itu, warnanya yang merah menunjukkan bahwa provinsi ini memberikan kontribusi yang besar terhadap pembentukan komponen utama.
Papua Barat Daya memiliki nilai Dim2 yang paling tinggi. Papua Barat Daya berada pada bagian atas grafik sehingga memiliki skor PC2 yang tinggi dan berbeda dari sebagian besar provinsi lainnya. Warna titiknya juga relatif lebih merah sehingga kontribusinya terhadap pembentukan komponen utama cukup besar.
DKI Jakarta dan Jawa Barat berada pada sisi kanan grafik. Kedua provinsi memiliki skor Dim1 yang tinggi sehingga memiliki karakteristik yang serupa pada dimensi pertama, meskipun masih terdapat perbedaan pada dimensi kedua (Dim2).
Warna menunjukkan besar kontribusi. Terlihat bahwa: Papua Pegunungan, Papua Tengah, Papua Barat Daya, DKI Jakarta, memiliki warna yang lebih merah atau oranye dibandingkan provinsi lain. Artinya, provinsi-provinsi tersebut memberikan kontribusi yang lebih besar terhadap pembentukan dua komponen utama dibandingkan provinsi yang berwarna biru kehijauan.
Berdasarkan visualisasi individu, dapat disimpulkan bahwa sebagian besar provinsi di Indonesia memiliki karakteristik yang relatif mirip berdasarkan enam indikator yang dianalisis, sedangkan beberapa provinsi seperti Papua Pegunungan, Papua Tengah, Papua Barat Daya, DKI Jakarta, dan Jawa Barat memiliki karakteristik yang lebih berbeda sehingga memberikan kontribusi yang lebih besar dalam pembentukan dua komponen utama.
Catatan: Perlu diperhatikan bahwa posisi titik pada plot ini menunjukkan skor (score) masing-masing provinsi pada komponen utama, sedangkan warna titik menunjukkan besarnya kontribusi provinsi terhadap pembentukan komponen utama. Dengan demikian, posisi dan warna menyampaikan informasi yang berbeda.
Plot Kontribusi(fviz_contrib)
Plot kontribusi digunakan untuk mengetahui variabel atau individu mana yang paling berperan dalam membentuk setiap komponen utama (Principal Component/PC). Semakin besar nilai kontribusi suatu variabel atau individu, semakin besar pula pengaruhnya terhadap pembentukan komponen utama tersebut.
Nilai kontribusi dinyatakan dalam persentase (%), sehingga total kontribusi seluruh variabel (atau seluruh individu) pada setiap komponen utama adalah 100%. Oleh karena itu, plot kontribusi sangat membantu dalam mengidentifikasi variabel atau individu yang paling dominan pada masing-masing komponen utama.
Visualisasi plot kontribusi dapat dibuat menggunakan fungsi
fviz_contrib(). Parameter choice digunakan untuk menentukan
objek yang akan ditampilkan, yaitu choice = “var” untuk melihat
kontribusi variabel, sedangkan choice = “ind” digunakan untuk melihat
kontribusi individu.
# Buat plot kontribusi variabel untuk PC1/Dim1
contrib_v_Dim1 <- fviz_contrib(pca_result, choice = "var", axes = 1) + ggtitle("Kontribusi variabel pada PC1")
contrib_v_Dim1
Gambar di atas menunjukkan kontribusi masing-masing variabel dalam
membentuk komponen utama pertama (PC1). Semakin tinggi batang pada
grafik, semakin besar peran variabel tersebut dalam membentuk PC1. Garis
putus-putus merah menunjukkan kontribusi rata-rata setiap variabel,
yaitu sekitar 16,67% (100% ÷ 6 variabel). Variabel yang memiliki
kontribusi di atas garis merah dapat dianggap memberikan pengaruh yang
lebih besar daripada rata-rata terhadap pembentukan PC1.
Berdasarkan grafik, Indeks Pembangunan Manusia (IPM) merupakan variabel dengan kontribusi terbesar terhadap PC1, yaitu sekitar 33%, diikuti oleh Persentase Penduduk Miskin (PPM) dengan kontribusi sekitar 30%. Hal ini menunjukkan bahwa PC1 terutama dibentuk oleh variasi pada kedua variabel tersebut.
Selanjutnya, Happiness Index (HI) memiliki kontribusi sekitar 16%, mendekati nilai rata-rata kontribusi. Sementara itu, Produk Domestik Regional Bruto (PDRB) memberikan kontribusi sekitar 13%, sedangkan Tingkat Pengangguran Terbuka (TPT) hanya sekitar 8%. Variabel Upah Minimum Provinsi (UMP) memiliki kontribusi yang sangat kecil, yaitu kurang dari 1%, sehingga pengaruhnya terhadap pembentukan PC1 relatif tidak signifikan.
Dengan demikian, dapat disimpulkan bahwa PC1 lebih banyak merepresentasikan variasi yang berkaitan dengan IPM dan PPM, sedangkan UMP hampir tidak berperan dalam pembentukan komponen utama pertama.
# Buat plot kontribusi variabel untuk PC1/Dim1
contrib_v_Dim1 <- fviz_contrib(pca_result, choice = "ind", axes = 1) + ggtitle("Kontribusi individu pada PC1")
contrib_v_Dim1
Gambar di atas menunjukkan kontribusi masing-masing provinsi dalam
membentuk komponen utama pertama (PC1). Semakin besar nilai kontribusi
suatu provinsi, semakin besar perannya dalam membentuk arah PC1.
Garis putus-putus merah menunjukkan kontribusi rata-rata seluruh
provinsi, yaitu sekitar 2,94% (100% dibagi 34 provinsi).
Provinsi yang memiliki kontribusi di atas garis tersebut merupakan
provinsi yang paling berpengaruh terhadap pembentukan PC1.
Berdasarkan grafik, Papua Pegunungan merupakan provinsi dengan kontribusi terbesar terhadap PC1, yaitu sekitar 31%, diikuti oleh Papua Tengah dengan kontribusi sekitar 22%. Selanjutnya, DKI Jakarta, Papua Selatan, dan Jawa Barat juga memiliki kontribusi yang relatif tinggi dibandingkan provinsi lainnya. Kelima provinsi tersebut memiliki kontribusi di atas rata-rata sehingga menjadi penyusun utama komponen pertama.
Sebaliknya, sebagian besar provinsi memiliki kontribusi yang relatif kecil, bahkan berada di bawah nilai rata-rata. Hal ini menunjukkan bahwa karakteristik provinsi-provinsi tersebut lebih dekat dengan pola umum data sehingga pengaruhnya terhadap pembentukan PC1 tidak sebesar provinsi-provinsi dengan kontribusi tinggi.
Secara keseluruhan, hasil ini menunjukkan bahwa PC1 terutama dibentuk oleh karakteristik beberapa provinsi tertentu, khususnya Papua Pegunungan, Papua Tengah, DKI Jakarta, Papua Selatan, dan Jawa Barat. Provinsi-provinsi tersebut memiliki karakteristik yang paling berbeda dibandingkan provinsi lainnya berdasarkan kombinasi enam indikator yang dianalisis, yaitu PDRB, TPT, PPM, IPM, UMP, dan Happiness Index.
Catatan: Besarnya kontribusi suatu provinsi tidak menunjukkan bahwa kondisinya lebih baik atau lebih buruk, melainkan menunjukkan bahwa provinsi tersebut memiliki karakteristik yang paling berpengaruh dalam membentuk komponen utama. Untuk mengetahui apakah karakteristik suatu provinsi berada pada arah positif atau negatif terhadap PC1 serta variabel apa yang menyebabkannya, interpretasi perlu dikombinasikan dengan plot individu (Individual Factor Map) dan correlation circle.
Plot Cos² (fviz_cos2)
Plot cosinus kuadrat (Cos²) digunakan untuk mengukur kualitas representasi suatu variabel atau individu pada komponen utama hasil Principal Component Analysis (PCA). Nilai Cos² menunjukkan seberapa baik informasi dari suatu variabel atau individu dapat dijelaskan oleh komponen utama yang ditampilkan, misalnya PC1 dan PC2.
Nilai Cos² berada pada rentang 0 hingga 1. Semakin mendekati 1, semakin baik variabel atau individu direpresentasikan oleh komponen utama, sehingga interpretasi terhadap posisi variabel atau individu pada plot PCA menjadi semakin dapat dipercaya. Sebaliknya, nilai Cos² yang mendekati 0 menunjukkan bahwa komponen utama tersebut belum mampu menjelaskan informasi dari variabel atau individu dengan baik.
Perlu diperhatikan bahwa Cos² berbeda dengan kontribusi (contribution). Kontribusi menunjukkan seberapa besar peran suatu variabel atau individu dalam membentuk komponen utama, sedangkan Cos² menunjukkan seberapa baik variabel atau individu tersebut direpresentasikan oleh komponen utama.
Visualisasi nilai Cos² dapat dibuat menggunakan fungsi
fviz_cos2(). Sama seperti pada plot kontribusi, parameter
choice digunakan untuk menentukan objek yang akan
ditampilkan, yaitu choice = "var" untuk menampilkan nilai
Cos² variabel, sedangkan choice = "ind"
digunakan untuk menampilkan nilai Cos² individu.
Parameter axes digunakan untuk memilih komponen utama yang
akan ditampilkan, misalnya axes = 1 untuk
PC1 dan axes = 2 untuk
PC2.
Perbedaan Contribution dan Cos²
| Aspek | Contribution | Cos² |
|---|---|---|
| Menunjukkan | Besarnya peran dalam membentuk komponen utama | Kualitas representasi pada komponen utama |
| Pertanyaan yang dijawab | Variabel atau individu mana yang paling membentuk PC1 atau PC2? | Variabel atau individu mana yang paling baik dijelaskan oleh PC1 atau PC2? |
| Rentang nilai | Total kontribusi pada setiap komponen utama = 100% | Bernilai 0–1 |
| Interpretasi | Semakin besar nilainya, semakin besar pengaruhnya dalam membentuk komponen utama | Semakin besar nilainya, semakin baik variabel atau individu direpresentasikan oleh komponen utama |
Catatan: Contribution dan Cos² memiliki makna yang berbeda. Contribution digunakan untuk mengidentifikasi variabel atau individu yang paling berperan dalam membentuk suatu komponen utama, sedangkan Cos² digunakan untuk menilai seberapa baik variabel atau individu tersebut direpresentasikan oleh komponen utama. Dengan kata lain, Contribution menjawab pertanyaan “siapa yang membentuk komponen utama?”, sedangkan Cos² menjawab pertanyaan “siapa yang paling baik dijelaskan oleh komponen utama?”.
# Buat plot cosinus kuadrat untuk seluruh variabel
cos2_v_PC1 <- fviz_cos2(pca_result, axes = 1, choice = "var")
plot(cos2_v_PC1)Chart di atas menunjukkan nilai Cos² (Cosinus Kuadrat) masing-masing variabel terhadap komponen utama pertama (PC1). Nilai Cos² menunjukkan kualitas representasi suatu variabel pada PC1. Semakin mendekati 1, semakin baik variabel tersebut direpresentasikan oleh PC1, sedangkan nilai yang mendekati 0 menunjukkan bahwa PC1 belum mampu menjelaskan variabel tersebut dengan baik.
Berdasarkan grafik, IPM memiliki nilai Cos² tertinggi (sekitar 0,84), diikuti oleh PPM (sekitar 0,75). Hal ini menunjukkan bahwa kedua variabel tersebut direpresentasikan dengan sangat baik oleh PC1. Sementara itu, HI dan PDRB memiliki kualitas representasi yang sedang, sedangkan TPT memiliki kualitas representasi yang rendah. Variabel UMP memiliki nilai Cos² yang sangat kecil, sehingga hampir tidak direpresentasikan oleh PC1.
Dengan demikian, dapat disimpulkan bahwa PC1 paling baik merepresentasikan variabel IPM dan PPM, sedangkan UMP merupakan variabel yang paling kurang terwakili pada komponen utama pertama.
Catatan: Cos² mengukur kualitas representasi suatu variabel pada komponen utama, sedangkan Contribution mengukur besarnya peran variabel dalam membentuk komponen utama.
# Buat plot cosinus kuadrat untuk seluruh individu
cos2_ind_PC1 <- fviz_cos2(pca_result, axes = 1, choice = "ind")
plot(cos2_ind_PC1)Gambar di atas menunjukkan nilai Cos² (Cosinus Kuadrat) masing-masing provinsi terhadap komponen utama pertama (PC1). Nilai Cos² menunjukkan kualitas representasi suatu provinsi pada PC1. Semakin mendekati 1, semakin baik karakteristik provinsi tersebut direpresentasikan oleh PC1, sedangkan nilai yang mendekati 0 menunjukkan bahwa PC1 belum mampu menjelaskan karakteristik provinsi tersebut dengan baik.
Berdasarkan grafik, Papua Pegunungan, Papua Tengah, Kalimantan Timur, dan Sumatera Utara memiliki nilai Cos² yang paling tinggi, sehingga karakteristik provinsi-provinsi tersebut direpresentasikan dengan sangat baik oleh PC1. Sebaliknya, beberapa provinsi seperti Papua, Maluku, dan Sumatera Selatan memiliki nilai Cos² yang sangat rendah, sehingga karakteristiknya kurang terwakili oleh PC1.
Dengan demikian, dapat disimpulkan bahwa PC1 lebih baik merepresentasikan karakteristik beberapa provinsi tertentu, terutama Papua Pegunungan dan Papua Tengah, sedangkan beberapa provinsi lainnya lebih banyak dijelaskan oleh komponen utama berikutnya.
Catatan: Nilai Cos² yang tinggi menunjukkan bahwa suatu individu (provinsi) direpresentasikan dengan baik oleh komponen utama, bukan menunjukkan bahwa individu tersebut memiliki pengaruh terbesar dalam membentuk komponen utama. Untuk mengetahui besarnya pengaruh setiap provinsi terhadap pembentukan PC1, gunakan plot Contribution.
Biplot(fviz_pca_biplot)
Biplot merupakan salah satu visualisasi pada Principal Component Analysis (PCA) yang menampilkan individu (objek) dan variabel secara bersamaan dalam satu grafik. Melalui biplot, pengguna dapat melihat hubungan antarvariabel sekaligus mengetahui posisi masing-masing individu berdasarkan variabel yang diamati.
Pada biplot, titik merepresentasikan individu (misalnya provinsi), sedangkan panah (vektor) merepresentasikan variabel. Posisi individu menunjukkan kemiripan karakteristik antarobjek, sedangkan arah dan panjang panah menunjukkan hubungan variabel dengan komponen utama.
Beberapa hal yang dapat diinterpretasikan dari biplot adalah sebagai berikut.
- Individu yang berada berdekatan memiliki karakteristik yang relatif mirip.
- Individu yang berjauhan menunjukkan karakteristik yang semakin berbeda.
- Variabel yang memiliki arah panah yang sama menunjukkan korelasi positif, sedangkan panah yang saling berlawanan menunjukkan korelasi negatif.
- Panjang panah menunjukkan seberapa baik variabel direpresentasikan oleh komponen utama. Semakin panjang panah, semakin baik representasi variabel pada bidang PCA.
- Individu yang berada searah dengan suatu panah cenderung memiliki nilai yang tinggi pada variabel tersebut, sedangkan individu yang berada pada arah berlawanan cenderung memiliki nilai yang lebih rendah.
Visualisasi biplot dapat dibuat menggunakan fungsi
fviz_pca_biplot(). Fungsi ini menggabungkan informasi yang
terdapat pada plot individu dan correlation
circle, sehingga memudahkan interpretasi hubungan antara
individu dan variabel dalam satu tampilan.
Contoh Biplot 1
Biplot ini murni hanya menggabungkan plot individu dan correlation circle.
# Membuat biplot PCA
biplot_pca <- fviz_pca_biplot(
pca_result,
repel = TRUE,
labelsize=2.5,
col.var = "red",
col.ind = "contrib",
) +
ggtitle("Biplot PCA")
biplot_pca
Biplot PCA menunjukkan hubungan antara provinsi dan variabel secara
bersamaan pada dua komponen utama, yaitu PC1 (41,9%) dan PC2 (18,2%).
Terlihat bahwa IPM, PDRB, dan Happiness Index (HI) mengarah ke sisi
kanan, sedangkan Persentase Penduduk Miskin (PPM) mengarah ke sisi kiri,
yang mengindikasikan bahwa provinsi dengan nilai IPM, PDRB, dan HI yang
tinggi cenderung memiliki persentase penduduk miskin yang lebih rendah.
Selain itu, DKI Jakarta, Jawa Barat, dan Jawa Timur berada searah dengan
IPM dan PDRB, menunjukkan bahwa provinsi tersebut memiliki nilai yang
relatif tinggi pada indikator tersebut. Sebaliknya, beberapa provinsi di
wilayah Papua berada pada arah yang berdekatan dengan PPM, yang
menunjukkan karakteristik yang berbeda dibandingkan mayoritas provinsi
lainnya.
Contoh Biplot 2
Versi kedua adalah menambahkan kategorisasi manual pada status IPM untuk informasi tambahan.
# 1. Atur nama baris data menggunakan kolom provinsi
rownames(data) <- data$provinsi
# 2. Kelompokkan nilai IPM
status.ipm <- cut(data$ipm,
breaks = c(-Inf, 60, 70, 80, Inf),
labels = c("Rendah", "Sedang", "Tinggi", "Sangat Tinggi"),
right = FALSE)
# 3. Visualisasi Biplot dengan label provinsi
fviz_pca_biplot(pca_result,
geom.ind = c("point", "text"),
col.ind = status.ipm,
palette = c("#FC4E07", "#E7B800", "#00AFBB", "#2E9FDF"),
col.var = "red",
legend.title = "Kategori",
addEllipses = TRUE,
labelsize=2.5,
repel = TRUE) ## Ignoring unknown labels:
## • linetype : "Kategori"
## Too few points to calculate an ellipse
## Too few points to calculate an ellipse
Biplot ini menampilkan posisi provinsi berdasarkan kategori IPM sehingga memudahkan pengamatan pola pengelompokan. Terlihat bahwa provinsi dengan kategori Tinggi dan Sangat Tinggi cenderung terkonsentrasi di sisi kanan biplot, searah dengan vektor IPM, PDRB, dan HI. Sebaliknya, provinsi dengan kategori Sedang dan Rendah lebih banyak berada di sisi kiri, yang berdekatan dengan arah PPM. Meskipun terdapat tumpang tindih antar kelompok, pola ini menunjukkan bahwa PCA mampu memisahkan provinsi berdasarkan tingkat pembangunan manusianya, sehingga provinsi dengan karakteristik yang serupa cenderung berada pada wilayah yang sama dalam ruang komponen utama.