Import Dataset

library(readr)
dataset_anmul <- read_csv("C:/Users/Lenovo/Downloads/dataset anmul.csv")
## Rows: 167 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): Country
## dbl (13): AveragScore, SafetySecurity, PersonelFreedom, Governance, SocialCa...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Cleaning Dataset

dataset_clean <- dataset_anmul[, !(names(dataset_anmul) %in% c("Country", "AveragScore"))]
head(dataset_clean)
## # A tibble: 6 × 12
##   SafetySecurity PersonelFreedom Governance SocialCapital InvestmentEnvironment
##            <dbl>           <dbl>      <dbl>         <dbl>                 <dbl>
## 1           92.6            94.1       89.4          82.6                  82.4
## 2           91.0            91.9       86.4          78.3                  82.8
## 3           93.3            94.1       89.7          79.0                  82.2
## 4           89.6            92.0       90.4          77.3                  84.1
## 5           95.7            87.5       87.7          69.1                  80.8
## 6           91.2            90.1       87.3          74.0                  84.1
## # ℹ 7 more variables: EnterpriseConditions <dbl>,
## #   MarketAccessInfrastructure <dbl>, EconomicQuality <dbl>,
## #   LivingConditions <dbl>, Health <dbl>, Education <dbl>,
## #   NaturalEnvironment <dbl>
str(dataset_clean)
## tibble [167 × 12] (S3: tbl_df/tbl/data.frame)
##  $ SafetySecurity            : num [1:167] 92.6 91 93.3 89.6 95.7 ...
##  $ PersonelFreedom           : num [1:167] 94.1 91.9 94.1 92 87.5 ...
##  $ Governance                : num [1:167] 89.5 86.4 89.7 90.4 87.7 ...
##  $ SocialCapital             : num [1:167] 82.6 78.3 79 77.3 69.1 ...
##  $ InvestmentEnvironment     : num [1:167] 82.4 82.8 82.2 84.1 80.8 ...
##  $ EnterpriseConditions      : num [1:167] 79.6 75.5 76 77.2 83.8 ...
##  $ MarketAccessInfrastructure: num [1:167] 78.8 79.7 75.9 78.8 78.7 ...
##  $ EconomicQuality           : num [1:167] 76.8 76.2 77.2 70.3 79.7 ...
##  $ LivingConditions          : num [1:167] 95.8 95.3 94.7 94.5 94.7 ...
##  $ Health                    : num [1:167] 81.1 82.3 83 81.2 82.1 ...
##  $ Education                 : num [1:167] 87.5 85.9 85.7 88.4 87.7 ...
##  $ NaturalEnvironment        : num [1:167] 73.9 78.7 72.4 78 73.6 ...

Sebelum dilakukan analisis Principal Component Analysis (PCA), dilakukan proses seleksi variabel dengan menghapus variabel Country dan AveragScore. Variabel Country tidak digunakan karena bertipe kategorik, sedangkan AveragScore merupakan skor komposit sehingga tidak termasuk dalam variabel indikator yang dianalisis. Patikan semua data bertipe numerik agar bisa dianalisis lebih lanjut dengan metode PCA dan FA.

Statistik Deskriptif

mean_values <- colMeans(dataset_clean)
sd_values   <- apply(dataset_clean, 2, sd)
min_values  <- apply(dataset_clean, 2, min)
max_values  <- apply(dataset_clean, 2, max)
deskriptif <- data.frame(
  Mean = mean_values,
  Standard_Deviasi = sd_values,
  Minimum = min_values,
  Maximum = max_values
)

deskriptif
##                                Mean Standard_Deviasi Minimum Maximum
## SafetySecurity             67.24251        17.542279   16.54   96.32
## PersonelFreedom            56.82940        19.914638   16.16   94.10
## Governance                 50.36030        17.747092   13.09   90.41
## SocialCapital              54.46802        10.350639   23.01   82.56
## InvestmentEnvironment      53.01365        16.743723   21.69   84.99
## EnterpriseConditions       54.79168        12.876166   20.50   83.84
## MarketAccessInfrastructure 55.01970        15.849004   24.23   85.75
## EconomicQuality            51.56868        13.427811   24.46   80.10
## LivingConditions           69.80329        19.752677   19.21   95.86
## Health                     68.62491        11.166266   31.95   86.89
## Education                  58.72377        19.679023   16.78   91.44
## NaturalEnvironment         56.23174         9.061262   33.67   78.74

