TAHAPAN ANALISIS FAKTOR DI R

1) Langkah 1: Import Library

library(readxl)  # Untuk membaca file Excel
library(REdaS)   # Untuk uji KMO dan Bartlett
## Warning: package 'REdaS' was built under R version 4.4.3
## Loading required package: grid
library(psych)   # Untuk analisis faktor
## Warning: package 'psych' was built under R version 4.4.2

2) Langkah 2: Import Data -> Data Frame (EXCEL/CSV)

AirQualityUCI <- read_excel("~/1. Statmul/3. TUGAS FIX/Tugas 6/AirQualityUCI.xlsx")
AirQualityUCI
## # A tibble: 9,357 × 15
##    `Date (X1)`         `Time (X2)`         `CO(GT) (X3)` `PT08.S1(CO) (X4)`
##    <dttm>              <dttm>                      <dbl>              <dbl>
##  1 2004-03-10 00:00:00 1899-12-31 18:00:00           2.6              1360 
##  2 2004-03-10 00:00:00 1899-12-31 19:00:00           2                1292.
##  3 2004-03-10 00:00:00 1899-12-31 20:00:00           2.2              1402 
##  4 2004-03-10 00:00:00 1899-12-31 21:00:00           2.2              1376.
##  5 2004-03-10 00:00:00 1899-12-31 22:00:00           1.6              1272.
##  6 2004-03-10 00:00:00 1899-12-31 23:00:00           1.2              1197 
##  7 2004-03-11 00:00:00 1899-12-31 00:00:00           1.2              1185 
##  8 2004-03-11 00:00:00 1899-12-31 01:00:00           1                1136.
##  9 2004-03-11 00:00:00 1899-12-31 02:00:00           0.9              1094 
## 10 2004-03-11 00:00:00 1899-12-31 03:00:00           0.6              1010.
## # ℹ 9,347 more rows
## # ℹ 11 more variables: `NMHC(GT) (X5)` <dbl>, `C6H6(GT) (X6)` <dbl>,
## #   `PT08.S2(NMHC) (X7)` <dbl>, `NOx(GT) (X8)` <dbl>,
## #   `PT08.S3(NOx) (X9)` <dbl>, `NO2(GT) (X10)` <dbl>,
## #   `PT08.S4(NO2) (X11)` <dbl>, `PT08.S5(O3) (X12)` <dbl>, `T (X13)` <dbl>,
## #   `RH (X14)` <dbl>, `AH (X15)` <dbl>

3) Langkah 3: Melihat 10 Data Pertama

head(AirQualityUCI, 10)
## # A tibble: 10 × 15
##    `Date (X1)`         `Time (X2)`         `CO(GT) (X3)` `PT08.S1(CO) (X4)`
##    <dttm>              <dttm>                      <dbl>              <dbl>
##  1 2004-03-10 00:00:00 1899-12-31 18:00:00           2.6              1360 
##  2 2004-03-10 00:00:00 1899-12-31 19:00:00           2                1292.
##  3 2004-03-10 00:00:00 1899-12-31 20:00:00           2.2              1402 
##  4 2004-03-10 00:00:00 1899-12-31 21:00:00           2.2              1376.
##  5 2004-03-10 00:00:00 1899-12-31 22:00:00           1.6              1272.
##  6 2004-03-10 00:00:00 1899-12-31 23:00:00           1.2              1197 
##  7 2004-03-11 00:00:00 1899-12-31 00:00:00           1.2              1185 
##  8 2004-03-11 00:00:00 1899-12-31 01:00:00           1                1136.
##  9 2004-03-11 00:00:00 1899-12-31 02:00:00           0.9              1094 
## 10 2004-03-11 00:00:00 1899-12-31 03:00:00           0.6              1010.
## # ℹ 11 more variables: `NMHC(GT) (X5)` <dbl>, `C6H6(GT) (X6)` <dbl>,
## #   `PT08.S2(NMHC) (X7)` <dbl>, `NOx(GT) (X8)` <dbl>,
## #   `PT08.S3(NOx) (X9)` <dbl>, `NO2(GT) (X10)` <dbl>,
## #   `PT08.S4(NO2) (X11)` <dbl>, `PT08.S5(O3) (X12)` <dbl>, `T (X13)` <dbl>,
## #   `RH (X14)` <dbl>, `AH (X15)` <dbl>

