Analisis ini dilakukan untuk mengeksplorasi Global Country Information Dataset 2023, memahami pola dan hubungan antar indikator, serta menerapkan PCA dan FA untuk mereduksi dimensi data dan mengidentifikasi faktor-faktor utama yang menjelaskan variasi data.

Library dan Data

library(psych)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.2
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggplot2::%+%()   masks psych::%+%()
## ✖ ggplot2::alpha() masks psych::alpha()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data <- read.csv("world-data-2023.csv")

Variabel Kuantitatif

vars <- c(
  "Density..P.Km2.",
  "Agricultural.Land....",
  "Land.Area.Km2.",
  "Birth.Rate",
  "Co2.Emissions",
  "CPI",
  "Fertility.Rate",
  "Forested.Area....",
  "GDP",
  "Life.expectancy",
  "Infant.mortality",
  "Physicians.per.thousand",
  "Population",
  "Unemployment.rate"
)

pca_data <- data[, vars]

Data Cleaning

clean_numeric <- function(x) {
  as.numeric(gsub("[%,\\$,]", "", x))
}

pca_data[] <- lapply(pca_data, clean_numeric)
pca_data <- na.omit(pca_data)
pca_scaled <- scale(pca_data)

Uji Kelayakan PCA

KMO(pca_scaled)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = pca_scaled)
## Overall MSA =  0.7
## MSA for each item = 
##         Density..P.Km2.   Agricultural.Land....          Land.Area.Km2. 
##                    0.59                    0.44                    0.89 
##              Birth.Rate           Co2.Emissions                     CPI 
##                    0.73                    0.57                    0.78 
##          Fertility.Rate       Forested.Area....                     GDP 
##                    0.73                    0.40                    0.58 
##         Life.expectancy        Infant.mortality Physicians.per.thousand 
##                    0.78                    0.80                    0.82 
##              Population       Unemployment.rate 
##                    0.59                    0.33
cortest.bartlett(cor(pca_scaled), n = nrow(pca_scaled))
## $chisq
## [1] 2006.472
## 
## $p.value
## [1] 0
## 
## $df
## [1] 91

Hasil uji Kaiser–Meyer–Olkin (KMO) menunjukkan nilai sebesar 0,70 yang berarti data layak untuk dilakukan analisis Principal Component Analysis (PCA). Selain itu, Bartlett’s Test of Sphericity menghasilkan nilai signifikansi kurang dari 0,05, yang menunjukkan adanya korelasi antar variabel. Namun, terdapat beberapa variabel dengan nilai MSA < 0,5, sehingga kontribusinya terhadap struktur komponen masih kurang optimal.

Optimasi Variabel

pca_opt <- pca_data[, !colnames(pca_data) %in% c(
  "Agricultural.Land....",
  "Forested.Area....",
  "Unemployment.rate"
)]

pca_opt_scaled <- scale(pca_opt)

KMO(pca_opt_scaled)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = pca_opt_scaled)
## Overall MSA =  0.73
## MSA for each item = 
##         Density..P.Km2.          Land.Area.Km2.              Birth.Rate 
##                    0.68                    0.92                    0.73 
##           Co2.Emissions                     CPI          Fertility.Rate 
##                    0.57                    0.86                    0.74 
##                     GDP         Life.expectancy        Infant.mortality 
##                    0.61                    0.80                    0.81 
## Physicians.per.thousand              Population 
##                    0.84                    0.60
cortest.bartlett(cor(pca_opt_scaled), n = nrow(pca_opt_scaled))
## $chisq
## [1] 1923.884
## 
## $p.value
## [1] 0
## 
## $df
## [1] 55

Setelah dilakukan optimasi dengan mengeluarkan variabel yang memiliki nilai MSA di bawah 0,5, hasil uji meningkat menjadi 0,73. Seluruh variabel yang digunakan memiliki nilai MSA di atas 0,5 dan Bartlett’s Test of Sphericity menunjukkan nilai signifikansi kurang dari 0,05. Dengan demikian, data dinyatakan layak dan optimal untuk dilakukan Principal Component Analysis (PCA).

Principal Component Analysis (PCA)

pca_result <- prcomp(pca_opt_scaled, center = FALSE, scale. = FALSE)

eigenvalue <- pca_result$sdev^2
eigenvalue
##  [1] 4.48694146 2.86928526 1.02873696 0.96487195 0.59197880 0.36342896
##  [7] 0.34494982 0.22992750 0.07020131 0.03690639 0.01277160