Berdasarkan hasil statistika deskriptif, seluruh variabel indikator yang digunakan dalam penelitian ini menunjukkan nilai rata-rata yang berbeda dengan tingkat penyebaran yang bervariasi antar negara. Ukuran yang digunakan dalam analisis deskriptif meliputi nilai rata-rata (mean), simpangan baku (standard deviation), serta nilai minimum dan maksimum untuk menggambarkan pemusatan dan variasi data. Perbedaan nilai tersebut menunjukkan adanya keragaman karakteristik antar negara, sehingga data memiliki variasi yang memadai untuk dilanjutkan pada metode PCA.

Visualisasi Plot

par(mar = c(8, 4, 4, 2))
warna_soft <- heat.colors(ncol(dataset_clean))

boxplot(dataset_clean,
        names = paste0("X", 1:ncol(dataset_clean)),
        las = 1,
        col = warna_soft,
        border = "darkblue",
        main = "Visualisasi Penyebaran Indikator Kesejahteraan Negara Tahun 2023",
        ylab = "Nilai Indikator",
        cex.axis = 0.8)

abline(h = pretty(range(dataset_clean)), col = "gray85", lty = "dashed")

Berdasarkan visualisasi boxplot indikator kesejahteraan negara tahun 2023, terlihat bahwa seluruh variabel penelitian menunjukkan tingkat variasi yang berbeda antar 167 negara yang dianalisis. Perbedaan ini tercermin dari variasi nilai median, panjang rentang interkuartil (interquartile range/IQR), serta rentang minimum dan maksimum pada masing-masing indikator.

Median yang berbeda antar variabel menunjukkan adanya perbedaan kecenderungan tingkat pencapaian pada setiap indikator. Beberapa indikator memiliki nilai median yang relatif lebih tinggi, yang mengindikasikan bahwa secara umum sebagian besar negara berada pada tingkat pencapaian yang cukup baik pada dimensi tersebut. Sebaliknya, indikator dengan median yang lebih rendah menunjukkan adanya tantangan yang relatif lebih besar pada aspek tersebut di sebagian negara.

Selain itu, panjang rentang interkuartil (IQR) yang bervariasi menunjukkan perbedaan tingkat heterogenitas antar negara. Variabel dengan IQR yang lebih besar mencerminkan bahwa 50% data tengah memiliki penyebaran yang lebih luas, yang mengindikasikan adanya ketimpangan atau variasi kondisi yang signifikan antar negara. Sementara itu, variabel dengan IQR yang relatif lebih kecil menunjukkan distribusi nilai yang lebih homogen.

Keberadaan beberapa nilai pencilan (outlier) pada sejumlah indikator menunjukkan adanya negara-negara dengan karakteristik yang secara ekstrem berbeda dari mayoritas observasi. Hal ini mengindikasikan adanya perbedaan struktural atau tingkat pembangunan yang sangat kontras pada indikator tertentu.

Asumsi Bartlett’s Test of Sphericity dan Kaiser-Meyer-Olkin (KMO)

  1. Matriks Korelasi
library(psych)