4) Langkah 4: Pemeriksaan Data

a. Melihat Tipe Data

sapply(AirQualityUCI, class)
## $`Date (X1)`
## [1] "POSIXct" "POSIXt" 
## 
## $`Time (X2)`
## [1] "POSIXct" "POSIXt" 
## 
## $`CO(GT) (X3)`
## [1] "numeric"
## 
## $`PT08.S1(CO) (X4)`
## [1] "numeric"
## 
## $`NMHC(GT) (X5)`
## [1] "numeric"
## 
## $`C6H6(GT) (X6)`
## [1] "numeric"
## 
## $`PT08.S2(NMHC) (X7)`
## [1] "numeric"
## 
## $`NOx(GT) (X8)`
## [1] "numeric"
## 
## $`PT08.S3(NOx) (X9)`
## [1] "numeric"
## 
## $`NO2(GT) (X10)`
## [1] "numeric"
## 
## $`PT08.S4(NO2) (X11)`
## [1] "numeric"
## 
## $`PT08.S5(O3) (X12)`
## [1] "numeric"
## 
## $`T (X13)`
## [1] "numeric"
## 
## $`RH (X14)`
## [1] "numeric"
## 
## $`AH (X15)`
## [1] "numeric"

b. Cek Missing Value

colSums(is.na(AirQualityUCI))
##          Date (X1)          Time (X2)        CO(GT) (X3)   PT08.S1(CO) (X4) 
##                  0                  0                  0                  0 
##      NMHC(GT) (X5)      C6H6(GT) (X6) PT08.S2(NMHC) (X7)       NOx(GT) (X8) 
##                  0                  0                  0                  0 
##  PT08.S3(NOx) (X9)      NO2(GT) (X10) PT08.S4(NO2) (X11)  PT08.S5(O3) (X12) 
##                  0                  0                  0                  0 
##            T (X13)           RH (X14)           AH (X15) 
##                  0                  0                  0

c. Melihat Dimensi Data (Jumlah Baris dan Kolom)

dim(AirQualityUCI)
## [1] 9357   15

5) Langkah 5: Memilih dan Mempersiapkan Variabel untuk Analisis Faktor

a. Memilih hanya kolom numerik (float dan integer) - Menampilkan nama variabel yang dipilih

data_numerik <- AirQualityUCI[, sapply(AirQualityUCI, is.numeric)]
colnames(data_numerik)
##  [1] "CO(GT) (X3)"        "PT08.S1(CO) (X4)"   "NMHC(GT) (X5)"     
##  [4] "C6H6(GT) (X6)"      "PT08.S2(NMHC) (X7)" "NOx(GT) (X8)"      
##  [7] "PT08.S3(NOx) (X9)"  "NO2(GT) (X10)"      "PT08.S4(NO2) (X11)"
## [10] "PT08.S5(O3) (X12)"  "T (X13)"            "RH (X14)"          
## [13] "AH (X15)"

b. Standarisasi Data - Standarisasi data: Mean = 0, Standard Deviation = 1 - Konversi kembali ke data frame

