library(psych)
library(corrplot)
## corrplot 0.95 loaded
library(factoextra)
## Loading required package: ggplot2
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
Dataset yang digunakan dalam analisis ini merupakan dataset COVID-19 Indonesia yang diperoleh dari platform penyedia data terbuka yaitu :contentReferenceoaicite:0. Dataset ini berisi informasi perkembangan kasus COVID-19 di berbagai wilayah di Indonesia dalam rentang waktu beberapa tahun terakhir.
Data tersebut mencakup berbagai variabel yang berkaitan dengan perkembangan pandemi, seperti jumlah kasus baru, jumlah kematian, jumlah kesembuhan, jumlah kasus total, serta karakteristik wilayah seperti jumlah populasi dan kepadatan penduduk. Variabel-variabel ini bersifat numerik sehingga sesuai untuk dianalisis menggunakan metode Principal Component Analysis (PCA) dan Factor Analysis (FA).
Pada penelitian ini, dataset diakses langsung melalui tautan sumber data (https://www.kaggle.com/datasets/hendratno/covid19-indonesia) agar proses analisis dapat direplikasi dengan mudah.
data <- read.csv("covid19_indonesia_time_series_all.csv")
head(data)
## Date Location.ISO.Code Location New.Cases New.Deaths New.Recovered
## 1 3/1/2020 ID-JK DKI Jakarta 2 0 0
## 2 3/2/2020 ID-JK DKI Jakarta 2 0 0
## 3 3/2/2020 IDN Indonesia 2 0 0
## 4 3/2/2020 ID-RI Riau 1 0 0
## 5 3/3/2020 ID-JK DKI Jakarta 2 0 0
## 6 3/3/2020 IDN Indonesia 0 0 0
## New.Active.Cases Total.Cases Total.Deaths Total.Recovered Total.Active.Cases
## 1 2 39 20 75 -56
## 2 2 41 20 75 -54
## 3 2 2 0 0 2
## 4 1 1 0 1 0
## 5 2 43 20 75 -52
## 6 0 2 0 0 2
## Location.Level City.or.Regency Province Country Continent Island
## 1 Province NA DKI Jakarta Indonesia Asia Jawa
## 2 Province NA DKI Jakarta Indonesia Asia Jawa
## 3 Country NA Indonesia Asia
## 4 Province NA Riau Indonesia Asia Sumatera
## 5 Province NA DKI Jakarta Indonesia Asia Jawa
## 6 Country NA Indonesia Asia
## Time.Zone Special.Status Total.Regencies Total.Cities Total.Districts
## 1 UTC+07:00 Daerah Khusus Ibu Kota 1 5 44
## 2 UTC+07:00 Daerah Khusus Ibu Kota 1 5 44
## 3 416 98 7230
## 4 UTC+07:00 10 2 169
## 5 UTC+07:00 Daerah Khusus Ibu Kota 1 5 44
## 6 416 98 7230
## Total.Urban.Villages Total.Rural.Villages Area..km2. Population
## 1 267 NA 664 10846145
## 2 267 NA 664 10846145
## 3 8488 74953 1916907 265185520
## 4 268 1591 87024 6074100
## 5 267 NA 664 10846145
## 6 8488 74953 1916907 265185520
## Population.Density Longitude Latitude New.Cases.per.Million
## 1 16334.31 106.8361 -6.2046990 0.18
## 2 16334.31 106.8361 -6.2046990 0.18
## 3 138.34 113.9213 -0.7892750 0.01
## 4 69.80 101.8051 0.5116479 0.16
## 5 16334.31 106.8361 -6.2046990 0.18
## 6 138.34 113.9213 -0.7892750 0.00
## Total.Cases.per.Million New.Deaths.per.Million Total.Deaths.per.Million
## 1 3.60 0 1.84
## 2 3.78 0 1.84
## 3 0.01 0 0.00
## 4 0.16 0 0.00
## 5 3.96 0 1.84
## 6 0.01 0 0.00
## Total.Deaths.per.100rb Case.Fatality.Rate Case.Recovered.Rate
## 1 0.18 51.28% 192.31%
## 2 0.18 48.78% 182.93%
## 3 0.00 0.00% 0.00%
## 4 0.00 0.00% 100.00%
## 5 0.18 46.51% 174.42%
## 6 0.00 0.00% 0.00%
## Growth.Factor.of.New.Cases Growth.Factor.of.New.Deaths
## 1 NA NA
## 2 1 1
## 3 NA NA
## 4 NA NA
## 5 1 1
## 6 0 1
dim(data)
## [1] 31822 38
names(data)
## [1] "Date" "Location.ISO.Code"
## [3] "Location" "New.Cases"
## [5] "New.Deaths" "New.Recovered"
## [7] "New.Active.Cases" "Total.Cases"
## [9] "Total.Deaths" "Total.Recovered"
## [11] "Total.Active.Cases" "Location.Level"
## [13] "City.or.Regency" "Province"
## [15] "Country" "Continent"
## [17] "Island" "Time.Zone"
## [19] "Special.Status" "Total.Regencies"
## [21] "Total.Cities" "Total.Districts"
## [23] "Total.Urban.Villages" "Total.Rural.Villages"
## [25] "Area..km2." "Population"
## [27] "Population.Density" "Longitude"
## [29] "Latitude" "New.Cases.per.Million"
## [31] "Total.Cases.per.Million" "New.Deaths.per.Million"
## [33] "Total.Deaths.per.Million" "Total.Deaths.per.100rb"
## [35] "Case.Fatality.Rate" "Case.Recovered.Rate"
## [37] "Growth.Factor.of.New.Cases" "Growth.Factor.of.New.Deaths"
Pada tahap ini dilakukan pemilihan variabel yang bertipe numerik dari
dataset. Hal ini dilakukan karena metode Principal Component Analysis
(PCA) dan Factor Analysis (FA) hanya dapat diterapkan pada data yang
berskala numerik. Variabel non-numerik seperti nama wilayah atau
kategori lainnya tidak digunakan dalam analisis ini.
Proses seleksi dilakukan secara otomatis menggunakan fungsi pada R yang
mendeteksi tipe data numerik pada setiap variabel.
data_num <- data[sapply(data, is.numeric)]
dim(data_num)
## [1] 31822 25
head(data_num)
## New.Cases New.Deaths New.Recovered New.Active.Cases Total.Cases Total.Deaths
## 1 2 0 0 2 39 20
## 2 2 0 0 2 41 20
## 3 2 0 0 2 2 0
## 4 1 0 0 1 1 0
## 5 2 0 0 2 43 20
## 6 0 0 0 0 2 0
## Total.Recovered Total.Active.Cases Total.Regencies Total.Cities
## 1 75 -56 1 5
## 2 75 -54 1 5
## 3 0 2 416 98
## 4 1 0 10 2
## 5 75 -52 1 5
## 6 0 2 416 98
## Total.Districts Total.Urban.Villages Total.Rural.Villages Area..km2.
## 1 44 267 NA 664
## 2 44 267 NA 664
## 3 7230 8488 74953 1916907
## 4 169 268 1591 87024
## 5 44 267 NA 664
## 6 7230 8488 74953 1916907
## Population Population.Density Longitude Latitude New.Cases.per.Million
## 1 10846145 16334.31 106.8361 -6.2046990 0.18
## 2 10846145 16334.31 106.8361 -6.2046990 0.18
## 3 265185520 138.34 113.9213 -0.7892750 0.01
## 4 6074100 69.80 101.8051 0.5116479 0.16
## 5 10846145 16334.31 106.8361 -6.2046990 0.18
## 6 265185520 138.34 113.9213 -0.7892750 0.00
## Total.Cases.per.Million New.Deaths.per.Million Total.Deaths.per.Million
## 1 3.60 0 1.84
## 2 3.78 0 1.84
## 3 0.01 0 0.00
## 4 0.16 0 0.00
## 5 3.96 0 1.84
## 6 0.01 0 0.00
## Total.Deaths.per.100rb Growth.Factor.of.New.Cases Growth.Factor.of.New.Deaths
## 1 0.18 NA NA
## 2 0.18 1 1
## 3 0.00 NA NA
## 4 0.00 NA NA
## 5 0.18 1 1
## 6 0.00 0 1
#MengHapus variabel yang banyak missing value
data_num <- data_num[, colSums(is.na(data_num)) == 0]
#Menggunakan Variable yang benar" di perlukan untuk PCA dan FA
data_pca <- data_num[, c(
"New.Cases",
"New.Deaths",
"New.Recovered",
"Total.Cases",
"Total.Deaths",
"Total.Recovered",
"Population",
"Population.Density",
"New.Cases.per.Million",
"Total.Cases.per.Million"
)]
dim(data_pca)
## [1] 31822 10
names(data_pca)
## [1] "New.Cases" "New.Deaths"
## [3] "New.Recovered" "Total.Cases"
## [5] "Total.Deaths" "Total.Recovered"
## [7] "Population" "Population.Density"
## [9] "New.Cases.per.Million" "Total.Cases.per.Million"
Dataset yang digunakan dalam analisis terdiri dari 10 variabel numerik yang dianggap relevan untuk menggambarkan perkembangan kasus COVID-19 di Indonesia.
Statistik deskriptif digunakan untuk memberikan gambaran umum mengenai karakteristik data, seperti nilai minimum, maksimum, rata-rata (mean), dan standar deviasi. Informasi ini membantu dalam memahami distribusi data sebelum dilakukan analisis lanjutan.
summary(data_pca)
## New.Cases New.Deaths New.Recovered Total.Cases
## Min. : 0.0 Min. : 0.000 Min. : 0.0 Min. : 1
## 1st Qu.: 3.0 1st Qu.: 0.000 1st Qu.: 2.0 1st Qu.: 5223
## Median : 27.0 Median : 0.000 Median : 20.0 Median : 23597
## Mean : 402.3 Mean : 9.921 Mean : 390.4 Mean : 159450
## 3rd Qu.: 130.0 3rd Qu.: 3.000 3rd Qu.: 123.0 3rd Qu.: 69928
## Max. :64718.0 Max. :2069.000 Max. :61361.0 Max. :6405044
## Total.Deaths Total.Recovered Population Population.Density
## Min. : 0.0 Min. : 0 Min. : 648407 Min. : 8.59
## 1st Qu.: 128.0 1st Qu.: 3914 1st Qu.: 1999539 1st Qu.: 47.79
## Median : 565.5 Median : 21028 Median : 4216171 Median : 103.84
## Mean : 4564.8 Mean : 149262 Mean : 15367656 Mean : 738.89
## 3rd Qu.: 2189.0 3rd Qu.: 64142 3rd Qu.: 9095591 3rd Qu.: 262.70
## Max. :157876.0 Max. :6218708 Max. :265185520 Max. :16334.31
## New.Cases.per.Million Total.Cases.per.Million
## Min. : 0.00 Min. : 0.01
## 1st Qu.: 0.83 1st Qu.: 1291.37
## Median : 5.71 Median : 6804.28
## Mean : 28.13 Mean : 11485.04
## 3rd Qu.: 22.29 3rd Qu.: 14557.36
## Max. :1459.04 Max. :130231.62
describe(data_pca)
## vars n mean sd median
## New.Cases 1 31822 402.31 2320.63 27.00
## New.Deaths 2 31822 9.92 64.14 0.00
## New.Recovered 3 31822 390.40 2199.88 20.00
## Total.Cases 4 31822 159450.00 626443.45 23596.50
## Total.Deaths 5 31822 4564.75 17693.73 565.50
## Total.Recovered 6 31822 149261.46 595853.62 21027.50
## Population 7 31822 15367655.68 44617141.31 4216171.00
## Population.Density 8 31822 738.89 2729.43 103.84
## New.Cases.per.Million 9 31822 28.13 74.31 5.71
## Total.Cases.per.Million 10 31822 11485.04 16477.39 6804.28
## trimmed mad min max
## New.Cases 74.61 40.03 0.00 64718.00
## New.Deaths 1.66 0.00 0.00 2069.00
## New.Recovered 68.53 29.65 0.00 61361.00
## Total.Cases 41068.61 33381.48 1.00 6405044.00
## Total.Deaths 1148.18 808.76 0.00 157876.00
## Total.Recovered 37575.37 30414.06 0.00 6218708.00
## Population 5716599.81 3390366.68 648407.00 265185520.00
## Population.Density 220.00 113.15 8.59 16334.31
## New.Cases.per.Million 12.07 8.36 0.00 1459.04
## Total.Cases.per.Million 7952.16 8695.80 0.01 130231.62
## range skew kurtosis se
## New.Cases 64718.00 15.36 297.44 13.01
## New.Deaths 2069.00 18.18 414.88 0.36
## New.Recovered 61361.00 13.86 237.34 12.33
## Total.Cases 6405043.00 7.51 61.62 3511.71
## Total.Deaths 157876.00 7.15 54.54 99.19
## Total.Recovered 6218708.00 7.63 63.73 3340.23
## Population 264537113.00 5.13 25.71 250114.00
## Population.Density 16325.72 5.44 28.12 15.30
## New.Cases.per.Million 1459.04 7.03 71.71 0.42
## Total.Cases.per.Million 130231.61 3.16 13.41 92.37
Matriks korelasi digunakan untuk melihat hubungan antar variabel dalam dataset. Analisis korelasi penting dilakukan karena PCA dan Factor Analysis membutuhkan adanya hubungan antar variabel agar dapat membentuk komponen atau faktor baru.
cor_matrix <- cor(data_pca)
cor_matrix
## New.Cases New.Deaths New.Recovered Total.Cases
## New.Cases 1.00000000 0.715800043 0.85693945 0.45003983
## New.Deaths 0.71580004 1.000000000 0.78287247 0.33098678
## New.Recovered 0.85693945 0.782872468 1.00000000 0.50574709
## Total.Cases 0.45003983 0.330986781 0.50574709 1.00000000
## Total.Deaths 0.43758598 0.346204614 0.48719681 0.97139924
## Total.Recovered 0.41592996 0.299172867 0.47229210 0.99910401
## Population 0.49564147 0.447464011 0.50741359 0.72728093
## Population.Density 0.09013962 0.026039746 0.09349209 0.12736530
## New.Cases.per.Million 0.28693008 0.142761974 0.23672696 0.06103428
## Total.Cases.per.Million 0.07078051 0.007347363 0.08942493 0.22699043
## Total.Deaths Total.Recovered Population
## New.Cases 0.43758598 0.41592996 0.495641472
## New.Deaths 0.34620461 0.29917287 0.447464011
## New.Recovered 0.48719681 0.47229210 0.507413587
## Total.Cases 0.97139924 0.99910401 0.727280931
## Total.Deaths 1.00000000 0.96894385 0.745583326
## Total.Recovered 0.96894385 1.00000000 0.715287848
## Population 0.74558333 0.71528785 1.000000000
## Population.Density 0.04890660 0.13001930 -0.002495180
## New.Cases.per.Million 0.02721006 0.05304114 -0.009058802
## Total.Cases.per.Million 0.14640625 0.23209973 -0.023189971
## Population.Density New.Cases.per.Million
## New.Cases 0.09013962 0.286930080
## New.Deaths 0.02603975 0.142761974
## New.Recovered 0.09349209 0.236726957
## Total.Cases 0.12736530 0.061034278
## Total.Deaths 0.04890660 0.027210058
## Total.Recovered 0.13001930 0.053041137
## Population -0.00249518 -0.009058802
## Population.Density 1.00000000 0.265818329
## New.Cases.per.Million 0.26581833 1.000000000
## Total.Cases.per.Million 0.45278888 0.288294288
## Total.Cases.per.Million
## New.Cases 0.070780515
## New.Deaths 0.007347363
## New.Recovered 0.089424930
## Total.Cases 0.226990434
## Total.Deaths 0.146406248
## Total.Recovered 0.232099731
## Population -0.023189971
## Population.Density 0.452788882
## New.Cases.per.Million 0.288294288
## Total.Cases.per.Million 1.000000000
corrplot(cor_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45,
number.cex = 0.7)
# Mengubah data menjadi format long
data_long <- stack(data_pca)
# Boxplot
ggplot(data_long, aes(x = ind, y = values)) +
geom_boxplot(fill = "skyblue", color = "black", outlier.color = "red") +
labs(
title = "Distribusi Data dan Deteksi Outlier",
x = "Variabel",
y = "Nilai"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
KMO(cor_matrix)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix)
## Overall MSA = 0.69
## MSA for each item =
## New.Cases New.Deaths New.Recovered
## 0.67 0.89 0.68
## Total.Cases Total.Deaths Total.Recovered
## 0.58 0.85 0.57
## Population Population.Density New.Cases.per.Million
## 0.88 0.63 0.72
## Total.Cases.per.Million
## 0.68
cortest.bartlett(cor_matrix, n = nrow(data_pca))
## $chisq
## [1] 516367.2
##
## $p.value
## [1] 0
##
## $df
## [1] 45
Berdasarkan hasil uji Kaiser-Meyer-Olkin (KMO), diperoleh nilai Overall Measure of Sampling Adequacy (MSA) sebesar 0,69. Nilai tersebut berada di atas batas minimum yaitu 0,5 sehingga dapat disimpulkan bahwa data memiliki tingkat kecukupan sampel yang cukup baik untuk dilakukan analisis faktor. Secara umum, nilai KMO antara 0,6 hingga 0,7 dapat dikategorikan sebagai cukup masih layak digunakan dalam analisis multivariat.
Selain nilai KMO secara keseluruhan, nilai MSA pada masing-masing variabel juga menunjukkan bahwa seluruh variabel memiliki nilai di atas 0,5. Hal ini berarti setiap variabel dalam dataset memiliki korelasi yang memadai dengan variabel lainnya sehingga tidak ada variabel yang perlu dieliminasi dari analisis.
Beberapa variabel bahkan menunjukkan nilai MSA yang cukup tinggi, seperti New.Deaths (0,89) dan Population (0,88), yang mengindikasikan bahwa variabel tersebut memiliki hubungan yang kuat dengan struktur faktor yang terbentuk. Sementara itu, variabel seperti Total.Cases (0,58) dan Total.Recovered (0,57) memiliki nilai MSA yang relatif lebih rendah, namun masih berada di atas batas kelayakan sehingga tetap dapat dipertahankan dalam model analisis.
Dengan demikian, berdasarkan hasil uji KMO dapat disimpulkan bahwa struktur korelasi antar variabel dalam dataset sudah cukup baik dan analisis dapat dilanjutkan ke tahap berikutnya yaitu uji Bartlett serta analisis Principal Component Analysis (PCA) dan Factor Analysis (FA) untuk mereduksi dimensi data dan mengidentifikasi faktor-faktor utama yang terbentuk.
Standarisasi dilakukan agar setiap variabel memiliki skala yang sama. Hal ini penting karena variabel dalam dataset memiliki satuan yang berbeda sehingga perlu dinormalisasi sebelum dilakukan analisis PCA.
data_scaled <- scale(data_pca)
Principal Component Analysis (PCA) digunakan untuk mereduksi dimensi data dengan mengubah variabel asli menjadi beberapa komponen utama yang dapat menjelaskan sebagian besar variasi dalam data.
pca_model <- prcomp(data_scaled, scale = TRUE)
summary(pca_model)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.1743 1.2971 1.2647 0.83941 0.7396 0.56637 0.51159
## Proportion of Variance 0.4728 0.1682 0.1599 0.07046 0.0547 0.03208 0.02617
## Cumulative Proportion 0.4728 0.6410 0.8009 0.87139 0.9261 0.95816 0.98433
## PC8 PC9 PC10
## Standard deviation 0.35363 0.17766 0.007421
## Proportion of Variance 0.01251 0.00316 0.000010
## Cumulative Proportion 0.99684 0.99999 1.000000
Berdasarkan hasil Principal Component Analysis (PCA), komponen utama pertama (PC1) mampu menjelaskan variasi data sebesar 47,28%, komponen kedua (PC2) sebesar 16,82%, dan komponen ketiga (PC3) sebesar 15,99%. Secara kumulatif, ketiga komponen tersebut mampu menjelaskan 80,09% variasi data.
Hal ini menunjukkan bahwa tiga komponen utama sudah cukup mewakili sebagian besar informasi dari seluruh variabel dalam dataset. Oleh karena itu, dalam analisis selanjutnya digunakan tiga komponen utama sebagai dasar dalam pembentukan faktor.
plot(pca_model, type = "l")
fa.parallel(data_scaled, fa = "pc", n.iter = 100)
## Parallel analysis suggests that the number of factors = NA and the number of components = 3
fa_model <- fa(data_scaled, nfactors = 3, rotate = "varimax")
fa_model
## Factor Analysis using method = minres
## Call: fa(r = data_scaled, nfactors = 3, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
## MR1 MR2 MR3 h2 u2 com
## New.Cases 0.26 0.86 0.13 0.82 0.1801 1.2
## New.Deaths 0.18 0.79 0.00 0.66 0.3368 1.1
## New.Recovered 0.30 0.89 0.12 0.91 0.0925 1.3
## Total.Cases 0.97 0.21 0.15 1.00 0.0030 1.1
## Total.Deaths 0.96 0.22 0.03 0.96 0.0381 1.1
## Total.Recovered 0.97 0.17 0.15 1.00 0.0038 1.1
## Population 0.69 0.38 -0.11 0.63 0.3678 1.6
## Population.Density 0.04 0.01 0.60 0.36 0.6361 1.0
## New.Cases.per.Million -0.05 0.23 0.43 0.25 0.7548 1.6
## Total.Cases.per.Million 0.13 -0.05 0.73 0.56 0.4432 1.1
##
## MR1 MR2 MR3
## SS loadings 3.49 2.48 1.18
## Proportion Var 0.35 0.25 0.12
## Cumulative Var 0.35 0.60 0.71
## Proportion Explained 0.49 0.35 0.16
## Cumulative Proportion 0.49 0.84 1.00
##
## Mean item complexity = 1.2
## Test of the hypothesis that 3 factors are sufficient.
##
## df null model = 45 with the objective function = 16.23 with Chi Square = 516367.2
## df of the model are 18 and the objective function was 3.27
##
## The root mean square of the residuals (RMSR) is 0.01
## The df corrected root mean square of the residuals is 0.02
##
## The harmonic n.obs is 31822 with the empirical chi square 259.16 with prob < 1.1e-44
## The total n.obs was 31822 with Likelihood Chi Square = 104170.5 with prob < 0
##
## Tucker Lewis Index of factoring reliability = 0.496
## RMSEA index = 0.426 and the 90 % confidence intervals are 0.424 0.429
## BIC = 103983.9
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## MR1 MR2 MR3
## Correlation of (regression) scores with factors 1.00 0.96 0.85
## Multiple R square of scores with factors 0.99 0.93 0.71
## Minimum correlation of possible factor scores 0.98 0.86 0.43
Berdasarkan hasil analisis faktor dengan metode minres dan rotasi varimax, diperoleh tiga faktor utama yang terbentuk dari variabel-variabel dalam dataset. Faktor pertama mampu menjelaskan variasi sebesar 35%, faktor kedua sebesar 25%, dan faktor ketiga sebesar 12%. Secara kumulatif, ketiga faktor tersebut mampu menjelaskan sekitar 71% variasi data.
Nilai RMSR sebesar 0,01 menunjukkan bahwa model faktor yang terbentuk memiliki kesalahan residual yang kecil sehingga model dapat dikatakan cukup baik dalam merepresentasikan data. Selain itu, nilai korelasi skor faktor yang tinggi pada setiap faktor juga menunjukkan bahwa faktor yang terbentuk cukup mampu menjelaskan hubungan antar variabel dalam dataset.
Dengan demikian, dapat disimpulkan bahwa model analisis faktor dengan tiga faktor sudah cukup representatif untuk merangkum informasi dari variabel yang digunakan dalam penelitian ini.
print(fa_model$loadings, cutoff = 0.4)
##
## Loadings:
## MR1 MR2 MR3
## New.Cases 0.858
## New.Deaths 0.793
## New.Recovered 0.894
## Total.Cases 0.966
## Total.Deaths 0.956
## Total.Recovered 0.973
## Population 0.691
## Population.Density 0.602
## New.Cases.per.Million 0.434
## Total.Cases.per.Million 0.732
##
## MR1 MR2 MR3
## SS loadings 3.488 2.481 1.175
## Proportion Var 0.349 0.248 0.118
## Cumulative Var 0.349 0.597 0.714
Berdasarkan hasil factor loading, variabel pada dataset dapat dikelompokkan menjadi tiga faktor utama. Faktor pertama (MR1) didominasi oleh variabel Total.Cases, Total.Deaths, Total.Recovered, dan Population, sehingga faktor ini dapat diinterpretasikan sebagai faktor yang menggambarkan akumulasi dampak COVID-19 dan ukuran populasi wilayah. Faktor kedua (MR2) terdiri dari variabel New.Cases, New.Deaths, dan New.Recovered, yang menunjukkan perkembangan kasus harian COVID-19. Sementara itu, faktor ketiga (MR3) terbentuk dari variabel Population.Density, New.Cases.per.Million, dan Total.Cases.per.Million, yang menggambarkan tingkat penyebaran kasus berdasarkan kepadatan penduduk dan rasio kasus terhadap jumlah penduduk. Secara keseluruhan, tiga faktor ini mampu menjelaskan sekitar 71,4% variasi data, sehingga dapat dikatakan bahwa model faktor yang terbentuk sudah cukup baik dalam merangkum informasi dari variabel yang dianalisis.
fa_model$communality
## New.Cases New.Deaths New.Recovered
## 0.8199133 0.6631887 0.9075037
## Total.Cases Total.Deaths Total.Recovered
## 0.9970344 0.9619353 0.9961766
## Population Population.Density New.Cases.per.Million
## 0.6322346 0.3639351 0.2451717
## Total.Cases.per.Million
## 0.5567509
Selanjutnya, berdasarkan nilai communalities, sebagian besar variabel memiliki nilai yang cukup tinggi seperti Total.Cases, Total.Recovered, Total.Deaths, dan New.Recovered, yang berarti variabel tersebut dapat dijelaskan dengan baik oleh faktor yang terbentuk. Namun terdapat beberapa variabel dengan nilai communalities yang lebih rendah, seperti Population.Density dan New.Cases.per.Million, yang menunjukkan bahwa variabel tersebut kurang kuat dijelaskan oleh model faktor, tetapi masih dapat digunakan dalam analisis. Secara umum, hasil analisis faktor ini menunjukkan bahwa struktur data sudah cukup representatif untuk menggambarkan pola penyebaran COVID-19 pada dataset yang digunakan
fa.diagram(fa_model)