mat_corr <- round(cor(dataset_clean), 3)
mat_corr
##                            SafetySecurity PersonelFreedom Governance
## SafetySecurity                      1.000           0.655      0.763
## PersonelFreedom                     0.655           1.000      0.816
## Governance                          0.763           0.816      1.000
## SocialCapital                       0.608           0.625      0.696
## InvestmentEnvironment               0.728           0.670      0.908
## EnterpriseConditions                0.691           0.650      0.913
## MarketAccessInfrastructure          0.711           0.587      0.814
## EconomicQuality                     0.710           0.570      0.820
## LivingConditions                    0.696           0.541      0.709
## Health                              0.642           0.450      0.672
## Education                           0.706           0.546      0.744
## NaturalEnvironment                  0.578           0.723      0.661
##                            SocialCapital InvestmentEnvironment
## SafetySecurity                     0.608                 0.728
## PersonelFreedom                    0.625                 0.670
## Governance                         0.696                 0.908
## SocialCapital                      1.000                 0.665
## InvestmentEnvironment              0.665                 1.000
## EnterpriseConditions               0.611                 0.929
## MarketAccessInfrastructure         0.656                 0.930
## EconomicQuality                    0.684                 0.890
## LivingConditions                   0.629                 0.826
## Health                             0.618                 0.787
## Education                          0.657                 0.841
## NaturalEnvironment                 0.603                 0.592
##                            EnterpriseConditions MarketAccessInfrastructure
## SafetySecurity                            0.691                      0.711
## PersonelFreedom                           0.650                      0.587
## Governance                                0.913                      0.814
## SocialCapital                             0.611                      0.656
## InvestmentEnvironment                     0.929                      0.930
## EnterpriseConditions                      1.000                      0.846
## MarketAccessInfrastructure                0.846                      1.000
## EconomicQuality                           0.835                      0.888
## LivingConditions                          0.688                      0.917
## Health                                    0.671                      0.874
## Education                                 0.729                      0.914
## NaturalEnvironment                        0.567                      0.571
##                            EconomicQuality LivingConditions Health Education
## SafetySecurity                       0.710            0.696  0.642     0.706
## PersonelFreedom                      0.570            0.541  0.450     0.546
## Governance                           0.820            0.709  0.672     0.744
## SocialCapital                        0.684            0.629  0.618     0.657
## InvestmentEnvironment                0.890            0.826  0.787     0.841
## EnterpriseConditions                 0.835            0.688  0.671     0.729
## MarketAccessInfrastructure           0.888            0.917  0.874     0.914
## EconomicQuality                      1.000            0.813  0.766     0.837
## LivingConditions                     0.813            1.000  0.903     0.938
## Health                               0.766            0.903  1.000     0.884
## Education                            0.837            0.938  0.884     1.000
## NaturalEnvironment                   0.562            0.482  0.454     0.537
##                            NaturalEnvironment
## SafetySecurity                          0.578
## PersonelFreedom                         0.723
## Governance                              0.661
## SocialCapital                           0.603
## InvestmentEnvironment                   0.592
## EnterpriseConditions                    0.567
## MarketAccessInfrastructure              0.571
## EconomicQuality                         0.562
## LivingConditions                        0.482
## Health                                  0.454
## Education                               0.537
## NaturalEnvironment                      1.000
heatmap(mat_corr,
        Rowv = NA,
        Colv = NA,
        col = colorRampPalette(c("blue", "white", "red"))(200),
        scale = "none",
        margins = c(8,8),
        main = "Matriks Korelasi")

Matriks korelasi menunjukkan bahwa sebagian besar indikator memiliki hubungan yang cukup kuat satu sama lain, yang ditandai dengan banyaknya nilai korelasi positif dengan intensitas sedang hingga tinggi. Pola ini mengindikasikan adanya keterkaitan struktural antar variabel, sehingga secara teoritis memungkinkan terbentuknya dimensi laten yang mendasari data. Kondisi tersebut menjadi prasyarat penting dalam penerapan analisis reduksi dimensi seperti PCA dan FA.

  1. Bartlett
bartlett_result <- cortest.bartlett(cor(dataset_clean), n = 167)
bartlett_result
## $chisq
## [1] 2928.907
## 
## $p.value
## [1] 0
## 
## $df
## [1] 66

Hasil uji Bartlett menunjukkan nilai chi-square sebesar 2928,907 dengan p-value < 0,05, sehingga hipotesis nol yang menyatakan bahwa matriks korelasi merupakan matriks identitas ditolak. Dengan demikian, dapat disimpulkan bahwa terdapat korelasi yang signifikan antar variabel. Hasil ini menegaskan bahwa data layak untuk dianalisis lebih lanjut menggunakan metode PCA dan FA.

  1. KMO