data_standarisasi <- scale(data_numerik)
data_standarisasi <- as.data.frame(data_standarisasi)
head(data_standarisasi)
##   CO(GT) (X3) PT08.S1(CO) (X4) NMHC(GT) (X5) C6H6(GT) (X6) PT08.S2(NMHC) (X7)
## 1   0.4739746        0.9433423      2.211117     0.2420520          0.4411832
## 2   0.4662483        0.7379254      1.939279     0.1820097          0.1760772
## 3   0.4688237        1.0706857      1.767592     0.1723590          0.1307974
## 4   0.4688237        0.9903381      1.710363     0.1779409          0.1570889
## 5   0.4610975        0.6772857      1.502908     0.1124367         -0.1722852
## 6   0.4559466        0.4491289      1.409910     0.0694883         -0.4213242
##   NOx(GT) (X8) PT08.S3(NOx) (X9) NO2(GT) (X10) PT08.S4(NO2) (X11)
## 1  -0.01011636         0.8117898     0.4322342         0.64349665
## 2  -0.25484825         1.1767227     0.2667905         0.35828224
## 3  -0.14607852         1.0719015     0.4401124         0.34918535
## 4   0.01319144         0.9228226     0.5031386         0.41179339
## 5  -0.14607852         1.2737793     0.4558690         0.21112659
## 6  -0.30923312         1.6821935     0.2983036         0.00350334
##   PT08.S5(O3) (X12)    T (X13)  RH (X14)  AH (X15)
## 1       0.640258076 0.08849760 0.1833696 0.1948693
## 2      -0.005912452 0.08155371 0.1604273 0.1940415
## 3       0.216772904 0.04914888 0.2829485 0.1946765
## 4       0.499643490 0.02831720 0.4005883 0.1956123
## 5       0.295560843 0.03178915 0.3922901 0.1956657
## 6      -0.056249191 0.03236781 0.3844800 0.1955625

6) Langkah 6: Tahapan Analisis Faktor

a. Membuat Matriks Korelasi

cor_matrix <- cor(data_standarisasi)
cor_matrix
##                    CO(GT) (X3) PT08.S1(CO) (X4) NMHC(GT) (X5) C6H6(GT) (X6)
## CO(GT) (X3)         1.00000000       0.04141486  1.283512e-01  -0.031377278
## PT08.S1(CO) (X4)    0.04141486       1.00000000  1.700092e-01   0.852658739
## NMHC(GT) (X5)       0.12835117       0.17000923  1.000000e+00   0.037328920
## C6H6(GT) (X6)      -0.03137728       0.85265874  3.732892e-02   1.000000000
## PT08.S2(NMHC) (X7)  0.02993938       0.93310134  1.100973e-01   0.767400548
## NOx(GT) (X8)        0.52645032       0.27802887 -4.412891e-03  -0.001162976
## PT08.S3(NOx) (X9)  -0.08998059       0.08693118  4.883223e-02   0.512154487
## NO2(GT) (X10)       0.67113955       0.15405777  1.033448e-01  -0.010971438
## PT08.S4(NO2) (X11) -0.07372055       0.84513309  1.626894e-01   0.774649129
## PT08.S5(O3) (X12)   0.08031560       0.89243569  1.011892e-01   0.641305687
## T (X13)            -0.06895175       0.75480579 -7.577685e-06   0.971370209
## RH (X14)           -0.04823058       0.74534354  8.287924e-03   0.925067595
## AH (X15)           -0.04589222       0.76486567  1.250011e-02   0.984555673
##                    PT08.S2(NMHC) (X7) NOx(GT) (X8) PT08.S3(NOx) (X9)
## CO(GT) (X3)                0.02993938  0.526450315       -0.08998059
## PT08.S1(CO) (X4)           0.93310134  0.278028873        0.08693118
## NMHC(GT) (X5)              0.11009729 -0.004412891        0.04883223
## C6H6(GT) (X6)              0.76740055 -0.001162976        0.51215449
## PT08.S2(NMHC) (X7)         1.00000000  0.331330778       -0.07374833
## NOx(GT) (X8)               0.33133078  1.000000000       -0.43608280
## PT08.S3(NOx) (X9)         -0.07374833 -0.436082800        1.00000000
## NO2(GT) (X10)              0.17656903  0.817137607       -0.25621745
## PT08.S4(NO2) (X11)         0.87476071  0.035579549        0.12267209
## PT08.S5(O3) (X12)          0.90990914  0.461915624       -0.20893460
## T (X13)                    0.66898434 -0.138457415        0.58806103
## RH (X14)                   0.58577531 -0.053008136        0.57351320
## AH (X15)                   0.64653471 -0.095840633        0.62157636
##                    NO2(GT) (X10) PT08.S4(NO2) (X11) PT08.S5(O3) (X12)
## CO(GT) (X3)           0.67113955        -0.07372055         0.0803156
## PT08.S1(CO) (X4)      0.15405777         0.84513309         0.8924357
## NMHC(GT) (X5)         0.10334476         0.16268939         0.1011892
## C6H6(GT) (X6)        -0.01097144         0.77464913         0.6413057
## PT08.S2(NMHC) (X7)    0.17656903         0.87476071         0.9099091
## NOx(GT) (X8)          0.81713761         0.03557955         0.4619156
## PT08.S3(NOx) (X9)    -0.25621745         0.12267209        -0.2089346
## NO2(GT) (X10)         1.00000000        -0.02209248         0.2534693
## PT08.S4(NO2) (X11)   -0.02209248         1.00000000         0.7236700
## PT08.S5(O3) (X12)     0.25346934         0.72367002         1.0000000
## T (X13)              -0.08408449         0.75505285         0.5036591
## RH (X14)             -0.08129972         0.64068549         0.5249216
## AH (X15)             -0.06042311         0.69188886         0.5194315
##                          T (X13)     RH (X14)    AH (X15)
## CO(GT) (X3)        -6.895175e-02 -0.048230582 -0.04589222
## PT08.S1(CO) (X4)    7.548058e-01  0.745343536  0.76486567
## NMHC(GT) (X5)      -7.577685e-06  0.008287924  0.01250011
## C6H6(GT) (X6)       9.713702e-01  0.925067595  0.98455567
## PT08.S2(NMHC) (X7)  6.689843e-01  0.585775310  0.64653471
## NOx(GT) (X8)       -1.384574e-01 -0.053008136 -0.09584063
## PT08.S3(NOx) (X9)   5.880610e-01  0.573513202  0.62157636
## NO2(GT) (X10)      -8.408449e-02 -0.081299722 -0.06042311
## PT08.S4(NO2) (X11)  7.550529e-01  0.640685489  0.69188886
## PT08.S5(O3) (X12)   5.036591e-01  0.524921583  0.51943155
## T (X13)             1.000000e+00  0.885909850  0.98099773
## RH (X14)            8.859098e-01  1.000000000  0.94399717
## AH (X15)            9.809977e-01  0.943997165  1.00000000

