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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.