bartlett_result <- cortest.bartlett(cor(dataset_clean), n = 167)
bartlett_result
## $chisq
## [1] 2928.907
## 
## $p.value
## [1] 0
## 
## $df
## [1] 66
kmo_result <- KMO(dataset_clean)
kmo_result
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = dataset_clean)
## Overall MSA =  0.93
## MSA for each item = 
##             SafetySecurity            PersonelFreedom 
##                       0.98                       0.85 
##                 Governance              SocialCapital 
##                       0.90                       0.97 
##      InvestmentEnvironment       EnterpriseConditions 
##                       0.95                       0.91 
## MarketAccessInfrastructure            EconomicQuality 
##                       0.94                       0.97 
##           LivingConditions                     Health 
##                       0.89                       0.95 
##                  Education         NaturalEnvironment 
##                       0.95                       0.91

Nilai Kaiser-Meyer-Olkin (KMO) sebesar 0,93 menunjukkan tingkat kecukupan sampel yang sangat baik (kategori > 0,90). Selain itu, nilai Measure of Sampling Adequacy (MSA) pada masing-masing variabel juga berada di atas batas minimum 0,50, yang menunjukkan bahwa setiap indikator memiliki kontribusi yang memadai dalam pembentukan faktor. Oleh karena itu, secara keseluruhan data memenuhi asumsi kelayakan untuk dilakukan analisis faktor.

Principal Component Analysis (PCA)

  1. Summary
pca_result <- prcomp(dataset_clean, scale. = TRUE)
summary(pca_result)
## Importance of components:
##                           PC1     PC2     PC3     PC4     PC5     PC6    PC7
## Standard deviation     2.9893 1.03476 0.73463 0.62038 0.59649 0.52101 0.3888
## Proportion of Variance 0.7446 0.08923 0.04497 0.03207 0.02965 0.02262 0.0126
## Cumulative Proportion  0.7446 0.83386 0.87884 0.91091 0.94056 0.96318 0.9758
##                            PC8     PC9    PC10    PC11    PC12
## Standard deviation     0.31309 0.27118 0.21226 0.20084 0.18356
## Proportion of Variance 0.00817 0.00613 0.00375 0.00336 0.00281
## Cumulative Proportion  0.98395 0.99008 0.99383 0.99719 1.00000

Perhitungan eigenvalue yang diperoleh dari kuadrat standar deviasi menunjukkan bahwa hanya dua komponen yang memiliki eigenvalue lebih besar dari satu. Berdasarkan kriteria Kaiser, kedua komponen tersebut dinyatakan layak untuk dipertahankan. Selain itu, proporsi varians kumulatif menunjukkan bahwa dua komponen utama telah mampu menjelaskan lebih dari 80% total variasi data, sehingga reduksi dimensi dianggap telah merepresentasikan informasi secara memadai.

  1. Eigenvalue dan Proporsi Varians
eigen_values <- (pca_result$sdev)^2
eigen_values
##  [1] 8.93563218 1.07073448 0.53968351 0.38487052 0.35579799 0.27145069
##  [7] 0.15117922 0.09802748 0.07353914 0.04505564 0.04033568 0.03369347
prop_var <- eigen_values / sum(eigen_values)
prop_var
##  [1] 0.744636015 0.089227874 0.044973626 0.032072544 0.029649832 0.022620891
##  [7] 0.012598269 0.008168957 0.006128261 0.003754636 0.003361307 0.002807789
cumsum(prop_var)
##  [1] 0.7446360 0.8338639 0.8788375 0.9109101 0.9405599 0.9631808 0.9757790
##  [8] 0.9839480 0.9900763 0.9938309 0.9971922 1.0000000

Perhitungan eigenvalue yang diperoleh dari kuadrat standar deviasi menunjukkan bahwa hanya dua komponen yang memiliki eigenvalue lebih besar dari satu. Berdasarkan kriteria Kaiser, kedua komponen tersebut dinyatakan layak untuk dipertahankan. Selain itu, proporsi varians kumulatif menunjukkan bahwa dua komponen utama telah mampu menjelaskan lebih dari 80% total variasi data, sehingga reduksi dimensi dianggap telah merepresentasikan informasi secara memadai.

  1. Scree Plot