b. Uji Bartlett’s Test of Sphericity Hipotesis - H₀: Tidak ada korelasi yang signifikan antara variabel, sehingga data tidak cocok untuk analisis faktor (matriks korelasi adalah matriks identitas). - H₁: Ada korelasi yang signifikan antara variabel, sehingga data cocok untuk analisis faktor.

Statistik Uji: - Menggunakan Bartlett’s Test of Sphericity

Kriteria Uji: - Tolak H₀ jika χ²hitung > χ²tabel, yang menunjukkan bahwa terdapat korelasi antar variabel, sehingga analisis faktor dapat dilakukan.

bartlett_test <- bart_spher(data_standarisasi)
bartlett_test
##  Bartlett's Test of Sphericity
## 
## Call: bart_spher(x = data_standarisasi)
## 
##      X2 = 247643.199
##      df = 78
## p-value < 2.22e-16

Diperoleh: - Nilai Chi-Square (χ²) = 247643.199 - Derajat kebebasan (df) = 78 - χ²tabel = 99.617

Kesimpulan: Karena χ² hitung (247643.199) > dari χ² tabel (99.617), maka kita menolak H₀, yang berarti terdapat korelasi yang signifikan antara variabel dalam dataset. Ini menunjukkan bahwa data layak untuk analisis faktor, karena matriks korelasi bukan merupakan matriks identitas.

c. Uji Kaiser-Meyer-Olkin (KMO) Hipotesis - H₀: Sampel tidak cukup untuk analisis faktor (korelasi antar variabel tidak cukup kuat). - H₁: Sampel cukup untuk analisis faktor (korelasi antar variabel cukup kuat).