Hasil PCA menunjukkan bahwa hanya PC1 (4.49), PC2 (2.87), dan PC3 (1.03) yang memiliki eigenvalue lebih dari 1, sedangkan komponen lainnya berada di bawah 1. Oleh karena itu, berdasarkan Kaiser Criterion, komponen yang dipertahankan adalah tiga komponen utama pertama.

Proporsi dan Varians Kumulatif

proporsi_var <- eigenvalue / sum(eigenvalue)
proporsi_var
##  [1] 0.407903769 0.260844114 0.093521541 0.087715632 0.053816254 0.033038996
##  [7] 0.031359074 0.020902500 0.006381937 0.003355127 0.001161055
kumulatif_var <- cumsum(proporsi_var)
kumulatif_var
##  [1] 0.4079038 0.6687479 0.7622694 0.8499851 0.9038013 0.9368403 0.9681994
##  [8] 0.9891019 0.9954838 0.9988389 1.0000000

PC1 mampu menjelaskan 40.79% variasi data, PC2 sebesar 26.08%, dan PC3 sebesar 9.35%. Hal ini menunjukkan bahwa sebagian besar informasi data terkonsentrasi pada komponen awal.

Secara kumulatif, PC1 hingga PC3 menjelaskan 76.23% total variasi data. Nilai ini telah melampaui batas minimal 70%, sehingga reduksi dimensi yang dilakukan masih mampu merepresentasikan data dengan baik.

Scree Plot

eigenvalue <- pca_result$sdev^2
plot(
  eigenvalue,
  type = "b",
  xlab = "Komponen Utama",
  ylab = "Eigenvalue",
  main = "Scree Plot PCA"
)
abline(h = 1, col = "red", lty = 2)

Scree plot menunjukkan penurunan eigenvalue yang tajam hingga PC3, kemudian cenderung landai. Oleh karena itu, tiga komponen pertama dipilih sebagai komponen utama PCA.

Loading Matrix

loadings <- pca_result$rotation
round(loadings, 3)
##                            PC1    PC2    PC3    PC4    PC5    PC6    PC7    PC8
## Density..P.Km2.          0.075 -0.065 -0.726  0.632 -0.229 -0.051 -0.082  0.000
## Land.Area.Km2.           0.116  0.401  0.162 -0.052 -0.838  0.284  0.101 -0.009
## Birth.Rate              -0.448  0.111 -0.030 -0.024 -0.081 -0.157 -0.061 -0.425
## Co2.Emissions            0.168  0.533 -0.054  0.010  0.165 -0.182  0.009  0.021
## CPI                     -0.055  0.033  0.638  0.762  0.067 -0.052  0.000 -0.023
## Fertility.Rate          -0.436  0.115 -0.028 -0.042 -0.098 -0.252 -0.162 -0.523
## GDP                      0.182  0.487 -0.047 -0.014  0.089 -0.612  0.181  0.156
## Life.expectancy          0.434 -0.133 -0.001  0.014  0.034 -0.048  0.215 -0.476
## Infant.mortality        -0.432  0.133 -0.046  0.015 -0.019  0.003 -0.264  0.494
## Physicians.per.thousand  0.376 -0.134  0.143 -0.091 -0.176 -0.280 -0.833 -0.025
## Population               0.098  0.484 -0.103  0.070  0.395  0.581 -0.332 -0.222
##                            PC9   PC10   PC11
## Density..P.Km2.          0.038  0.010  0.000
## Land.Area.Km2.          -0.044  0.028 -0.009
## Birth.Rate               0.065  0.005  0.752
## Co2.Emissions            0.333 -0.716 -0.012
## CPI                     -0.004  0.000 -0.004
## Fertility.Rate          -0.050 -0.003 -0.647
## GDP                     -0.202  0.496  0.034
## Life.expectancy         -0.652 -0.293  0.079
## Infant.mortality        -0.630 -0.286  0.035
## Physicians.per.thousand  0.035  0.012  0.085
## Population              -0.122  0.268  0.005

PC1 didominasi oleh Birth Rate (−0.448), Fertility Rate (−0.436), Infant Mortality (−0.432), dan Life Expectancy (0.434). PC2 memiliki loading tertinggi pada CO₂ Emissions (0.533), GDP (0.487), dan Population (0.484). PC3 terutama dipengaruhi oleh Density (−0.726) dan CPI (0.638).

Skor PCA