par(las = 1)
plot(eigen_values,
     type = "o",
     pch = 16,
     col = "blue",
     xaxt = "n",
     main = "Scree Plot PCA",
     xlab = "Komponen",
     ylab = "Eigenvalue")

axis(1, at = 1:length(eigen_values), labels = 1:length(eigen_values))

abline(h = 1, col = "black", lty = 2, lwd = 2)

Visualisasi Scree Plot memperlihatkan adanya penurunan tajam elbow setelah komponen kedua. Pola ini mengindikasikan bahwa kontribusi komponen berikutnya relatif kecil dan cenderung stabil. Temuan ini memperkuat keputusan untuk mempertahankan dua komponen utama dalam proses reduksi 12 variabel menjadi dua dimensi yang lebih ringkas.

  1. Component Loading
round(pca_result$rotation, 3)
##                               PC1    PC2    PC3    PC4    PC5    PC6    PC7
## SafetySecurity             -0.274 -0.116  0.021  0.554 -0.643  0.415  0.078
## PersonelFreedom            -0.250 -0.525  0.010  0.189 -0.057 -0.656 -0.208
## Governance                 -0.308 -0.217 -0.313 -0.066 -0.078 -0.151  0.133
## SocialCapital              -0.259 -0.175  0.481 -0.696 -0.394  0.033  0.084
## InvestmentEnvironment      -0.318  0.049 -0.302 -0.101  0.100 -0.012  0.074
## EnterpriseConditions       -0.297 -0.059 -0.527 -0.191  0.070  0.122  0.306
## MarketAccessInfrastructure -0.317  0.214 -0.055  0.003  0.183 -0.004 -0.023
## EconomicQuality            -0.306  0.121 -0.144 -0.203  0.028  0.330 -0.651
## LivingConditions           -0.298  0.325  0.218  0.187  0.032 -0.246 -0.199
## Health                     -0.285  0.374  0.248  0.079  0.078 -0.138  0.559
## Education                  -0.304  0.276  0.193  0.120  0.086 -0.084 -0.204
## NaturalEnvironment         -0.232 -0.496  0.363  0.157  0.599  0.403  0.095
##                               PC8    PC9   PC10   PC11   PC12
## SafetySecurity             -0.036 -0.081  0.034 -0.049  0.001
## PersonelFreedom             0.169 -0.113  0.307 -0.088  0.075
## Governance                  0.085  0.431 -0.562  0.140 -0.425
## SocialCapital              -0.135 -0.072  0.008  0.005  0.007
## InvestmentEnvironment      -0.134 -0.268 -0.363 -0.608  0.433
## EnterpriseConditions       -0.190  0.037  0.450  0.424  0.247
## MarketAccessInfrastructure -0.207 -0.482  0.192 -0.118 -0.701
## EconomicQuality             0.533  0.057  0.084  0.026  0.034
## LivingConditions           -0.168 -0.251 -0.361  0.577  0.260
## Health                      0.586  0.084  0.123 -0.083  0.043
## Education                  -0.438  0.641  0.239 -0.249  0.033
## NaturalEnvironment         -0.023  0.006 -0.087  0.064  0.045

Matriks component loading digunakan untuk mengidentifikasi variabel-variabel yang memiliki kontribusi dominan dalam membentuk masing-masing komponen. Variabel dengan nilai loading yang tinggi menunjukkan peran yang signifikan dalam mendefinisikan dimensi tersebut. Pola loading ini membantu dalam menginterpretasikan makna konseptual dari setiap komponen yang terbentuk.

Factor Analysis (FA)

  1. Standarisasi Data
data_scaled <- scale(dataset_clean)

Seluruh variabel distandarisasi sebelum analisis faktor untuk menyamakan skala pengukuran dan mencegah dominasi variabel tertentu. Dengan demikian, setiap indikator memiliki kontribusi yang proporsional dalam pembentukan faktor.

  1. Model analisis faktor
fa_result <- fa(data_scaled,
                nfactors = 2,
                rotate = "varimax",
                fm = "minres")