Statistik Uji: - Statistik uji yang digunakan adalah Kaiser-Meyer-Olkin (KMO), yang mengukur kelayakan data untuk analisis faktor. Nilai KMO berkisar antara 0 hingga 1.

Kriteria Uji: - Jika KMO > 0.60, maka data cukup layak untuk analisis faktor, sehingga tolak H₀ dan terima H₁. - Jika KMO ≤ 0.60, maka data tidak layak untuk analisis faktor, sehingga terima H₀ dan tolak H₁.

KMOS(data_standarisasi)
## 
## Kaiser-Meyer-Olkin Statistics
## 
## Call: KMOS(x = data_standarisasi)
## 
## Measures of Sampling Adequacy (MSA):
##        CO(GT) (X3)   PT08.S1(CO) (X4)      NMHC(GT) (X5)      C6H6(GT) (X6) 
##          0.8331261          0.9358076          0.1850667          0.7425467 
## PT08.S2(NMHC) (X7)       NOx(GT) (X8)  PT08.S3(NOx) (X9)      NO2(GT) (X10) 
##          0.7463749          0.5869458          0.6638755          0.5473007 
## PT08.S4(NO2) (X11)  PT08.S5(O3) (X12)            T (X13)           RH (X14) 
##          0.6852467          0.9300791          0.7014979          0.6915617 
##           AH (X15) 
##          0.6741881 
## 
## KMO-Criterion: 0.725354

Kesimpulan: Dari hasil yang diperoleh, nilai KMO = 0.725354, yang berada dalam kategori cukup baik untuk analisis faktor. Karena KMO lebih besar dari 0.60, maka H₀ ditolak dan H₁ diterima. Kesimpulannya, data ini cukup layak untuk analisis faktor, meskipun ada beberapa variabel yang memiliki nilai KMO lebih rendah dan mungkin perlu dipertimbangkan kembali.

d. Measures of Sampling Adequacy (MSA) - Menghitung nilai KMO dan MSA

kmo_result <- KMOS(data_standarisasi)
msa_values <- kmo_result$MSA
msa_values
##        CO(GT) (X3)   PT08.S1(CO) (X4)      NMHC(GT) (X5)      C6H6(GT) (X6) 
##          0.8331261          0.9358076          0.1850667          0.7425467 
## PT08.S2(NMHC) (X7)       NOx(GT) (X8)  PT08.S3(NOx) (X9)      NO2(GT) (X10) 
##          0.7463749          0.5869458          0.6638755          0.5473007 
## PT08.S4(NO2) (X11)  PT08.S5(O3) (X12)            T (X13)           RH (X14) 
##          0.6852467          0.9300791          0.7014979          0.6915617 
##           AH (X15) 
##          0.6741881
selected_columns <- names(msa_values[msa_values > 0.5])
data_filter <- data_standarisasi[, selected_columns]
cat("Variabel setelah eliminasi (MSA > 0.5):", selected_columns, "\n")
## Variabel setelah eliminasi (MSA > 0.5): CO(GT) (X3) PT08.S1(CO) (X4) C6H6(GT) (X6) PT08.S2(NMHC) (X7) NOx(GT) (X8) PT08.S3(NOx) (X9) NO2(GT) (X10) PT08.S4(NO2) (X11) PT08.S5(O3) (X12) T (X13) RH (X14) AH (X15)
kmo_filtered <- KMOS(data_filter)
msa_values_filtered <- kmo_result$MSA
cat("Nilai MSA setelah eliminasi:\n")
## Nilai MSA setelah eliminasi:
print(msa_values_filtered)
##        CO(GT) (X3)   PT08.S1(CO) (X4)      NMHC(GT) (X5)      C6H6(GT) (X6) 
##          0.8331261          0.9358076          0.1850667          0.7425467 
## PT08.S2(NMHC) (X7)       NOx(GT) (X8)  PT08.S3(NOx) (X9)      NO2(GT) (X10) 
##          0.7463749          0.5869458          0.6638755          0.5473007 
## PT08.S4(NO2) (X11)  PT08.S5(O3) (X12)            T (X13)           RH (X14) 
##          0.6852467          0.9300791          0.7014979          0.6915617 
##           AH (X15) 
##          0.6741881