pca_score <- pca_result$x
head(pca_score)
##           PC1         PC2          PC3         PC4         PC5         PC6
## 1 -2.64126520  0.48236046 -0.149938507 -0.19433226 -0.10217755 -0.06633216
## 2  1.12738362 -0.84825033 -0.007533056 -0.17205238  0.42145759  0.34730046
## 3  0.01939759  0.20674542  0.272307483 -0.28386714 -0.65370635  0.20162288
## 5 -3.67107695  0.91312723  0.185586670  0.07847522 -0.46844775 -0.35447188
## 7  1.41465716 -0.02163275  0.793337591 -0.11780666 -0.89205270  0.02477840
## 8  1.46617570 -0.99586373  0.297133304 -0.33786694  0.01781808 -0.26395158
##          PC7         PC8         PC9        PC10        PC11
## 1 -0.1113557 -0.06236303 -0.22361790 -0.06853991 -0.09562902
## 2  0.8683739  0.12402773 -0.10487927 -0.08813721 -0.10060410
## 3  0.1748290 -0.62050588 -0.35283268 -0.17662869  0.16187219
## 5 -0.3603113 -0.51256730 -0.01936189  0.01430138 -0.04098788
## 7 -0.6900580 -0.30247465  0.04489226  0.03911733  0.09373793
## 8 -1.0099211  0.22883832  0.18507421  0.02926097  0.13641491
summary(pca_result)
## Importance of components:
##                           PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.1182 1.6939 1.01427 0.98228 0.76940 0.60285 0.58732
## Proportion of Variance 0.4079 0.2608 0.09352 0.08772 0.05382 0.03304 0.03136
## Cumulative Proportion  0.4079 0.6687 0.76227 0.84999 0.90380 0.93684 0.96820
##                           PC8     PC9    PC10    PC11
## Standard deviation     0.4795 0.26496 0.19211 0.11301
## Proportion of Variance 0.0209 0.00638 0.00336 0.00116
## Cumulative Proportion  0.9891 0.99548 0.99884 1.00000

Skor PCA menunjukkan posisi relatif negara pada tiap komponen utama, di mana nilai skor besar (positif atau negatif) menandakan karakteristik yang kuat sesuai variabel dominan pada PC tersebut. Skor ini dapat digunakan untuk membandingkan dan mengelompokkan negara berdasarkan PC1–PC3.

PC1 menjelaskan 40.79%, PC2 26.08%, dan PC3 9.35% variasi data, dengan total kumulatif 76.23%. Tiga komponen utama ini sudah cukup merepresentasikan sebagian besar informasi data.

Biplot PCA

biplot(pca_result, scale = 0, cex = 0.6,
       main = "Biplot PCA (PC1 vs PC2)")

Biplot menunjukkan sebagian besar data terkonsentrasi di sekitar pusat, dengan PC1 dan PC2 sudah merepresentasikan pola utama data. Arah vektor variabel menunjukkan hubungan dan kontribusi terhadap kedua komponen tersebut.

Plot Skor PCA

scores <- as.data.frame(pca_result$x)

plot(scores$PC1, scores$PC2,
     xlab = "PC1",
     ylab = "PC2",
     main = "Plot Skor PCA (PC1 vs PC2)",
     pch = 19)
abline(h = 0, v = 0, lty = 2, col = "gray")

Plot skor PCA menunjukkan sebagian besar negara mengelompok di area tengah negatif PC1, dengan beberapa outlier di sisi positif dan nilai PC2 yang tinggi. Pola ini menandakan bahwa PC1 dan PC2 sudah menangkap perbedaan utama antar negara, di mana titik yang berdekatan memiliki karakteristik yang mirip.

Proporsi Varians

barplot(proporsi_var * 100,
        names.arg = paste0("PC", 1:length(proporsi_var)),
        ylab = "Persentase Varians (%)",
        main = "Proporsi Varians PCA")

Grafik proporsi varians menunjukkan bahwa PC1 dan PC2 mendominasi dalam menjelaskan keragaman data. Terlihat penurunan varians yang tajam setelah PC2, yang menandakan bahwa komponen selanjutnya hanya memberikan tambahan informasi yang kecil. Oleh karena itu, penggunaan dua komponen utama sudah cukup efisien untuk merepresentasikan data dalam analisis lanjutan.

Factor Analysis

dim(pca_opt_scaled)
## [1] 168  11

Uji Kelayakan Factor Analysis

KMO(pca_opt_scaled)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = pca_opt_scaled)
## Overall MSA =  0.73
## MSA for each item = 
##         Density..P.Km2.          Land.Area.Km2.              Birth.Rate 
##                    0.68                    0.92                    0.73 
##           Co2.Emissions                     CPI          Fertility.Rate 
##                    0.57                    0.86                    0.74 
##                     GDP         Life.expectancy        Infant.mortality 
##                    0.61                    0.80                    0.81 
## Physicians.per.thousand              Population 
##                    0.84                    0.60
cortest.bartlett(cor(pca_opt_scaled), n = nrow(pca_opt_scaled))
## $chisq
## [1] 1923.884
## 
## $p.value
## [1] 0
## 
## $df
## [1] 55

