Data yang digunakan dalam proyek ini tersedia untuk umum disitus web Kaggle. Kaggle adalah platfrom terkenal untuk analisis data. Dataset dapat diakses melalui https://www.kaggle.com/datasets/kumarajarshi/life-expectancy-who/data
Load Library adalah proses memanggil atau mengaktifkan package di R agar fungsinya bisa digunakan dalam script.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ 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
library(corrplot)
## corrplot 0.95 loaded
library(knitr)
library(kableExtra)
##
## Attaching package: 'kableExtra'
##
## The following object is masked from 'package:dplyr':
##
## group_rows
library(psych)
##
## Attaching package: 'psych'
##
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(ggcorrplot)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Berikut ini adalah 10 pengamatan yang dipilih secara acak dari dataset:
life <- read.csv("Life Expectancy Data.csv")
sample_n(life, 10)
## Country Year Status Life.expectancy Adult.Mortality
## 1 Bulgaria 2004 Developed 72.2 157
## 2 Congo 2011 Developing 62.9 285
## 3 Saudi Arabia 2014 Developing 74.4 88
## 4 Lebanon 2015 Developing 74.9 98
## 5 Tajikistan 2013 Developing 69.3 163
## 6 Eritrea 2013 Developing 64.0 266
## 7 Djibouti 2005 Developing 58.6 318
## 8 Comoros 2006 Developing 63.0 262
## 9 Solomon Islands 2004 Developing 67.1 29
## 10 Morocco 2009 Developing 72.3 116
## infant.deaths Alcohol percentage.expenditure Hepatitis.B Measles BMI
## 1 1 10.96 384.147303 94 0 59.1
## 2 7 3.82 0.000000 7 315 25.0
## 3 7 0.09 2017.643131 98 154 67.3
## 4 1 NA 0.000000 81 39 66.1
## 5 10 0.01 1.041916 96 1 39.0
## 6 6 0.01 0.000000 94 45 17.5
## 7 2 1.23 12.703259 NA 298 3.2
## 8 2 0.25 77.028396 69 85 19.6
## 9 0 1.18 195.525942 81 0 41.3
## 10 20 0.62 188.290286 98 834 52.7
## under.five.deaths Polio Total.expenditure Diphtheria HIV.AIDS GDP
## 1 1 94 7.90 95 0.1 3381.57837
## 2 10 69 2.79 82 3.5 NA
## 3 9 98 4.68 98 0.1 24575.43400
## 4 1 75 NA 81 0.1 846.63285
## 5 11 97 6.75 96 0.2 14.21441
## 6 8 94 3.10 94 0.5 NA
## 7 2 71 7.21 71 3.9 94.72975
## 8 2 69 4.57 69 0.1 648.38717
## 9 0 89 5.64 9 0.1 818.44262
## 10 23 99 5.67 99 0.1 2861.55450
## Population thinness..1.19.years thinness.5.9.years
## 1 771686 2.3 2.3
## 2 NA 8.0 7.6
## 3 NA 7.7 7.5
## 4 5851479 4.9 4.9
## 5 817789 3.6 3.7
## 6 NA 8.6 8.4
## 7 783254 5.9 5.8
## 8 626425 7.4 7.3
## 9 458324 1.3 1.3
## 10 31989897 6.4 6.2
## Income.composition.of.resources Schooling
## 1 0.738 13.3
## 2 0.558 10.7
## 3 0.841 15.8
## 4 0.763 13.3
## 5 0.617 11.2
## 6 0.414 5.0
## 7 0.396 4.0
## 8 0.451 9.9
## 9 0.459 8.1
## 10 0.596 10.5
No. <- c(1:22)
Variabel <- c("Country",
"Year",
"Status",
"Life expectancy",
"Adult Mortality",
"infant deaths",
"Alcohol",
"percentage expenditure",
"Hepatitis B",
"Measles",
"BMI",
"under-five deaths",
"Polio",
"Total expenditure",
"Diphtheria",
"HIV/AIDS",
"GDP",
"Population",
"thinness 1-19 years",
"thinness 5-9 years",
"Income composition of resources",
"Schooling")
Deskripsi <- c("Negara",
"Tahun",
"Status Berkembang",
"Harapan Hidup dalam usia",
"Tingkat kematian orang dewasa per 1000 populasi",
"Jumlah Kematian Bayi per 1000 penduduk",
"Alkohol, tercatat per kapita (15+) konsumsi (dalam liter alkohol murni)",
"Pengeluaran untuk kesehatan sebagai persentase dari Produk Domestik Bruto per kapita (%)",
"Cakupan imunisasi hepatitis B (HepB) di kalangan anak berusia 1 tahun (%)",
"Campak - jumlah kasus yang dilaporkan per 1000 penduduk",
"Indeks Massa Tubuh Rata-rata seluruh populasi",
"Jumlah kematian di bawah lima tahun per 1000 penduduk",
"Cakupan imunisasi polio (Pol3) pada anak usia 1 tahun (%)",
"Pengeluaran pemerintah umum untuk kesehatan sebagai persentase dari total pengeluaran pemerintah (%)",
"Cakupan imunisasi difteri tetanus toksoid dan pertusis (DTP3) pada anak usia 1 tahun (%)",
"Kematian per 1.000 kelahiran hidup HIV/AIDS (0-4 tahun)",
"Produk Domestik Bruto per kapita (dalam USD)",
"Populasi negara",
"Prevalensi kurus di antara anak-anak dan remaja untuk usia 10 hingga 19 tahun (%)",
"Prevalensi kurus di antara anak-anak untuk Usia 5 hingga 9 (%)",
"Indeks Pembangunan Manusia dalam hal komposisi pendapatan sumber daya (indeks mulai dari 0 hingga 1)",
"Jumlah tahun Sekolah(tahun)"
)
data.frame(No., Variabel, Deskripsi) %>%
kbl() %>%
kable_styling(bootstrap_options = c("bordered", "stripped", "hover"),
full_width = T)
| No. | Variabel | Deskripsi |
|---|---|---|
| 1 | Country | Negara |
| 2 | Year | Tahun |
| 3 | Status | Status Berkembang |
| 4 | Life expectancy | Harapan Hidup dalam usia |
| 5 | Adult Mortality | Tingkat kematian orang dewasa per 1000 populasi |
| 6 | infant deaths | Jumlah Kematian Bayi per 1000 penduduk |
| 7 | Alcohol | Alkohol, tercatat per kapita (15+) konsumsi (dalam liter alkohol murni) |
| 8 | percentage expenditure | Pengeluaran untuk kesehatan sebagai persentase dari Produk Domestik Bruto per kapita (%) |
| 9 | Hepatitis B | Cakupan imunisasi hepatitis B (HepB) di kalangan anak berusia 1 tahun (%) |
| 10 | Measles | Campak - jumlah kasus yang dilaporkan per 1000 penduduk |
| 11 | BMI | Indeks Massa Tubuh Rata-rata seluruh populasi |
| 12 | under-five deaths | Jumlah kematian di bawah lima tahun per 1000 penduduk |
| 13 | Polio | Cakupan imunisasi polio (Pol3) pada anak usia 1 tahun (%) |
| 14 | Total expenditure | Pengeluaran pemerintah umum untuk kesehatan sebagai persentase dari total pengeluaran pemerintah (%) |
| 15 | Diphtheria | Cakupan imunisasi difteri tetanus toksoid dan pertusis (DTP3) pada anak usia 1 tahun (%) |
| 16 | HIV/AIDS | Kematian per 1.000 kelahiran hidup HIV/AIDS (0-4 tahun) |
| 17 | GDP | Produk Domestik Bruto per kapita (dalam USD) |
| 18 | Population | Populasi negara |
| 19 | thinness 1-19 years | Prevalensi kurus di antara anak-anak dan remaja untuk usia 10 hingga 19 tahun (%) |
| 20 | thinness 5-9 years | Prevalensi kurus di antara anak-anak untuk Usia 5 hingga 9 (%) |
| 21 | Income composition of resources | Indeks Pembangunan Manusia dalam hal komposisi pendapatan sumber daya (indeks mulai dari 0 hingga 1) |
| 22 | Schooling | Jumlah tahun Sekolah(tahun) |
Tahap ini bertujuan untuk memilih hanya variabel yang bertipe numerik dan menghapus variabel target (Life.expectancy) dari dataset.
df_numeric <- life %>%
select(where(is.numeric)) %>%
select(-Life.expectancy)
#cek hasil
colnames(df_numeric)
## [1] "Year" "Adult.Mortality"
## [3] "infant.deaths" "Alcohol"
## [5] "percentage.expenditure" "Hepatitis.B"
## [7] "Measles" "BMI"
## [9] "under.five.deaths" "Polio"
## [11] "Total.expenditure" "Diphtheria"
## [13] "HIV.AIDS" "GDP"
## [15] "Population" "thinness..1.19.years"
## [17] "thinness.5.9.years" "Income.composition.of.resources"
## [19] "Schooling"
library(psych)
describe(df_numeric)
## vars n mean sd median
## Year 1 2938 2007.52 4.61 2008.00
## Adult.Mortality 2 2928 164.80 124.29 144.00
## infant.deaths 3 2938 30.30 117.93 3.00
## Alcohol 4 2744 4.60 4.05 3.76
## percentage.expenditure 5 2938 738.25 1987.91 64.91
## Hepatitis.B 6 2385 80.94 25.07 92.00
## Measles 7 2938 2419.59 11467.27 17.00
## BMI 8 2904 38.32 20.04 43.50
## under.five.deaths 9 2938 42.04 160.45 4.00
## Polio 10 2919 82.55 23.43 93.00
## Total.expenditure 11 2712 5.94 2.50 5.76
## Diphtheria 12 2919 82.32 23.72 93.00
## HIV.AIDS 13 2938 1.74 5.08 0.10
## GDP 14 2490 7483.16 14270.17 1766.95
## Population 15 2286 12753375.12 61012096.51 1386542.00
## thinness..1.19.years 16 2904 4.84 4.42 3.30
## thinness.5.9.years 17 2904 4.87 4.51 3.30
## Income.composition.of.resources 18 2771 0.63 0.21 0.68
## Schooling 19 2775 11.99 3.36 12.30
## trimmed mad min max
## Year 2007.52 5.93 2000.00 2.015000e+03
## Adult.Mortality 150.51 112.68 1.00 7.230000e+02
## infant.deaths 10.20 4.45 0.00 1.800000e+03
## Alcohol 4.23 4.81 0.01 1.787000e+01
## percentage.expenditure 230.74 96.24 0.00 1.947991e+04
## Hepatitis.B 86.89 8.90 1.00 9.900000e+01
## Measles 286.08 25.20 0.00 2.121830e+05
## BMI 39.05 24.17 1.00 8.730000e+01
## under.five.deaths 14.15 5.93 0.00 2.500000e+03
## Polio 88.05 8.90 3.00 9.900000e+01
## Total.expenditure 5.85 2.36 0.37 1.760000e+01
## Diphtheria 87.99 8.90 2.00 9.900000e+01
## HIV.AIDS 0.54 0.00 0.10 5.060000e+01
## GDP 3751.73 2360.98 1.68 1.191727e+05
## Population 3953693.58 2012347.06 34.00 1.293859e+09
## thinness..1.19.years 4.14 3.41 0.10 2.770000e+01
## thinness.5.9.years 4.15 3.41 0.10 2.860000e+01
## Income.composition.of.resources 0.65 0.19 0.00 9.500000e-01
## Schooling 12.17 3.11 0.00 2.070000e+01
## range skew kurtosis se
## Year 1.500000e+01 -0.01 -1.21 0.09
## Adult.Mortality 7.220000e+02 1.17 1.74 2.30
## infant.deaths 1.800000e+03 9.78 115.76 2.18
## Alcohol 1.786000e+01 0.59 -0.81 0.08
## percentage.expenditure 1.947991e+04 4.65 26.51 36.68
## Hepatitis.B 9.800000e+01 -1.93 2.76 0.51
## Measles 2.121830e+05 9.43 114.58 211.56
## BMI 8.630000e+01 -0.22 -1.29 0.37
## under.five.deaths 2.500000e+03 9.49 109.49 2.96
## Polio 9.600000e+01 -2.10 3.76 0.43
## Total.expenditure 1.723000e+01 0.62 1.15 0.05
## Diphtheria 9.700000e+01 -2.07 3.55 0.44
## HIV.AIDS 5.050000e+01 5.39 34.80 0.09
## GDP 1.191711e+05 3.20 12.29 285.98
## Population 1.293859e+09 15.90 297.09 1276079.80
## thinness..1.19.years 2.760000e+01 1.71 3.96 0.08
## thinness.5.9.years 2.850000e+01 1.78 4.34 0.08
## Income.composition.of.resources 9.500000e-01 -1.14 1.38 0.00
## Schooling 2.070000e+01 -0.60 0.88 0.06
Berdasarkan hasil pemeriksaan statistik deskriptif, terlihat bahwa rentang (range) antar variabel sangat berbeda. Variabel GDP memiliki nilai hingga 119.000, sedangkan Schooling hanya berada pada rentang 0–20, Income composition pada rentang 0–1, dan HIV.AIDS pada rentang 0–50. Perbedaan skala yang sangat besar ini menunjukkan bahwa setiap variabel memiliki satuan dan besaran yang tidak sebanding.
Dalam analisis PCA yang berbasis kovarians, perbedaan skala seperti ini dapat menyebabkan hasil yang bias. Variabel dengan nilai paling besar, seperti GDP, akan mendominasi pembentukan komponen utama karena memiliki varians yang lebih tinggi dibanding variabel lain. Akibatnya, struktur komponen yang terbentuk tidak sepenuhnya merepresentasikan pola hubungan antarvariabel secara proporsional.
Oleh karena itu, sebelum dilakukan PCA, proses standardisasi menggunakan metode Z-score scaling wajib dilakukan. Standardisasi bertujuan untuk menyamakan skala seluruh variabel sehingga masing-masing memiliki rata-rata 0 dan standar deviasi 1, sehingga setiap variabel dapat memberikan kontribusi yang seimbang dalam analisis.
df_long <- df_numeric %>%
pivot_longer(cols = everything(),
names_to = "Variable",
values_to = "Value")
ggplot(df_long, aes(x = Value)) +
geom_histogram(bins = 30, fill = "skyblue", color = "black") +
facet_wrap(~Variable, scales = "free") +
theme_minimal() +
labs(title = "Histogram Distribusi Variabel")
## Warning: Removed 2553 rows containing non-finite outside the scale range
## (`stat_bin()`).
Beberapa variabel seperti GDP, HIV.AIDS, infant.deaths, under.five.deaths, dan Adult.Mortality menunjukkan skewness tinggi atau distribusi yang miring ke kanan. Hal ini terlihat dari nilai mean yang jauh lebih besar dibanding median, rentang data yang sangat lebar, serta bentuk histogram yang menumpuk di kiri dengan ekor panjang di kanan. Kondisi ini menandakan adanya nilai ekstrem yang menarik rata-rata menjadi lebih tinggi.
Dalam analisis PCA dan Factor Analysis, distribusi yang tidak normal dapat memengaruhi hasil karena kedua metode tersebut sensitif terhadap varians yang besar. Variabel dengan skewness tinggi berpotensi mendominasi pembentukan komponen atau faktor. Oleh karena itu, perlu melakukan transformasi pada variabel-variabel tersebut agar distribusi menjadi lebih mendekati normal dan hasil analisis lebih stabil.
ggplot(df_long, aes(x = "", y = Value, fill = Variable)) +
geom_boxplot(color = "black") +
facet_wrap(~Variable, scales = "free") +
theme_classic() +
theme(
legend.position = "none",
strip.background = element_rect(fill = "grey"),
strip.text = element_text(colour = "black", face = "bold", size = 8),
axis.text.x = element_blank(),
axis.ticks.x = element_blank()
)
## Warning: Removed 2553 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
Berdasarkan hasil boxplot, terlihat bahwa variabel GDP, HIV.AIDS, infant.deaths, under.five.deaths, dan Adult.Mortality memiliki cukup banyak outlier ekstrem. Nilai-nilai tersebut berada jauh di atas batas whisker, yang menunjukkan adanya perbedaan yang sangat besar antarnegara pada variabel-variabel tersebut.
Keberadaan outlier ini dapat memengaruhi analisis lanjutan, terutama pada metode seperti PCA yang berbasis kovarians. Outlier dapat membuat varians menjadi sangat besar sehingga komponen utama yang terbentuk berpotensi bias dan lebih merepresentasikan nilai ekstrem dibanding pola umum data.
Oleh karena itu, perlu dilakukan pengecekan menggunakan metode IQR untuk memastikan tingkat keparahan outlier. Penanganan yang dapat dipertimbangkan antara lain melakukan winsorizing atau transformasi log untuk mengurangi efek ekstrem. Namun, karena data ini bersumber dari WHO dan merepresentasikan kondisi nyata tiap negara, outlier umumnya tetap dipertahankan dan hanya dilakukan transformasi agar distribusi lebih stabil tanpa menghilangkan informasi penting.
cor_matrix <- cor(df_numeric, use = "complete.obs")
corrplot(cor_matrix,
method = "color",
type = "lower",
tl.col = "black",
tl.srt = 45)
Berdasarkan hasil matriks korelasi, terlihat adanya hubungan yang cukup kuat antar beberapa variabel. Korelasi sangat tinggi ditemukan antara infant.deaths dan under.five.deaths. Selain itu, variabel imunisasi seperti Diphtheria, Polio, dan Hepatitis.B juga menunjukkan korelasi yang kuat satu sama lain. Hubungan yang cukup erat juga terlihat antara Schooling dan Income.composition.of.resources. Hal ini menunjukkan adanya keterkaitan konsep yang serupa di antara variabel-variabel tersebut.
Dalam konteks PCA, kondisi ini justru baik karena tujuan utama PCA adalah mereduksi dimensi dengan menggabungkan variabel yang saling berkorelasi tinggi ke dalam satu komponen utama. Namun, untuk analisis Faktor (FA), korelasi ini perlu diuji lebih lanjut untuk memastikan kelayakan data.
Sebelum melakukan FA, perlu dilakukan uji KMO (Kaiser-Meyer-Olkin) dan uji Bartlett. Nilai KMO yang lebih dari 0,5 menunjukkan bahwa data cukup memadai untuk dianalisis menggunakan FA, sedangkan uji Bartlett dengan p-value < 0,05 menunjukkan bahwa matriks korelasi signifikan dan variabel-variabel memang saling berhubungan. Jika korelasi antarvariabel terlalu rendah, maka analisis Faktor menjadi kurang tepat untuk digunakan.
data <- df_numeric %>%
select(-Year,
-percentage.expenditure,
-Population,
-Measles,
-thinness.5.9.years)
colnames(data)
## [1] "Adult.Mortality" "infant.deaths"
## [3] "Alcohol" "Hepatitis.B"
## [5] "BMI" "under.five.deaths"
## [7] "Polio" "Total.expenditure"
## [9] "Diphtheria" "HIV.AIDS"
## [11] "GDP" "thinness..1.19.years"
## [13] "Income.composition.of.resources" "Schooling"
Dalam penelitian ini, beberapa variabel dikeluarkan dari analisis PCA dan Factor Analysis berdasarkan pertimbangan. Variabel Life Expectancy tidak disertakan karena berperan sebagai variabel target (dependen) yang akan dijelaskan oleh faktor-faktor hasil reduksi, sehingga tidak tepat dimasukkan dalam pembentukan komponen. Variabel Year juga dikeluarkan karena hanya merepresentasikan penanda waktu dan bukan indikator yang secara langsung mencerminkan kondisi kesehatan, sosial, maupun ekonomi, sehingga tidak relevan untuk pembentukan struktur faktor laten. Variabel Population dihapus karena memiliki distribusi sangat menceng dan variansi yang jauh lebih besar dibanding variabel lain, sehingga berpotensi mendominasi pembentukan komponen tanpa merepresentasikan indikator kualitas kesehatan secara langsung. Variabel Measles tidak digunakan karena menunjukkan korelasi yang relatif lemah terhadap kelompok variabel imunisasi lainnya dan berpotensi menimbulkan noise dalam struktur faktor. Sementara itu, salah satu variabel thinness dihapus karena memiliki korelasi yang sangat tinggi dengan variabel thinness lainnya, sehingga mengandung informasi yang redundan dan tidak menambah variasi baru dalam model.
colSums(is.na(data))
## Adult.Mortality infant.deaths
## 10 0
## Alcohol Hepatitis.B
## 194 553
## BMI under.five.deaths
## 34 0
## Polio Total.expenditure
## 19 226
## Diphtheria HIV.AIDS
## 19 0
## GDP thinness..1.19.years
## 448 34
## Income.composition.of.resources Schooling
## 167 163
Berdasarkan hasil pengecekan missing value, masih terdapat beberapa variabel yang memiliki missing values, pada Adult.Mortality, Hepatitis.B, Polio, BMI, GDP, Total.expenditure, Alcohol, Income.composition.of.resources, Diphtheria, thinness..1.19.years dan Schooling. Oleh karena itu, dilakukan imputasi menggunakan nilai mean agar seluruh nilai NA tergantikan dan dataset siap digunakan untuk analisis lebih lanjut seperti PCA atau FA.
Penanganan
# Imputasi dengan mean (umum untuk PCA/FA)
data <- data %>%
mutate(across(everything(), ~ifelse(is.na(.), mean(., na.rm = TRUE), .)))
colSums(is.na(data))
## Adult.Mortality infant.deaths
## 0 0
## Alcohol Hepatitis.B
## 0 0
## BMI under.five.deaths
## 0 0
## Polio Total.expenditure
## 0 0
## Diphtheria HIV.AIDS
## 0 0
## GDP thinness..1.19.years
## 0 0
## Income.composition.of.resources Schooling
## 0 0
Pada tahap ini dilakukan transformasi logaritma terhadap beberapa variabel yang sebelumnya teridentifikasi memiliki skewness tinggi, seperti Adult Mortality, infant deaths, under five deaths, HIV/AIDS, dan GDP. Transformasi ini bertujuan untuk mengurangi kemencengan distribusi (skewness) dan menstabilkan varians agar data menjadi lebih mendekati distribusi normal. Dengan distribusi yang lebih seimbang, hasil analisis lanjutan seperti PCA dan Factor Analysis dapat menjadi lebih stabil dan tidak terlalu dipengaruhi oleh nilai ekstrem.
data_transformed <- data %>%
mutate(
Adult.Mortality = log1p(Adult.Mortality),
infant.deaths = log1p(infant.deaths),
under.five.deaths = log1p(under.five.deaths),
HIV.AIDS = log1p(HIV.AIDS),
GDP = log1p(GDP)
)
Pada tahap ini dilakukan proses standardisasi terhadap seluruh variabel yang telah ditransformasi. Standardisasi bertujuan untuk menyamakan skala setiap variabel sehingga memiliki rata-rata mendekati 0 dan standar deviasi sebesar 1. Langkah ini penting karena metode seperti PCA dan Factor Analysis sensitif terhadap perbedaan skala variabel.
Setelah proses standardisasi, dilakukan pengecekan ringkasan data untuk memastikan bahwa nilai rata-rata sudah mendekati nol dan rentang data menjadi lebih seimbang. Hal ini menunjukkan bahwa data telah siap digunakan untuk analisis lanjutan tanpa adanya dominasi variabel dengan skala yang lebih besar.
data_scaled <- scale(data_transformed)
data_scaled <- as.data.frame(data_scaled)
summary(data_scaled)
## Adult.Mortality infant.deaths Alcohol Hepatitis.B
## Min. :-3.8993 Min. :-1.0635 Min. :-1.1728 Min. :-3.5392
## 1st Qu.:-0.3982 1st Qu.:-1.0635 1st Qu.:-0.8963 1st Qu.: 0.0000
## Median : 0.2387 Median :-0.2299 Median :-0.1131 Median : 0.2683
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.6759 3rd Qu.: 0.8219 3rd Qu.: 0.7117 3rd Qu.: 0.6667
## Max. : 1.7921 Max. : 3.4440 Max. : 3.3877 Max. : 0.7996
## BMI under.five.deaths Polio Total.expenditure
## Min. :-1.8728 Min. :-1.0888 Min. :-3.4065 Min. :-2.3198
## 1st Qu.:-0.9495 1st Qu.:-1.0888 1st Qu.:-0.1949 1st Qu.:-0.6533
## Median : 0.2348 Median :-0.1856 Median : 0.4475 Median : 0.0000
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.8922 3rd Qu.: 0.8010 3rd Qu.: 0.6188 3rd Qu.: 0.5799
## Max. : 2.4578 Max. : 3.3025 Max. : 0.7044 Max. : 4.8585
## Diphtheria HIV.AIDS GDP thinness..1.19.years
## Min. :-3.3978 Min. :-0.5419 Min. :-3.7247 Min. :-1.0785
## 1st Qu.:-0.1829 1st Qu.:-0.5419 1st Qu.:-0.7365 1st Qu.:-0.7372
## Median : 0.4516 Median :-0.5419 Median : 0.1963 Median :-0.3276
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.6208 3rd Qu.: 0.1011 3rd Qu.: 0.6827 3rd Qu.: 0.5143
## Max. : 0.7054 Max. : 4.4828 Max. : 2.2202 Max. : 5.2020
## Income.composition.of.resources Schooling
## Min. :-3.0639 Min. :-3.67383
## 1st Qu.:-0.6020 1st Qu.:-0.51856
## Median : 0.1682 Median : 0.03284
## Mean : 0.0000 Mean : 0.00000
## 3rd Qu.: 0.7052 3rd Qu.: 0.64551
## Max. : 1.5645 Max. : 2.66734
# KMO Test
KMO(data_scaled)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data_scaled)
## Overall MSA = 0.83
## MSA for each item =
## Adult.Mortality infant.deaths
## 0.95 0.72
## Alcohol Hepatitis.B
## 0.90 0.83
## BMI under.five.deaths
## 0.93 0.72
## Polio Total.expenditure
## 0.85 0.86
## Diphtheria HIV.AIDS
## 0.81 0.85
## GDP thinness..1.19.years
## 0.96 0.92
## Income.composition.of.resources Schooling
## 0.85 0.86
Hasil uji Kaiser-Meyer-Olkin (KMO) menunjukkan nilai sebesar 0,83 yang termasuk dalam kategori very good, sehingga data dinyatakan memadai untuk dilakukan analisis faktor. Seluruh variabel memiliki nilai MSA di atas 0,70 yang berarti tidak ada variabel yang perlu dieliminasi.
#Bartlett Test
cortest.bartlett(cor_matrix, n = nrow(data_scaled))
## $chisq
## [1] 46424.4
##
## $p.value
## [1] 0
##
## $df
## [1] 171
Uji Bartlett’s Test of Sphericity menghasilkan nilai chi-square sebesar 46424.4 dengan p-value < 0,05, sehingga matriks korelasi berbeda secara signifikan dari matriks identitas. Hal ini menunjukkan bahwa antar variabel terdapat korelasi yang cukup kuat untuk dilakukan analisis faktor.
library(psych)
describe(data_scaled)
## vars n mean sd median trimmed mad min
## Adult.Mortality 1 2938 0 1 0.24 0.12 0.80 -3.90
## infant.deaths 2 2938 0 1 -0.23 -0.10 1.24 -1.06
## Alcohol 3 2938 0 1 -0.11 -0.09 1.19 -1.17
## Hepatitis.B 4 2938 0 1 0.27 0.23 0.53 -3.54
## BMI 5 2938 0 1 0.23 0.04 1.21 -1.87
## under.five.deaths 6 2938 0 1 -0.19 -0.10 1.34 -1.09
## Polio 7 2938 0 1 0.45 0.23 0.38 -3.41
## Total.expenditure 8 2938 0 1 0.00 -0.04 0.92 -2.32
## Diphtheria 9 2938 0 1 0.45 0.24 0.38 -3.40
## HIV.AIDS 10 2938 0 1 -0.54 -0.25 0.00 -0.54
## GDP 11 2938 0 1 0.20 0.04 0.86 -3.72
## thinness..1.19.years 12 2938 0 1 -0.33 -0.16 0.81 -1.08
## Income.composition.of.resources 13 2938 0 1 0.17 0.10 0.90 -3.06
## Schooling 14 2938 0 1 0.03 0.05 0.86 -3.67
## max range skew kurtosis se
## Adult.Mortality 1.79 5.69 -1.13 1.15 0.02
## infant.deaths 3.44 4.51 0.70 -0.33 0.02
## Alcohol 3.39 4.56 0.61 -0.65 0.02
## Hepatitis.B 0.80 4.34 -2.14 4.09 0.02
## BMI 2.46 4.33 -0.22 -1.27 0.02
## under.five.deaths 3.30 4.39 0.65 -0.51 0.02
## Polio 0.70 4.11 -2.10 3.81 0.02
## Total.expenditure 4.86 7.18 0.64 1.49 0.02
## Diphtheria 0.71 4.10 -2.08 3.59 0.02
## HIV.AIDS 4.48 5.02 2.13 4.07 0.02
## GDP 2.22 5.94 -0.42 -0.20 0.02
## thinness..1.19.years 5.20 6.28 1.72 4.04 0.02
## Income.composition.of.resources 1.56 4.63 -1.18 1.65 0.02
## Schooling 2.67 6.34 -0.62 1.11 0.02
Berdasarkan hasil eksplorasi data, seluruh variabel pada dataset telah melalui proses standarisasi sehingga memiliki nilai rata-rata mendekati nol dan skala yang seragam. Hal ini terlihat dari statistik deskriptif yang menunjukkan mean setiap variabel sebesar 0 dengan median yang juga berada di sekitar nol. Kondisi ini penting karena PCA dan Factor Analysis sensitif terhadap perbedaan skala variabel. Rentang nilai yang cukup lebar pada beberapa variabel seperti HIV.AIDS, thinness..1.19.years, dan Total.expenditure menunjukkan adanya variasi antarnegara, yang justru menjadi dasar kuat dalam pembentukan komponen atau faktor.
data_long <- data_scaled %>%
pivot_longer(cols = everything(),
names_to = "Variable",
values_to = "Value")
ggplot(data_long, aes(x = Value)) +
geom_histogram(fill = "steelblue", color = "white", bins = 30) +
facet_wrap(~Variable, scales = "free") +
theme_minimal()
Distribusi data pada histogram menunjukkan sebagian besar variabel memiliki pola yang relatif mendekati normal, terutama Schooling, Income.composition.of.resources, BMI, dan Total.expenditure. Beberapa variabel seperti infant.deaths, under.five.deaths, dan HIV.AIDS tampak menceng ke kanan, yang mengindikasikan bahwa sebagian besar negara memiliki nilai rendah namun terdapat beberapa negara dengan nilai sangat tinggi. Pola ini masih dapat diterima dalam analisis PCA maupun FA karena data telah distandarisasi.
par(mar = c(10, 4, 4, 2)) # perbesar margin bawah
boxplot(data_scaled,
las = 2, # label vertikal
col = "pink",
main = "Boxplot Semua Variabel",
cex.axis = 0.7, # kecilkan ukuran label
cex.names = 0.7, # kecilkan nama variabel
outline = FALSE) # sembunyikan outlier (opsional)
Boxplot menunjukkan bahwa median setiap variabel berada di sekitar nol, sesuai dengan proses standarisasi. Terdapat beberapa nilai ekstrem pada variabel yang berkaitan dengan kematian dan penyakit, seperti HIV.AIDS dan thinness..1.19.years. Namun, kondisi ini mencerminkan perbedaan nyata antarnegara dan tidak mengganggu kelayakan analisis karena tidak terjadi penyimpangan yang berlebihan.
cor_matrix <- cor(data_scaled)
ggcorrplot(cor_matrix,
method = "square",
type = "upper",
lab = TRUE,
lab_size = 2.5, # angka lebih kecil
tl.cex = 8, # ukuran nama variabel lebih kecil
tl.srt = 45, # rotasi 45 derajat
colors = c("blue", "white", "red"),
title = "Correlation Matrix") +
theme(plot.title = element_text(hjust = 0.5),
plot.margin = margin(10, 20, 10, 20))
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggcorrplot package.
## Please report the issue at <https://github.com/kassambara/ggcorrplot/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Matriks korelasi memperlihatkan adanya hubungan yang cukup kuat antarvariabel. Korelasi sangat tinggi terlihat antara infant.deaths dan under.five.deaths, serta antara Schooling dan Income.composition.of.resources. Selain itu, terdapat hubungan positif antara variabel ekonomi dan pendidikan dengan negatif terhadap variabel kematian dan penyakit. Pola ini menunjukkan adanya struktur laten dalam data, yang menjadi dasar utama penggunaan PCA dan Factor Analysis.
Principal Component Analysis (PCA) adalah metode statistik yang digunakan untuk mereduksi dimensi data dengan cara mengubah sejumlah variabel yang saling berkorelasi menjadi beberapa variabel baru yang disebut komponen utama (principal components). Komponen utama ini merupakan kombinasi linear dari variabel-variabel asli dan disusun sedemikian rupa sehingga komponen pertama menjelaskan variasi data terbesar, diikuti oleh komponen kedua, dan seterusnya.
Secara umum, tujuan PCA adalah menyederhanakan struktur data tanpa kehilangan terlalu banyak informasi, sehingga pola hubungan antarvariabel menjadi lebih mudah dipahami dan divisualisasikan. PCA sering digunakan dalam eksplorasi data, identifikasi pola, serta sebagai tahap awal sebelum analisis lanjutan seperti clustering atau factor analysis.
pca_result <- prcomp(data_scaled,
center = FALSE,
scale. = FALSE)
summary(pca_result)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.3509 1.2459 1.05267 1.02213 0.94640 0.84473 0.78977
## Proportion of Variance 0.3948 0.1109 0.07915 0.07463 0.06398 0.05097 0.04455
## Cumulative Proportion 0.3948 0.5056 0.58480 0.65942 0.72340 0.77437 0.81892
## PC8 PC9 PC10 PC11 PC12 PC13 PC14
## Standard deviation 0.77124 0.71745 0.70706 0.64951 0.5587 0.43437 0.05440
## Proportion of Variance 0.04249 0.03677 0.03571 0.03013 0.0223 0.01348 0.00021
## Cumulative Proportion 0.86141 0.89817 0.93388 0.96402 0.9863 0.99979 1.00000
Hasil PCA menunjukkan bahwa komponen utama pertama (PC1) mampu menjelaskan 39,48% variasi data, sedangkan PC2 menjelaskan 11,09%. Secara kumulatif, dua komponen pertama sudah menjelaskan 50,56% variasi total. Jika diambil hingga empat komponen, variasi yang dapat dijelaskan meningkat menjadi 65,94%.
Berdasarkan kriteria eigenvalue > 1 (Kaiser), komponen yang layak dipertahankan adalah PC1 hingga PC4. Hal ini menunjukkan bahwa 14 variabel awal dapat direduksi menjadi sekitar 4 komponen utama tanpa kehilangan informasi yang terlalu besar.
eigenvalues <- pca_result$sdev^2
data.frame(
PC = paste0("PC", 1:length(eigenvalues)),
Eigenvalue = eigenvalues,
Proportion = eigenvalues/sum(eigenvalues),
Cumulative = cumsum(eigenvalues/sum(eigenvalues))
)
## PC Eigenvalue Proportion Cumulative
## 1 PC1 5.526650462 0.3947607473 0.3947607
## 2 PC2 1.552378863 0.1108842045 0.5056450
## 3 PC3 1.108113340 0.0791509528 0.5847959
## 4 PC4 1.044758942 0.0746256387 0.6594215
## 5 PC5 0.895665126 0.0639760805 0.7233976
## 6 PC6 0.713565655 0.0509689753 0.7743666
## 7 PC7 0.623736230 0.0445525879 0.8189192
## 8 PC8 0.594815807 0.0424868434 0.8614060
## 9 PC9 0.514735791 0.0367668422 0.8981729
## 10 PC10 0.499935167 0.0357096548 0.9338825
## 11 PC11 0.421869642 0.0301335458 0.9640161
## 12 PC12 0.312138207 0.0222955862 0.9863117
## 13 PC13 0.188677901 0.0134769929 0.9997887
## 14 PC14 0.002958866 0.0002113476 1.0000000
Berdasarkan hasil PCA, komponen utama pertama (PC1) memiliki eigenvalue sebesar 5,53 dan mampu menjelaskan 39,48% variasi data. Komponen kedua (PC2) menjelaskan 11,09%, sedangkan PC3 dan PC4 masing-masing menjelaskan 7,91% dan 7,46%. Secara kumulatif, empat komponen pertama telah mampu menjelaskan 65,94% variasi total data.
Berdasarkan kriteria Kaiser (eigenvalue > 1), komponen yang dipertahankan adalah PC1 hingga PC4, karena hanya keempat komponen tersebut yang memiliki eigenvalue lebih dari 1. Setelah PC4, nilai eigenvalue berada di bawah 1 sehingga kontribusinya relatif kecil.
fviz_eig(pca_result,
addlabels = TRUE,
ylim = c(0, 50))
## Warning in geom_bar(stat = "identity", fill = barfill, color = barcolor, :
## Ignoring empty aesthetic: `width`.
Penentuan jumlah komponen utama dilakukan menggunakan kriteria Kaiser dan scree plot. Berdasarkan kriteria Kaiser, diperoleh empat komponen dengan nilai eigenvalue lebih besar dari satu sehingga layak dipertahankan. Hasil scree plot juga menunjukkan adanya titik tekukan pada komponen keempat, setelah itu penurunan eigenvalue menjadi relatif landai. Oleh karena itu, jumlah komponen optimal yang digunakan dalam analisis adalah empat komponen utama. Berdasarkan kriteria Kaiser dan proporsi variasi kumulatif sebesar ±65,94%, diputuskan untuk mempertahankan empat komponen utama dalam analisis PCA.
loadings <- pca_result$rotation
round(loadings[,1:4], 4)
## PC1 PC2 PC3 PC4
## Adult.Mortality -0.1895 -0.0544 0.4193 -0.0274
## infant.deaths -0.3326 -0.0633 -0.1156 0.5390
## Alcohol 0.2395 0.2343 0.3504 0.2862
## Hepatitis.B 0.1471 -0.5546 0.1735 -0.0367
## BMI 0.2941 0.1532 -0.0457 -0.0534
## under.five.deaths -0.3397 -0.0611 -0.0949 0.5244
## Polio 0.2472 -0.4710 0.0702 0.1057
## Total.expenditure 0.1360 0.1551 0.5568 0.2460
## Diphtheria 0.2497 -0.5105 0.0906 0.1383
## HIV.AIDS -0.2502 0.0629 0.4496 0.0688
## GDP 0.2678 0.1405 -0.1386 0.2257
## thinness..1.19.years -0.2737 -0.2308 -0.2029 0.1191
## Income.composition.of.resources 0.3193 0.0902 -0.2213 0.3460
## Schooling 0.3455 0.1077 -0.1106 0.2592
Hasil loading PCA menunjukkan bahwa komponen pertama didominasi oleh variabel pendidikan, pendapatan, BMI, dan GDP dengan arah positif, serta variabel mortalitas dan malnutrisi dengan arah negatif. Hal ini menunjukkan bahwa komponen pertama merepresentasikan tingkat kesejahteraan dan kondisi kesehatan umum suatu negara. Komponen kedua didominasi oleh variabel imunisasi seperti Hepatitis B, Polio, dan Diphtheria, sehingga mencerminkan kualitas sistem kesehatan khususnya cakupan vaksinasi. Sementara itu, komponen ketiga berkaitan dengan beban penyakit dan pengeluaran kesehatan, dan komponen keempat terutama menggambarkan tingkat mortalitas anak.
library(factoextra)
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
p1 <- fviz_pca_var(
pca_result,
axes = c(1, 2),
col.var = "contrib",
gradient.cols = c("blue", "yellow", "violet"),
select.var = list(contrib = 12), # tampilkan yang penting saja
repel = TRUE
)
p2 <- fviz_pca_var(
pca_result,
axes = c(3, 4),
col.var = "contrib",
gradient.cols = c("blue", "yellow", "violet"),
select.var = list(contrib = 12),
repel = TRUE
)
grid.arrange(p1, p2, ncol = 2)
Hasil analisis Principal Component Analysis (PCA) menunjukkan bahwa terbentuk empat komponen utama yang mampu merangkum variasi data variabel kesehatan dan sosial ekonomi. Komponen pertama (PC1) merepresentasikan dimensi tingkat kesejahteraan dan pembangunan suatu negara. Variabel seperti Schooling, Income composition of resources, BMI, dan GDP memiliki kontribusi positif yang besar, sedangkan variabel infant deaths, under-five deaths, HIV/AIDS, dan thinness memiliki arah negatif. Hal ini menunjukkan bahwa nilai PC1 yang tinggi mencerminkan negara dengan kondisi sosial ekonomi dan kesehatan yang lebih baik, sementara nilai rendah menggambarkan negara dengan tingkat kemiskinan dan masalah kesehatan yang lebih tinggi.
Komponen kedua (PC2) menggambarkan perbedaan pola status gizi dan cakupan imunisasi. Variabel seperti alcohol, BMI, dan schooling berkontribusi pada arah positif, sedangkan variabel diphtheria, polio, dan hepatitis B berada pada arah negatif. Hal ini menunjukkan bahwa komponen ini membedakan negara berdasarkan keseimbangan antara kondisi gizi dan tingkat pendidikan dengan keberhasilan program imunisasi.
Komponen ketiga (PC3) merepresentasikan dimensi beban penyakit dan risiko kematian penduduk. Variabel adult mortality, HIV/AIDS, Alcohol, dan total expenditure memberikan kontribusi positif, sedangkan hepatitis B memiliki arah negatif. Komponen ini menunjukkan bahwa semakin tinggi nilai PC3, maka semakin besar tingkat risiko kematian dan tekanan masalah kesehatan dalam suatu negara.
Komponen keempat (PC4) terutama menggambarkan kondisi kesehatan anak. Variabel infant deaths dan under-five deaths memberikan kontribusi paling dominan pada komponen ini, serta didukung oleh variabel income composition of resources dan schooling. Komponen ini menunjukkan bahwa perbedaan nilai PC4 mencerminkan variasi tingkat kesehatan balita dan kualitas kesejahteraan masyarakat.
Factor Analysis (FA) merupakan metode analisis multivariat yang digunakan untuk menyederhanakan banyak variabel menjadi beberapa faktor utama. Faktor yang terbentuk merupakan faktor laten atau faktor tersembunyi yang tidak bisa diukur secara langsung, tetapi dapat dijelaskan melalui variabel-variabel yang ada. Pada penelitian ini, Factor Analysis digunakan untuk mengelompokkan variabel-variabel kesehatan dan sosial ekonomi yang mempengaruhi harapan hidup menjadi beberapa faktor utama sehingga lebih mudah untuk dianalisis.
Sebelum melakukan analisis faktor, data terlebih dahulu distandarisasi. Proses standardisasi dilakukan agar setiap variabel memiliki skala yang sama. Hal ini penting karena variabel dalam dataset memiliki satuan yang berbeda-beda, seperti GDP dalam angka besar, persentase imunisasi dalam persen, dan jumlah kematian dalam angka absolut. Jika tidak distandarisasi, variabel dengan nilai besar akan lebih dominan dibandingkan variabel lainnya.
Setelah data dinyatakan layak untuk dianalisis, langkah berikutnya adalah menentukan jumlah faktor yang akan digunakan. Penentuan jumlah faktor dilakukan menggunakan metode Parallel Analysis.
fa.parallel(data_scaled,
fm = "ml",
fa = "fa",
main = "Parallel Analysis Scree Plot")
## Parallel analysis suggests that the number of factors = 4 and the number of components = NA
Berdasarkan hasil Parallel Analysis, diperoleh bahwa jumlah faktor yang terbentuk adalah sebanyak 4 faktor. Berdasarkan hasil Parallel Analysis, diperoleh bahwa jumlah faktor yang terbentuk adalah sebanyak 4 faktor.
Setelah jumlah faktor ditentukan, dilakukan proses ekstraksi faktor untuk mendapatkan faktor-faktor utama. Proses ekstraksi dilakukan menggunakan metode Maximum Likelihood dengan rotasi Varimax.
fa_result <- fa(data_scaled,
nfactors = 4,
rotate = "varimax",
fm = "ml",
scores = "regression")
fa_result
## Factor Analysis using method = ml
## Call: fa(r = data_scaled, nfactors = 4, rotate = "varimax", scores = "regression",
## fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML2 ML1 ML3 ML4 h2 u2 com
## Adult.Mortality -0.37 0.15 -0.10 -0.04 0.17 0.8303 1.5
## infant.deaths -0.31 0.90 -0.19 -0.24 1.00 0.0041 1.5
## Alcohol 0.24 -0.13 0.05 0.72 0.60 0.4031 1.3
## Hepatitis.B 0.05 -0.10 0.55 0.04 0.32 0.6827 1.1
## BMI 0.47 -0.28 0.14 0.26 0.38 0.6185 2.5
## under.five.deaths -0.34 0.89 -0.20 -0.23 1.00 0.0041 1.6
## Polio 0.25 -0.13 0.68 0.13 0.56 0.4361 1.4
## Total.expenditure 0.06 -0.07 0.08 0.38 0.16 0.8402 1.2
## Diphtheria 0.23 -0.08 0.86 0.14 0.82 0.1801 1.2
## HIV.AIDS -0.51 0.21 -0.24 0.05 0.36 0.6370 1.8
## GDP 0.50 -0.18 0.10 0.29 0.38 0.6238 2.0
## thinness..1.19.years -0.32 0.31 -0.08 -0.40 0.37 0.6251 2.9
## Income.composition.of.resources 0.82 -0.07 0.15 0.29 0.79 0.2150 1.3
## Schooling 0.77 -0.18 0.17 0.38 0.80 0.1970 1.7
##
## ML2 ML1 ML3 ML4
## SS loadings 2.63 1.96 1.75 1.36
## Proportion Var 0.19 0.14 0.13 0.10
## Cumulative Var 0.19 0.33 0.45 0.55
## Proportion Explained 0.34 0.26 0.23 0.18
## Cumulative Proportion 0.34 0.60 0.82 1.00
##
## Mean item complexity = 1.7
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 91 with the objective function = 10.02 with Chi Square = 29370.1
## df of the model are 41 and the objective function was 0.32
##
## The root mean square of the residuals (RMSR) is 0.03
## The df corrected root mean square of the residuals is 0.05
##
## The harmonic n.obs is 2938 with the empirical chi square 249.91 with prob < 9.1e-32
## The total n.obs was 2938 with Likelihood Chi Square = 947.83 with prob < 4.4e-172
##
## Tucker Lewis Index of factoring reliability = 0.931
## RMSEA index = 0.087 and the 90 % confidence intervals are 0.082 0.092
## BIC = 620.42
## Fit based upon off diagonal values = 0.99
## Measures of factor score adequacy
## ML2 ML1 ML3 ML4
## Correlation of (regression) scores with factors 0.90 0.99 0.91 0.78
## Multiple R square of scores with factors 0.81 0.97 0.83 0.60
## Minimum correlation of possible factor scores 0.61 0.95 0.65 0.21
Metode Maximum Likelihood digunakan untuk mencari faktor yang paling sesuai dengan data, sedangkan rotasi Varimax digunakan untuk memperjelas hubungan antara variabel dan faktor sehingga lebih mudah untuk diinterpretasikan. Hasil ekstraksi menunjukkan bahwa terdapat empat faktor utama yang terbentuk dari variabel-variabel yang ada.
Hasil analisis menunjukkan bahwa setiap faktor memiliki kontribusi yang berbeda dalam menjelaskan variasi data.
fa_result <- fa(data_scaled,
nfactors = 4,
rotate = "varimax",
fm = "ml",
scores = "regression")
loadings_df <- as.data.frame(unclass(fa_result$loadings))
colnames(loadings_df) <- c(
"F1_Kesejahteraan",
"F2_Imunisasi",
"F3_BebanPenyakit",
"F4_KesehatanAnak"
)
round(loadings_df, 3)
## F1_Kesejahteraan F2_Imunisasi F3_BebanPenyakit
## Adult.Mortality -0.368 0.148 -0.104
## infant.deaths -0.309 0.898 -0.195
## Alcohol 0.241 -0.131 0.054
## Hepatitis.B 0.055 -0.104 0.550
## BMI 0.468 -0.276 0.137
## under.five.deaths -0.337 0.888 -0.204
## Polio 0.252 -0.133 0.682
## Total.expenditure 0.061 -0.071 0.081
## Diphtheria 0.231 -0.078 0.860
## HIV.AIDS -0.509 0.214 -0.237
## GDP 0.500 -0.180 0.098
## thinness..1.19.years -0.324 0.315 -0.082
## Income.composition.of.resources 0.821 -0.071 0.155
## Schooling 0.772 -0.182 0.167
## F4_KesehatanAnak
## Adult.Mortality -0.041
## infant.deaths -0.236
## Alcohol 0.720
## Hepatitis.B 0.035
## BMI 0.259
## under.five.deaths -0.230
## Polio 0.131
## Total.expenditure 0.380
## Diphtheria 0.144
## HIV.AIDS 0.046
## GDP 0.290
## thinness..1.19.years -0.405
## Income.composition.of.resources 0.286
## Schooling 0.382
Dari tabel komunalitas yang dihasilkan terlihat bahwa sebagian besar variabel memiliki nilai komunalitas yang cukup tinggi. Faktor yang terbentuk sudah mampu menjelaskan variabel dengan baik.
Ini berarti model Factor Analysis sudah cukup baik dalam merangkum informasi dari data.
Factor loading menunjukkan seberapa besar hubungan antara variabel dengan faktor. Nilai loading berkisar antara -1 sampai 1. Semakin besar nilai loading maka semakin kuat hubungan variabel dengan faktor tersebut.
Nilai loading yang dianggap kuat biasanya lebih besar dari 0.5 atau lebih kecil dari -0.5.Variabel yang memiliki loading besar pada faktor yang sama menunjukkan bahwa variabel tersebut memiliki hubungan yang erat dan mewakili konsep yang sama.
Dari tabel loading yang dihasilkan terlihat bahwa setiap faktor memiliki variabel yang dominan.
Factor Analysis bertujuan untuk mengelompokkan variabel-variabel yang saling berhubungan menjadi beberapa faktor utama. Pada hasil analisis ini terbentuk 4 faktor, yaitu:
Faktor 1 (Kesejahteraan)
Faktor pertama menggambarkan kondisi kesejahteraan suatu negara. Hal ini terlihat dari variabel-variabel yang memiliki loading besar pada faktor ini, yaitu:
Serta memiliki loading negatif pada: HIV/AIDS, Adult Mortality Kesimpulannya, Faktor 1 menggambarkan tingkat kesejahteraan negara yang berhubungan dengan pendidikan, ekonomi, dan kesehatan masyarakat.
Faktor 2 (Imunisasi)
Faktor kedua memiliki loading tinggi pada variabel: Infant deaths, Under five deaths
Nilai loading yang sangat tinggi menunjukkan bahwa faktor ini sangat dipengaruhi oleh angka kematian bayi dan anak. Faktor ini menunjukkan bahwa semakin buruk kondisi imunisasi dan kesehatan anak, maka angka kematian anak juga semakin tinggi.
Faktor 3 (Beban Penyakit)
Faktor ketiga memiliki loading tinggi pada variabel: Polio, Diphtheria, Hepatitis B Variabel-variabel ini berkaitan dengan penyakit menular yang dapat dicegah melalui imunisasi. Semakin tinggi nilai faktor ini, menunjukkan semakin besar pengaruh penyakit terhadap kondisi kesehatan masyarakat.
Faktor 4 (Kesehatan Anak)
Faktor keempat memiliki loading pada variabel: Alcohol, Total expenditure, Schooling Selain itu terdapat loading negatif pada: thinness
Loading negatif pada thinness menunjukkan bahwa semakin baik kondisi kesehatan anak, maka tingkat kekurangan gizi semakin rendah.
Heatmap factor loadings digunakan untuk melihat hubungan antara variabel dengan faktor dalam bentuk warna. Heatmap ini membantu memahami hasil Factor Analysis dengan lebih cepat karena variabel yang memiliki pengaruh besar terhadap suatu faktor akan terlihat lebih jelas melalui perbedaan warna.
library(corrplot)
loadings_matrix <- as.matrix(fa_result$loadings)
colnames(loadings_matrix) <- c(
"F1_Kesejahteraan",
"F2_Imunisasi",
"F3_BebanPenyakit",
"F4_KesehatanAnak"
)
corrplot(loadings_matrix,
is.corr = FALSE,
method = "color",
col = colorRampPalette(c("white", "pink", "red"))(200),
tl.col = "black",
tl.srt = 45)
## Warning in ind1:ind2: numerical expression has 2 elements: only the first used
Warna yang muncul menunjukkan besar kecilnya nilai factor loading.
Semakin pekat warnanya, semakin besar pengaruh variabel tersebut
terhadap faktor. Sebaliknya, warna yang lebih pucat menunjukkan bahwa
variabel tersebut tidak terlalu berpengaruh pada faktor tersebut.
Berdasarkan heatmap pada hasil analisis, terlihat bahwa beberapa
variabel memiliki warna yang sangat kuat pada faktor tertentu.
Dengan melihat heatmap, dapat disimpulkan bahwa variabel-variabel yang memiliki warna kuat pada faktor yang sama menunjukkan bahwa variabel tersebut memiliki hubungan yang erat dan mewakili konsep yang sama.
Diagram faktor digunakan untuk menggambarkan hubungan antara variabel dengan faktor dalam bentuk visual. Diagram ini menunjukkan faktor sebagai pusat dan variabel-variabel yang terhubung dengan faktor tersebut.
fa.diagram(fa_result)
Pada diagram faktor terlihat bahwa setiap faktor memiliki beberapa variabel yang terhubung dengan garis. Garis yang lebih tebal menunjukkan bahwa variabel tersebut memiliki pengaruh yang lebih kuat terhadap faktor. Berdasarkan diagram faktor pada hasil analisis, terlihat bahwa aktor pertama (ML1) memiliki loading sangat tinggi pada infant deaths dan under-five deaths, sehingga secara jelas merepresentasikan faktor mortalitas anak. Faktor kedua (ML2) didominasi oleh Income composition of resources, Schooling, GDP, dan BMI dengan arah negatif pada HIV/AIDS dan Adult Mortality. Pola ini menunjukkan bahwa faktor tersebut menggambarkan tingkat pembangunan sosial-ekonomi yang berkaitan dengan penurunan beban penyakit dan kematian. Faktor ketiga (ML3) memiliki loading tinggi pada Diphtheria, Polio, dan Hepatitis B, sehingga dapat diinterpretasikan sebagai faktor cakupan imunisasi. Faktor keempat (ML4) berkaitan dengan Alcohol, Total Expenditure, dan Thinness, yang mencerminkan aspek gaya hidup, pengeluaran kesehatan, serta kondisi gizi.
Proporsi varians menunjukkan seberapa besar masing-masing faktor mampu menjelaskan variasi dalam data. Semakin besar proporsi varians suatu faktor, maka semakin penting faktor tersebut dalam menjelaskan struktur data.
fa_result$Vaccounted
## ML2 ML1 ML3 ML4
## SS loadings 2.6295511 1.9647663 1.7506998 1.35764591
## Proportion Var 0.1878251 0.1403404 0.1250500 0.09697471
## Cumulative Var 0.1878251 0.3281655 0.4532155 0.55019022
## Proportion Explained 0.3413821 0.2550762 0.2272850 0.17625669
## Cumulative Proportion 0.3413821 0.5964583 0.8237433 1.00000000
Skor faktor merupakan nilai yang menunjukkan posisi setiap observasi terhadap faktor yang terbentuk. Setiap negara dalam dataset memiliki nilai skor untuk masing-masing faktor.
Nilai skor dapat bernilai positif atau negatif. Nilai positif menunjukkan bahwa negara tersebut memiliki karakteristik yang kuat pada faktor tersebut, sedangkan nilai negatif menunjukkan bahwa karakteristik tersebut kurang kuat.
fa_scores <- as.data.frame(fa_result$scores)
colnames(fa_scores) <- c(
"F1_Kesejahteraan",
"F2_Imunisasi",
"F3_BebanPenyakit",
"F4_KesehatanAnak"
)
head(fa_scores)
## F1_Kesejahteraan F2_Imunisasi F3_BebanPenyakit F4_KesehatanAnak
## 1 -0.1967471 1.018390 -1.0430614 -0.9951855
## 2 -0.2295373 1.112288 -0.6315917 -1.0206950
## 3 -0.2679645 1.143286 -0.5100788 -1.0320267
## 4 -0.3245107 1.194297 -0.3400452 -1.0117156
## 5 -0.4753810 1.151520 -0.2464450 -1.1358059
## 6 -0.4597648 1.197592 -0.3545760 -0.9986985
Pada tabel distribusi skor faktor terlihat penyebaran nilai untuk setiap faktor: a. Faktor 1 Distribusi skor pada Faktor 1 terlihat cukup menyebar di sekitar nilai tengah (mendekati nol). Hal ini menunjukkan bahwa sebagian besar negara memiliki tingkat kesejahteraan yang relatif sedang dan tidak terlalu jauh berbeda satu sama lain. Namun demikian, terdapat beberapa negara dengan skor yang lebih tinggi maupun lebih rendah.
Faktor 2 Distribusi skor pada Faktor 2 sebagian besar terkonsentrasi di sekitar nilai tengah, tetapi masih terdapat variasi antar negara. Hal ini menunjukkan bahwa kondisi imunisasi dan kesehatan anak berbeda-beda di setiap negara.
Faktor 3 Distribusi skor pada Faktor 3 menunjukkan bahwa sebagian besar negara berada di sekitar nilai tengah, namun terdapat beberapa negara yang memiliki skor lebih rendah atau lebih tinggi dari rata-rata.
Faktor 4 Distribusi skor pada Faktor 4 terlihat cukup merata di sekitar nilai tengah. Hal ini menunjukkan bahwa kondisi kesehatan anak di berbagai negara cukup bervariasi, tetapi sebagian besar berada pada tingkat sedang.
Secara keseluruhan, grafik skor faktor ini menunjukkan bahwa setiap faktor mampu membedakan karakteristik negara berdasarkan aspek kesejahteraan, imunisasi, beban penyakit, dan kesehatan anak. Perbedaan skor antar negara menunjukkan adanya variasi kondisi kesehatan dan kesejahteraan di berbagai negara yang mempengaruhi harapan hidup.
Goodness of Fit digunakan untuk melihat apakah model FA sudah sesuai dengan data.
cat("Goodness-of-Fit Factor Analysis \n")
## Goodness-of-Fit Factor Analysis
cat("Chi-Square :", round(fa_result$STATISTIC, 3), "\n")
## Chi-Square : 947.83
cat("Derajat Bebas :", fa_result$dof, "\n")
## Derajat Bebas : 41
cat("p-value :", round(fa_result$PVAL, 4), "\n")
## p-value : 0
cat("RMSEA :", round(fa_result$RMSEA[1], 4), "\n")
## RMSEA : 0.0868
cat("TLI :", round(fa_result$TLI, 4), "\n")
## TLI : 0.9312
cat("BIC :", round(fa_result$BIC, 3), "\n")
## BIC : 620.425
Karena : a) KMO = 0.83 (baik) b) Bartlett signifikan Maka model FA sudah layak digunakan
Dari 14 variabel terbentuk 4 faktor utama:
Keempat faktor ini menjelaskan sebagian besar variasi data.
Artinya yakni data yang banyak bisa diringkas menjadi beberapa faktor utama saja. Faktor yang paling berpengaruh terhadap harapan hidup adalah kesejahteraan karena memiliki loading terbesar.