e. Membuat Matriks Korelasi Setelah Eliminasi Variabel yang Tidak Layak - Memilih variabel dengan MSA > 0.5 - Membuat matriks korelasi baru

data_filtered <- data_standarisasi[, msa_values > 0.5]
cor_filtered <- cor(data_filtered)
cor_filtered
##                    CO(GT) (X3) PT08.S1(CO) (X4) C6H6(GT) (X6)
## CO(GT) (X3)         1.00000000       0.04141486  -0.031377278
## PT08.S1(CO) (X4)    0.04141486       1.00000000   0.852658739
## C6H6(GT) (X6)      -0.03137728       0.85265874   1.000000000
## PT08.S2(NMHC) (X7)  0.02993938       0.93310134   0.767400548
## NOx(GT) (X8)        0.52645032       0.27802887  -0.001162976
## PT08.S3(NOx) (X9)  -0.08998059       0.08693118   0.512154487
## NO2(GT) (X10)       0.67113955       0.15405777  -0.010971438
## PT08.S4(NO2) (X11) -0.07372055       0.84513309   0.774649129
## PT08.S5(O3) (X12)   0.08031560       0.89243569   0.641305687
## T (X13)            -0.06895175       0.75480579   0.971370209
## RH (X14)           -0.04823058       0.74534354   0.925067595
## AH (X15)           -0.04589222       0.76486567   0.984555673
##                    PT08.S2(NMHC) (X7) NOx(GT) (X8) PT08.S3(NOx) (X9)
## CO(GT) (X3)                0.02993938  0.526450315       -0.08998059
## PT08.S1(CO) (X4)           0.93310134  0.278028873        0.08693118
## C6H6(GT) (X6)              0.76740055 -0.001162976        0.51215449
## PT08.S2(NMHC) (X7)         1.00000000  0.331330778       -0.07374833
## NOx(GT) (X8)               0.33133078  1.000000000       -0.43608280
## PT08.S3(NOx) (X9)         -0.07374833 -0.436082800        1.00000000
## NO2(GT) (X10)              0.17656903  0.817137607       -0.25621745
## PT08.S4(NO2) (X11)         0.87476071  0.035579549        0.12267209
## PT08.S5(O3) (X12)          0.90990914  0.461915624       -0.20893460
## T (X13)                    0.66898434 -0.138457415        0.58806103
## RH (X14)                   0.58577531 -0.053008136        0.57351320
## AH (X15)                   0.64653471 -0.095840633        0.62157636
##                    NO2(GT) (X10) PT08.S4(NO2) (X11) PT08.S5(O3) (X12)
## CO(GT) (X3)           0.67113955        -0.07372055         0.0803156
## PT08.S1(CO) (X4)      0.15405777         0.84513309         0.8924357
## C6H6(GT) (X6)        -0.01097144         0.77464913         0.6413057
## PT08.S2(NMHC) (X7)    0.17656903         0.87476071         0.9099091
## NOx(GT) (X8)          0.81713761         0.03557955         0.4619156
## PT08.S3(NOx) (X9)    -0.25621745         0.12267209        -0.2089346
## NO2(GT) (X10)         1.00000000        -0.02209248         0.2534693
## PT08.S4(NO2) (X11)   -0.02209248         1.00000000         0.7236700
## PT08.S5(O3) (X12)     0.25346934         0.72367002         1.0000000
## T (X13)              -0.08408449         0.75505285         0.5036591
## RH (X14)             -0.08129972         0.64068549         0.5249216
## AH (X15)             -0.06042311         0.69188886         0.5194315
##                        T (X13)    RH (X14)    AH (X15)
## CO(GT) (X3)        -0.06895175 -0.04823058 -0.04589222
## PT08.S1(CO) (X4)    0.75480579  0.74534354  0.76486567
## C6H6(GT) (X6)       0.97137021  0.92506759  0.98455567
## PT08.S2(NMHC) (X7)  0.66898434  0.58577531  0.64653471
## NOx(GT) (X8)       -0.13845741 -0.05300814 -0.09584063
## PT08.S3(NOx) (X9)   0.58806103  0.57351320  0.62157636
## NO2(GT) (X10)      -0.08408449 -0.08129972 -0.06042311
## PT08.S4(NO2) (X11)  0.75505285  0.64068549  0.69188886
## PT08.S5(O3) (X12)   0.50365905  0.52492158  0.51943155
## T (X13)             1.00000000  0.88590985  0.98099773
## RH (X14)            0.88590985  1.00000000  0.94399717
## AH (X15)            0.98099773  0.94399717  1.00000000