Uji KMO menunjukkan nilai Overall MSA = 0,73, artinya data layak digunakan untuk Factor Analysis karena sudah melewati batas minimum 0,5. Hampir semua variabel juga memiliki nilai MSA di atas 0,6.

Uji Bartlett menghasilkan chi-square sebesar 1923,884 dengan p-value = 0 (< 0,05), yang berarti terdapat korelasi signifikan antar variabel. Dengan demikian, Factor Analysis dapat dilanjutkan.

Factor Analysis Tanpa Rotasi (2 Faktor)

fa_unrotated_2 <- fa(
  pca_opt_scaled,
  nfactors = 2,
  rotate = "none",
  fm = "pa"
)
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
print(fa_unrotated_2$loadings, cutoff = 0.3)
## 
## Loadings:
##                         PA1    PA2   
## Density..P.Km2.                      
## Land.Area.Km2.                  0.549
## Birth.Rate              -0.956       
## Co2.Emissions            0.367  0.977
## CPI                                  
## Fertility.Rate          -0.916       
## GDP                      0.370  0.797
## Life.expectancy          0.913       
## Infant.mortality        -0.904       
## Physicians.per.thousand  0.736       
## Population                      0.735
## 
##                  PA1   PA2
## SS loadings    4.326 2.643
## Proportion Var 0.393 0.240
## Cumulative Var 0.393 0.634

PA1 merepresentasikan dimensi Pembangunan Manusia & Kesehatan. Faktor ini memiliki loading negatif sangat kuat pada Birth Rate (-0,956), Fertility Rate (-0,916), dan Infant Mortality (-0,904), serta loading positif tinggi pada Life Expectancy (0,913) dan Physicians per Thousand (0,736). Artinya, semakin tinggi skor PA1, semakin baik kualitas kesehatan dan pembangunan manusia suatu negara.

PA2 menggambarkan dimensi Skala Ekonomi & Wilayah. Faktor ini didominasi oleh CO₂ Emissions (0,977), GDP (0,797), Population (0,735), dan Land Area (0,549), yang mencerminkan besarnya aktivitas ekonomi dan luas wilayah suatu negara. PA1 dan PA2 sama-sama signifikan (SS Loadings > 1) dan secara kumulatif mampu menjelaskan 63,4% varians data, sehingga struktur faktor yang terbentuk sudah cukup baik untuk analisis lanjutan.

Factor Analysis dengan Rotasi Varimax

fa_varimax_2 <- fa(
  pca_opt_scaled,
  nfactors = 2,
  rotate = "varimax",
  fm = "pa",
  scores = TRUE
)
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
print(fa_varimax_2$loadings, cutoff = 0.4)
## 
## Loadings:
##                         PA1    PA2   
## Density..P.Km2.                      
## Land.Area.Km2.                  0.587
## Birth.Rate               0.967       
## Co2.Emissions                   1.042
## CPI                                  
## Fertility.Rate           0.930       
## GDP                             0.873
## Life.expectancy         -0.936       
## Infant.mortality         0.927       
## Physicians.per.thousand -0.762       
## Population                      0.757
## 
##                  PA1   PA2
## SS loadings    4.165 2.804
## Proportion Var 0.379 0.255
## Cumulative Var 0.379 0.634

Rotasi Varimax menghasilkan dua faktor utama yang jelas. PA1 menggambarkan kondisi kesejahteraan dan demografi, di mana angka kelahiran dan kematian bayi berlawanan dengan harapan hidup dan ketersediaan tenaga medis, sehingga membedakan negara berkembang dan negara maju. PA2 menggambarkan skala ekonomi dan dampak lingkungan, yang didominasi oleh PDB, emisi CO₂, populasi, dan luas wilayah.

Kedua faktor ini menjelaskan 63,4% varians total. Variabel Density dan CPI tidak berpengaruh signifikan karena loading rendah, sehingga tidak menjadi pembeda utama profil negara-negara dunia tahun 2023.

Communalities

fa_varimax_2$communality
##         Density..P.Km2.          Land.Area.Km2.              Birth.Rate 
##             0.021935636             0.345919240             0.949658591 
##           Co2.Emissions                     CPI          Fertility.Rate 
##             1.088777187             0.009919013             0.875449062 
##                     GDP         Life.expectancy        Infant.mortality 
##             0.772730416             0.881465405             0.865407583 
## Physicians.per.thousand              Population 
##             0.582186024             0.575566470

