1. Import Library

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/

2. Import DataSet

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"

3. Mengambil Variable Numerik

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

4. Cek Missing Value

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

5. Statistik Deskriptif

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

6. Matriks Korelasi

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)

Boxplot Distribusi & Deteksi Outlier

# 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))

7. Uji KMO & Bartlet

  1. Uji Kaiser-Meyer-Olkin (KMO) digunakan untuk mengetahui apakah data yang digunakan layak untuk dilakukan analisis faktor. Nilai KMO berkisar antara 0 hingga

    Kriteria penilaian KMO:
    • KMO > 0.5 : Data layak digunakan dalam analisis faktor
    • KMO < 0.5 : Data kurang layak untuk analisis faktor
  2. Uji Bartlett digunakan untuk menguji apakah terdapat korelasi yang signifikan antar variabel dalam dataset. Jika hasil uji menunjukkan nilai p-value yang kecil (p < 0.05), maka variabel dalam dataset memiliki korelasi yang signifikan dan analisis faktor dapat dilakukan.
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.

8. Standarisasi Data

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)

9. Principal Component Analysis (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.

10. Secreeplot

plot(pca_model, type = "l")

11. Penentuan Jumlah Faktor

fa.parallel(data_scaled, fa = "pc", n.iter = 100)

## Parallel analysis suggests that the number of factors =  NA  and the number of components =  3

12. Faktor Analysis

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.

1. Factor Loading

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.

2. Communalities

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

3. Visualisasi Digram

fa.diagram(fa_model)