f. Analisis Faktor Menggunakan Metode PCA

fa_result <- principal(data_filtered, nfactors = ncol(data_filtered), rotate = "none")
fa_result
## Principal Components Analysis
## Call: principal(r = data_filtered, nfactors = ncol(data_filtered), 
##     rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                      PC1   PC2   PC3   PC4   PC5   PC6   PC7   PC8   PC9  PC10
## CO(GT) (X3)        -0.01  0.62  0.63  0.45 -0.16  0.02 -0.01 -0.02  0.00  0.00
## PT08.S1(CO) (X4)    0.93  0.24 -0.17  0.00 -0.07  0.02 -0.04  0.07 -0.17  0.06
## C6H6(GT) (X6)       0.98 -0.13  0.13 -0.04 -0.01 -0.04 -0.04 -0.06  0.00 -0.02
## PT08.S2(NMHC) (X7)  0.87  0.34 -0.31  0.07  0.06  0.05 -0.08 -0.08 -0.02 -0.12
## NOx(GT) (X8)        0.10  0.91  0.14 -0.30 -0.03  0.14  0.10 -0.14  0.00  0.03
## PT08.S3(NOx) (X9)   0.37 -0.66  0.59 -0.09  0.08  0.25 -0.07  0.06  0.00 -0.01
## NO2(GT) (X10)       0.04  0.83  0.44 -0.15  0.26 -0.13 -0.04  0.12  0.00 -0.02
## PT08.S4(NO2) (X11)  0.86  0.06 -0.28  0.26  0.25  0.09  0.17  0.05  0.03  0.02
## PT08.S5(O3) (X12)   0.77  0.48 -0.33 -0.05 -0.17  0.06 -0.12  0.11  0.12  0.03
## T (X13)             0.93 -0.26  0.17  0.03  0.10 -0.10 -0.04 -0.11  0.04  0.07
## RH (X14)            0.89 -0.23  0.21 -0.13 -0.20 -0.07  0.19  0.09  0.01 -0.05
## AH (X15)            0.93 -0.25  0.23 -0.06 -0.02 -0.09 -0.03 -0.05  0.01  0.01
##                     PC11  PC12 h2       u2 com
## CO(GT) (X3)         0.00  0.00  1  2.2e-16 2.9
## PT08.S1(CO) (X4)    0.00  0.00  1 -8.9e-16 1.3
## C6H6(GT) (X6)      -0.03 -0.01  1  2.3e-15 1.1
## PT08.S2(NMHC) (X7)  0.01  0.00  1  4.4e-16 1.7
## NOx(GT) (X8)        0.00  0.00  1  2.3e-15 1.4
## PT08.S3(NOx) (X9)   0.00  0.00  1  1.8e-15 3.0
## NO2(GT) (X10)       0.00  0.00  1  2.6e-15 2.0
## PT08.S4(NO2) (X11) -0.01  0.00  1  6.7e-16 1.7
## PT08.S5(O3) (X12)   0.00  0.00  1 -2.2e-16 2.4
## T (X13)             0.03  0.00  1  8.9e-16 1.3
## RH (X14)            0.01  0.00  1  3.3e-16 1.6
## AH (X15)           -0.02  0.01  1  1.1e-16 1.3
## 
##                        PC1  PC2  PC3  PC4  PC5  PC6  PC7  PC8  PC9 PC10 PC11
## SS loadings           6.58 2.93 1.41 0.42 0.25 0.14 0.11 0.09 0.05 0.03    0
## Proportion Var        0.55 0.24 0.12 0.03 0.02 0.01 0.01 0.01 0.00 0.00    0
## Cumulative Var        0.55 0.79 0.91 0.94 0.97 0.98 0.99 0.99 1.00 1.00    1
## Proportion Explained  0.55 0.24 0.12 0.03 0.02 0.01 0.01 0.01 0.00 0.00    0
## Cumulative Proportion 0.55 0.79 0.91 0.94 0.97 0.98 0.99 0.99 1.00 1.00    1
##                       PC12
## SS loadings              0
## Proportion Var           0
## Cumulative Var           1
## Proportion Explained     0
## Cumulative Proportion    1
## 
## Mean item complexity =  1.8
## Test of the hypothesis that 12 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0 
##  with the empirical chi square  0  with prob <  NA 
## 
## Fit based upon off diagonal values = 1