Communalities menunjukkan seberapa besar varians tiap variabel yang dijelaskan oleh model faktor. Variabel kesehatan dan demografi seperti Birth.Rate, Life.expectancy, Fertility.Rate, dan Infant.mortality memiliki communalities tinggi (>0.8), artinya terwakili sangat baik. GDP, Physicians, dan Population moderat (0.57–0.77), masih menyumbang tapi sebagian varians unik tersisa. Sementara, CPI dan Density hampir tidak dijelaskan (<0.03) dan bisa dianggap noise. Nilai Co2.Emissions >1 menandai Heywood Case, akibat korelasi ekstrem dengan variabel ekonomi seperti GDP.

Varians Faktor

fa_varimax_2$Vaccounted
##                             PA1       PA2
## SS loadings           4.1653441 2.8036705
## Proportion Var        0.3786676 0.2548791
## Cumulative Var        0.3786676 0.6335468
## Proportion Explained  0.5976948 0.4023052
## Cumulative Proportion 0.5976948 1.0000000

Berdasarkan tabel varians, model Factor Analysis dengan dua faktor ini terbukti efektif dalam meringkas informasi. Faktor pertama (PA1) menjelaskan 37,9% varians, sedangkan faktor kedua (PA2) menjelaskan 25,5%. Secara kumulatif, kedua faktor ini mencakup 63,3% dari total variabilitas data global. Hal ini menunjukkan bahwa dimensi Kesejahteraan Sosial dan Skala Ekonomi adalah dua pilar utama yang mendefinisikan karakteristik negara-negara di dunia pada tahun 2023.

Visualisasi

fa.diagram(fa_varimax_2, main = "Diagram Struktur Faktor (2 Faktor - Varimax)")

Secara keseluruhan, dataset Global Country Information 2023 dapat disederhanakan menjadi dua pilar utama: Kesejahteraan Sosial (PA1) dan Skala Ekonomi (PA2). Analisis ini membuktikan bahwa indikator seperti emisi CO2 dan GDP bergerak selaras, sementara indikator kesehatan masyarakat membentuk dimensi tersendiri yang sangat kontras dengan angka kelahiran. Hasil skor faktor ini sangat layak digunakan untuk analisis lanjutan seperti pengelompokan negara (Country Clustering) berdasarkan profil pembangunan yang lebih komprehensif.

scores <- as.data.frame(fa_varimax_2$scores)
plot(scores$PA1, scores$PA2,
     xlab = "Skor PA1 (Kesejahteraan & Kesehatan)",
     ylab = "Skor PA2 (Skala Ekonomi & Populasi)",
     main = "Biplot Posisi Negara Berdasarkan Skor Faktor",
     pch = 19,
     col = "blue")

abline(h = 0, v = 0, lty = 2, col = "gray")

Visualisasi Biplot ini menegaskan adanya ketimpangan skala yang ekstrem di panggung global. Sementara sebagian besar negara berkumpul pada tingkat ekonomi yang serupa, terdapat segelintir negara yang menjadi outlier dominan dalam hal kapasitas ekonomi dan emisi karbon (PA2). Di sisi lain, sebaran titik sepanjang sumbu PA1 menunjukkan variasi tingkat kesejahteraan sosial yang lebih lebar, menggambarkan disparitas kualitas hidup yang masih terjadi antar bangsa secara global.

Kesimpulan

Berdasarkan analisis multivariat pada Global Country Information Dataset 2023:

1. Validitas & Reduksi Data

Dataset 11 indikator berhasil disederhanakan. KMO = 0.73 dan Bartlett’s Test (p < 0.05) menunjukkan korelasi antar-variabel kuat, layak untuk reduksi dimensi.

2. Dua Pilar Utama Pembangunan Global

  1. Faktor 1 (Kesejahteraan Sosial & Demografi): Menggambarkan Birth Rate, Life Expectancy, dan Infant Mortality; memisahkan negara maju vs berkembang.
  2. Faktor 2 (Skala Ekonomi & Kapasitas Negara): Menggambarkan GDP, CO₂ Emissions, dan populasi; menunjukkan ekonomi besar sering berdampak lingkungan tinggi.

3. Tipologi & Outlier Negara

Mayoritas negara terkumpul di titik tengah biplot, tapi beberapa muncul sebagai outlier karena skala ekonomi dan populasi yang ekstrem (PA2 tinggi).