print(fa_result)
## Factor Analysis using method =  minres
## Call: fa(r = data_scaled, nfactors = 2, rotate = "varimax", fm = "minres")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                             MR1  MR2   h2    u2 com
## SafetySecurity             0.53 0.60 0.64 0.357 2.0
## PersonelFreedom            0.23 0.86 0.79 0.206 1.1
## Governance                 0.51 0.82 0.93 0.071 1.7
## SocialCapital              0.48 0.58 0.57 0.432 1.9
## InvestmentEnvironment      0.72 0.62 0.90 0.095 2.0
## EnterpriseConditions       0.59 0.65 0.78 0.222 2.0
## MarketAccessInfrastructure 0.86 0.47 0.95 0.050 1.5
## EconomicQuality            0.74 0.53 0.83 0.173 1.8
## LivingConditions           0.89 0.34 0.91 0.095 1.3
## Health                     0.87 0.28 0.84 0.156 1.2
## Education                  0.87 0.39 0.91 0.094 1.4
## NaturalEnvironment         0.27 0.70 0.57 0.430 1.3
## 
##                        MR1  MR2
## SS loadings           5.36 4.26
## Proportion Var        0.45 0.36
## Cumulative Var        0.45 0.80
## Proportion Explained  0.56 0.44
## Cumulative Proportion 0.56 1.00
## 
## Mean item complexity =  1.6
## Test of the hypothesis that 2 factors are sufficient.
## 
## df null model =  66  with the objective function =  18.17 with Chi Square =  2928.91
## df of  the model are 43  and the objective function was  2.14 
## 
## The root mean square of the residuals (RMSR) is  0.03 
## The df corrected root mean square of the residuals is  0.04 
## 
## The harmonic n.obs is  167 with the empirical chi square  11.53  with prob <  1 
## The total n.obs was  167  with Likelihood Chi Square =  341.66  with prob <  3.9e-48 
## 
## Tucker Lewis Index of factoring reliability =  0.839
## RMSEA index =  0.204  and the 90 % confidence intervals are  0.185 0.225
## BIC =  121.58
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                    MR1  MR2
## Correlation of (regression) scores with factors   0.97 0.95
## Multiple R square of scores with factors          0.94 0.90
## Minimum correlation of possible factor scores     0.88 0.81

Hasil analisis menunjukkan bahwa dua faktor mampu menjelaskan 80,2% variasi bersama antar variabel, dengan kontribusi masing-masing sebesar 44,7% dan 35,5%. Nilai RMSR yang kecil (0,03) menunjukkan bahwa model memiliki kesesuaian yang cukup baik terhadap data.

  1. Factor Loading
print(fa_result$loadings, cutoff = 0.3)
## 
## Loadings:
##                            MR1   MR2  
## SafetySecurity             0.528 0.604
## PersonelFreedom                  0.862
## Governance                 0.513 0.816
## SocialCapital              0.476 0.584
## InvestmentEnvironment      0.723 0.618
## EnterpriseConditions       0.593 0.653
## MarketAccessInfrastructure 0.855 0.467
## EconomicQuality            0.740 0.529
## LivingConditions           0.890 0.337
## Health                     0.874      
## Education                  0.870 0.387
## NaturalEnvironment               0.705
## 
##                  MR1   MR2
## SS loadings    5.359 4.260
## Proportion Var 0.447 0.355
## Cumulative Var 0.447 0.802

Matriks factor loading menunjukkan bahwa sebagian besar variabel memiliki nilai loading yang cukup tinggi pada salah satu faktor, sehingga pembentukan dua dimensi utama dapat dikatakan jelas. Faktor pertama didominasi oleh indikator yang berkaitan dengan LivingConditions, Health, Education, MarketAccessInfrastructure, EconomicQuality, InvestmentEnvironment, sedangkan faktor kedua lebih kuat dipengaruhi oleh indikator PersonelFreedom, Governance, NaturalEnvironment, SafetySecurity. Pola ini menunjukkan adanya pengelompokan indikator berdasarkan karakteristik substabtifnya.