g. Menentukan Banyak Faktor

1) Berdasarkan Nilai Eigen - Jika eigenvalue > 1, faktor tersebut dipilih.

eigen_values <- eigen(cor_filtered)$values
cat("\nNilai Eigen:\n")
## 
## Nilai Eigen:
print(eigen_values)
##  [1] 6.5764587952 2.9334760118 1.4080870725 0.4169728166 0.2545136896
##  [6] 0.1360942089 0.1061640781 0.0906465116 0.0462965852 0.0282252117
## [11] 0.0026907944 0.0003742243

2) Berdasarkan Scree Plot

plot(1:length(eigen_values), eigen_values, type = "b",
     main = "Scree Plot",
     xlab = "Komponen Faktor",
     ylab = "Eigen Value",
     pch = 19, col = "blue")
abline(h = 1, col = "red", lty = 2)  # Menambahkan garis batas Kaiser (Eigen > 1)

3) Rotasi Faktor Loading - Melakukan rotasi Varimax - Menentukan jumlah faktor yang sesuai

num_factors <- sum(eigen_values > 1)
fa_rotated <- factanal(data_filtered, factors = num_factors, rotation = "varimax")
cat("\nAnalisis Faktor Rotasi:\n")
## 
## Analisis Faktor Rotasi:
fa_rotated
## 
## Call:
## factanal(x = data_filtered, factors = num_factors, rotation = "varimax")
## 
## Uniquenesses:
##        CO(GT) (X3)   PT08.S1(CO) (X4)      C6H6(GT) (X6) PT08.S2(NMHC) (X7) 
##              0.631              0.075              0.005              0.005 
##       NOx(GT) (X8)  PT08.S3(NOx) (X9)      NO2(GT) (X10) PT08.S4(NO2) (X11) 
##              0.041              0.206              0.276              0.157 
##  PT08.S5(O3) (X12)            T (X13)           RH (X14)           AH (X15) 
##              0.134              0.030              0.108              0.005 
## 
## Loadings:
##                    Factor1 Factor2 Factor3
## CO(GT) (X3)                         0.605 
## PT08.S1(CO) (X4)    0.878   0.364   0.148 
## C6H6(GT) (X6)       0.661   0.749         
## PT08.S2(NMHC) (X7)  0.976   0.164   0.127 
## NOx(GT) (X8)        0.257  -0.221   0.919 
## PT08.S3(NOx) (X9)  -0.189   0.842  -0.222 
## NO2(GT) (X10)                       0.844 
## PT08.S4(NO2) (X11)  0.866   0.274  -0.135 
## PT08.S5(O3) (X12)   0.886           0.274 
## T (X13)             0.566   0.797  -0.117 
## RH (X14)            0.466   0.821         
## AH (X15)            0.527   0.847         
## 
##                Factor1 Factor2 Factor3
## SS loadings      4.623   3.591   2.119
## Proportion Var   0.385   0.299   0.177
## Cumulative Var   0.385   0.684   0.861
## 
## Test of the hypothesis that 3 factors are sufficient.
## The chi square statistic is 41408.26 on 33 degrees of freedom.
## The p-value is 0