Principal Component Analysis (No.6)

Sekar Ayun Cahyani 4112322003

Library foreign adalah paket dalam R yang digunakan untuk membaca dan menulis data dalam berbagai format file yang berasal dari perangkat lunak statistik lainnya, seperti SPSS, Stata, atau SAS. Dalam konteks ini, fungsi read.dbf dari library foreign digunakan untuk membaca file berformat .dbf (Database File), yang merupakan bagian dari format shapefile yang sering digunakan dalam analisis data spasial atau GIS.

Pada kode di bawah, lokasi file blok43.dbf ditentukan melalui variabel file_path. Fungsi read.dbf membaca file tersebut dan menyimpannya dalam objek data, yang berupa data frame di R. Kemudian, fungsi head(data) digunakan untuk menampilkan beberapa baris pertama dari data tersebut, memungkinkan pengguna untuk melihat isi awal file .dbf tanpa perlu memuat keseluruhan data.

library(foreign)

# Menentukan lokasi file .dbf
file_path <- "C:/Users/SEKAR AYUN/Downloads/blok43.dbf"  

# Membaca file .dbf
data <- read.dbf(file_path)

# Menampilkan data pertama
head(data)
##    RENUM R101 R102 R105 R203 R301      FOOD   NONFOOD    EXPEND    KAPITA
## 1 285340   11    1    2    1    4 1795114.3 1183000.0 2978114.3  744528.6
## 2 285346   11    1    2    1    4 2108331.4  868198.3 2976529.8  744132.4
## 3 285337   11    1    2    1    3 1810200.0 1074350.0 2884550.0  961516.7
## 4 285334   11    1    2    1    2 1561971.4  790975.0 2352946.4 1176473.2
## 5 285331   11    1    2    1    2 1178940.0  778891.7 1957831.7  978915.8
## 6 285319   11    1    2    1    1  411428.6  347100.0  758528.6  758528.6
##   KALORI_KAP PROTE_KAP LEMAK_KAP KARBO_KAP     WERT     WEIND  WI1    WI2
## 1   2435.711  63.90107  49.25109  396.8879 35.18946 140.75786 9976 177146
## 2   2451.215  78.39737  48.24964  404.1182 36.64960 146.59842 9976  60810
## 3   2495.909  74.53511  45.31679  419.1078 35.52082 106.56246 9976  99379
## 4   3384.523 109.18344  82.58239  506.0941 35.02336  70.04672 9976 141157
## 5   3554.871 105.33573  58.97906  611.9319 30.97004  61.94007 9976 123223
## 6   2751.892  77.70753  51.27606  451.6912 37.98458  37.98458 9976 154278

Dataset ini terdiri dari 340,032 observasi dan 18 variabel, yang dijelaskan sebagai berikut:

  1. RENUM (int): Nomor unik untuk setiap observasi, digunakan sebagai identifikasi.
  2. R101 (int): Variabel kategorikal, kemungkinan mewakili wilayah atau kategori tertentu, dengan rentang nilai 11 hingga 94.
  3. R102 (int): Variabel kategorikal, kemungkinan kode kategori atau status, dengan rentang nilai 1 hingga 79.
  4. R105 (int): Variabel kategorikal, yang mungkin mencerminkan jenis atau kelompok tertentu, dengan nilai 1 atau 2.
  5. R203 (int): Variabel numerik kategorikal lainnya, dengan nilai biner (1 atau lainnya).
  6. R301 (int): Variabel kategorikal yang berisi angka 1 hingga 5, kemungkinan mewakili skala atau tingkat tertentu.
  7. FOOD (dbl): Pengeluaran untuk makanan, berupa nilai numerik kontinu.
  8. NONFOOD (dbl): Pengeluaran untuk barang non-makanan, berupa nilai numerik kontinu.
  9. EXPEND (dbl): Total pengeluaran (FOOD + NONFOOD).
  10. KAPITA (dbl): Pengeluaran per kapita, dihitung dari total pengeluaran dibagi jumlah individu dalam observasi.
  11. KALORI_KAP (dbl): Konsumsi kalori per kapita.
  12. PROTE_KAP (dbl): Konsumsi protein per kapita.
  13. LEMAK_KAP (dbl): Konsumsi lemak per kapita.
  14. KARBO_KAP (dbl): Konsumsi karbohidrat per kapita.
  15. WERT (dbl): Indeks tertentu, kemungkinan terkait dengan berat atau keseimbangan tertentu.
  16. WEIND (dbl): Indeks lain, yang kemungkinan berkaitan dengan aspek wilayah atau indikator lainnya.
  17. WI1 (int): Kode wilayah atau indeks kategori, berupa nilai numerik.
  18. WI2 (int): Indeks atau pengukuran tambahan, kemungkinan merepresentasikan kelompok tertentu.

Setiap variabel memiliki peran spesifik yang dapat digunakan untuk analisis statistik, baik eksplorasi data maupun pemodelan lebih lanjut.

str(data)
## 'data.frame':    340032 obs. of  18 variables:
##  $ RENUM     : int  285340 285346 285337 285334 285331 285319 285322 285325 285343 285328 ...
##  $ R101      : int  11 11 11 11 11 11 11 11 11 11 ...
##  $ R102      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ R105      : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ R203      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ R301      : int  4 4 3 2 2 1 5 4 4 3 ...
##  $ FOOD      : num  1795114 2108331 1810200 1561971 1178940 ...
##  $ NONFOOD   : num  1183000 868198 1074350 790975 778892 ...
##  $ EXPEND    : num  2978114 2976530 2884550 2352946 1957832 ...
##  $ KAPITA    : num  744529 744132 961517 1176473 978916 ...
##  $ KALORI_KAP: num  2436 2451 2496 3385 3555 ...
##  $ PROTE_KAP : num  63.9 78.4 74.5 109.2 105.3 ...
##  $ LEMAK_KAP : num  49.3 48.2 45.3 82.6 59 ...
##  $ KARBO_KAP : num  397 404 419 506 612 ...
##  $ WERT      : num  35.2 36.6 35.5 35 31 ...
##  $ WEIND     : num  140.8 146.6 106.6 70 61.9 ...
##  $ WI1       : int  9976 9976 9976 9976 9976 9976 9976 9976 9976 9976 ...
##  $ WI2       : int  177146 60810 99379 141157 123223 154278 90478 206467 24522 279725 ...
##  - attr(*, "data_types")= chr [1:18] "N" "N" "N" "N" ...

Dataset ini adalah kumpulan data besar (340.032 baris) dengan 18 kolom yang berisi informasi tentang pengeluaran dan konsumsi, kemungkinan dari survei rumah tangga. Berikut penjelasan sederhana tiap kolom:

summary(data)
##      RENUM             R101            R102            R105            R203  
##  Min.   :     1   Min.   :11.00   Min.   : 1.00   Min.   :1.000   Min.   :1  
##  1st Qu.: 85009   1st Qu.:18.00   1st Qu.: 4.00   1st Qu.:1.000   1st Qu.:1  
##  Median :170017   Median :35.00   Median :10.00   Median :2.000   Median :1  
##  Mean   :170017   Mean   :43.05   Mean   :21.68   Mean   :1.579   Mean   :1  
##  3rd Qu.:255024   3rd Qu.:64.00   3rd Qu.:23.00   3rd Qu.:2.000   3rd Qu.:1  
##  Max.   :340032   Max.   :94.00   Max.   :79.00   Max.   :2.000   Max.   :1  
##       R301             FOOD             NONFOOD              EXPEND         
##  Min.   : 1.000   Min.   :  114857   Min.   :    38208   Min.   :   182190  
##  1st Qu.: 3.000   1st Qu.: 1295486   1st Qu.:   857667   1st Qu.:  2277443  
##  Median : 4.000   Median : 1916079   Median :  1403417   Median :  3429452  
##  Mean   : 3.757   Mean   : 2226646   Mean   :  2142186   Mean   :  4368832  
##  3rd Qu.: 5.000   3rd Qu.: 2785714   3rd Qu.:  2393183   3rd Qu.:  5212515  
##  Max.   :29.000   Max.   :31272857   Max.   :193333898   Max.   :201254112  
##      KAPITA           KALORI_KAP     PROTE_KAP         LEMAK_KAP      
##  Min.   :  114515   Min.   :1000   Min.   :  4.166   Min.   :  2.023  
##  1st Qu.:  656004   1st Qu.:1737   1st Qu.: 47.371   1st Qu.: 38.230  
##  Median :  997299   Median :2116   Median : 59.678   Median : 51.136  
##  Mean   : 1308460   Mean   :2217   Mean   : 64.088   Mean   : 55.374  
##  3rd Qu.: 1543848   3rd Qu.:2580   3rd Qu.: 75.468   3rd Qu.: 67.453  
##  Max.   :94740858   Max.   :4500   Max.   :364.666   Max.   :293.561  
##    KARBO_KAP            WERT              WEIND                WI1       
##  Min.   :  25.66   Min.   :   1.165   Min.   :    1.165   Min.   :    1  
##  1st Qu.: 254.84   1st Qu.:  67.080   1st Qu.:  212.398   1st Qu.: 7180  
##  Median : 312.18   Median : 141.845   Median :  474.874   Median :15780  
##  Mean   : 327.74   Mean   : 222.376   Mean   :  798.704   Mean   :15840  
##  3rd Qu.: 382.61   3rd Qu.: 296.702   3rd Qu.: 1011.605   3rd Qu.:24378  
##  Max.   :1042.51   Max.   :2082.520   Max.   :22907.723   Max.   :32974  
##       WI2        
##  Min.   :     1  
##  1st Qu.: 71016  
##  Median :156026  
##  Mean   :156601  
##  3rd Qu.:241034  
##  Max.   :326043

Berikut adalah penjelasan dalam bahasa sederhana:

  1. RENUM: Nomor unik untuk mengidentifikasi rumah tangga atau individu dalam dataset. Ada total 340.032 data.

  2. R101: Kode wilayah atau kelompok tertentu. Wilayah terkecil memiliki kode 11, dan yang terbesar memiliki kode 94.

  3. R102: Kategori tambahan, seperti jenis kelompok atau klasifikasi. Nilainya mulai dari 1 hingga 79.

  4. R105: Mungkin menggambarkan status tertentu (seperti ya/tidak atau pilihan lain). Hanya memiliki dua nilai, yaitu 1 dan 2.

  5. R203: Semua nilainya adalah 1, jadi kemungkinan ini adalah kategori tetap untuk semua data.

  6. R301: Kategori lain yang berhubungan dengan pengeluaran atau konsumsi. Rentangnya dari 1 hingga 29.

  7. FOOD: Total pengeluaran untuk makanan dalam satuan tertentu. Pengeluaran terendah adalah 114.857, dan tertinggi mencapai lebih dari 31 juta.

  8. NONFOOD: Total pengeluaran untuk kebutuhan non-makanan. Angkanya berkisar dari 38.208 hingga hampir 200 juta.

  9. EXPEND: Total keseluruhan pengeluaran (makanan + non-makanan). Ada rumah tangga dengan pengeluaran minimal 182.190 dan maksimal lebih dari 200 juta.

  10. KAPITA: Pengeluaran per orang di rumah tangga. Mulai dari 114.515 hingga hampir 95 juta per orang.

  11. KALORI_KAP: Konsumsi kalori per orang per hari. Minimal 1.000 kalori, dan ada rumah tangga dengan konsumsi hingga 4.500 kalori.

  12. PROTE_KAP: Asupan protein per orang per hari, dari 4,17 gram hingga 364,67 gram.

  13. LEMAK_KAP: Konsumsi lemak per orang per hari, dari 2,02 gram hingga hampir 294 gram.

  14. KARBO_KAP: Konsumsi karbohidrat per orang per hari. Minimal 25,66 gram, maksimal lebih dari 1.000 gram.

  15. WERT: Kemungkinan indikator terkait kesejahteraan atau indeks tertentu. Nilainya berkisar dari 1,17 hingga 2.082,52.

  16. WEIND: Indikator tambahan, mungkin indeks lain yang lebih besar, dari 1,17 hingga 22.907,72.

  17. WI1: Nilai tertentu untuk masing-masing rumah tangga, berkisar dari 1 hingga 32.974.

  18. WI2: Angka lain yang kemungkinan berhubungan dengan ukuran rumah tangga atau wilayah, mulai dari 1 hingga 326.043.

Semua angka ini memberikan gambaran tentang konsumsi, pengeluaran, dan karakteristik rumah tangga di dataset.

library(DataExplorer)
## Warning: package 'DataExplorer' was built under R version 4.4.2
plot_intro(data)

Dari diagram di atas, dapat disimpulkan bahwa tidak ada Discrete Columns, Missing Columns, dan tidak ada Missing Observations

plot_boxplot(data,by="WERT")

1. ggplot2 adalah pustaka untuk membuat grafik yang indah dan fleksibel, digunakan untuk visualisasi data seperti scatter plot, histogram, atau line plot. 2. ggfortify adalah pustaka pendukung yang memperluas kemampuan ggplot2 untuk memvisualisasikan hasil analisis statistik, seperti PCA (Principal Component Analysis) atau model time series, dengan fungsi seperti autoplot(). Keduanya memudahkan analisis dan penyajian data secara visual.

library("ggplot2")
library("ggfortify")

Kode di bawah ini memiliki tujuan berikut:

  1. gridExtra:
    Digunakan untuk menata beberapa grafik dalam satu tampilan, seperti membuat tata letak kolase atau menggabungkan beberapa plot menjadi satu.

  2. carData:
    Menyediakan dataset contoh yang dapat digunakan untuk analisis statistik, terutama dalam studi regresi atau analisis data lainnya.

  3. car (Companion to Applied Regression):
    Memberikan alat untuk analisis regresi dan model statistik lainnya, termasuk uji diagnostik, transformasi data, dan eksplorasi model.

  4. factoextra:
    Digunakan untuk memvisualisasikan hasil analisis multivariat seperti PCA (Principal Component Analysis), clustering, dan analisis faktor, dengan grafik yang estetis dan informatif.

library("gridExtra")
library("carData")
library("car")
library("factoextra")
## Warning: package 'factoextra' was built under R version 4.4.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library("corrplot")
## corrplot 0.94 loaded

Pustaka corrplot digunakan untuk:

Visualisasi Korelasi:

Membuat plot korelasi yang estetis dan mudah dipahami untuk menunjukkan hubungan antara variabel dalam data. Jenis Visualisasi:

Dapat menghasilkan beberapa jenis plot, seperti lingkaran, warna, angka, atau kombinasi, untuk menunjukkan kekuatan dan arah hubungan antara variabel. Fleksibilitas:

Mendukung berbagai parameter untuk kustomisasi, seperti pengurutan, pewarnaan, label, dan anotasi.

# Cari kolom dengan variansi nol
zero_variance_cols <- which(apply(data, 2, var) == 0)
zero_variance_cols
## R203 
##    5
# Hapus kolom dengan variansi nol
data <- data[, apply(data, 2, var) != 0]
# Jalankan PCA
res.pca <- prcomp(data, scale = TRUE)
print(res.pca)
## Standard deviations (1, .., p=17):
##  [1] 2.047635e+00 1.709401e+00 1.455077e+00 1.167763e+00 1.083289e+00
##  [6] 9.911282e-01 9.637591e-01 9.409148e-01 8.792673e-01 7.142547e-01
## [11] 6.638223e-01 5.039312e-01 4.684700e-01 3.833165e-01 2.741686e-01
## [16] 1.215678e-01 8.311378e-15
## 
## Rotation (n x k) = (17 x 17):
##                    PC1          PC2         PC3         PC4          PC5
## RENUM      -0.01226537 -0.011667814 -0.10872112 -0.01787238 -0.587727170
## R101        0.06361993  0.004955185  0.35634754  0.08107077  0.340505458
## R102       -0.11275304  0.191774875 -0.13226053 -0.53083151  0.168990844
## R105        0.12538783 -0.206079681  0.27736684  0.42552750 -0.207613930
## R301        0.13122352  0.357935386  0.11109563  0.36969913 -0.122648904
## FOOD       -0.27475128  0.294451597  0.15809972  0.27562198 -0.043559507
## NONFOOD    -0.29760400  0.363556363  0.17257508 -0.05395965 -0.113486330
## EXPEND     -0.32627367  0.384071615  0.18876913  0.05547446 -0.102857604
## KAPITA     -0.38063570  0.156880948  0.12960404 -0.17831287 -0.006967644
## KALORI_KAP -0.38278887 -0.323778760 -0.01377238  0.14068820  0.049398703
## PROTE_KAP  -0.38980221 -0.237466346 -0.03507602  0.03707162  0.033387657
## LEMAK_KAP  -0.37759095 -0.184958981 -0.09302611  0.02137697  0.054162903
## KARBO_KAP  -0.28550968 -0.347762784  0.04529617  0.21255521  0.043457361
## WERT       -0.08095379  0.122064208 -0.57477087  0.22914179  0.174040391
## WEIND      -0.03360203  0.245564547 -0.51206342  0.36586849  0.124231270
## WI1        -0.02522842 -0.044586202 -0.15038158 -0.09238080 -0.514423256
## WI2        -0.06220747 -0.088973280 -0.14110032 -0.13460613 -0.328316782
##                    PC6          PC7          PC8         PC9         PC10
## RENUM      -0.21998210  0.027145101 -0.743603540 -0.19675247 -0.009561629
## R101        0.13561964  0.060025657 -0.141786957 -0.81431483  0.037248270
## R102       -0.38348510 -0.023847750  0.047706823 -0.08692409 -0.629205205
## R105        0.24633156  0.007791182  0.006594890  0.21378818 -0.537690808
## R301       -0.43104369 -0.126236826  0.190688967 -0.07499150  0.017654770
## FOOD       -0.33686577 -0.092060273  0.131744549 -0.02814554  0.069825288
## NONFOOD     0.30443872  0.040440468 -0.055725226  0.06690436 -0.064734608
## EXPEND      0.11610825 -0.001241917  0.003433568  0.04167885 -0.025324392
## KAPITA      0.36331142  0.062828525 -0.118198606  0.05158912 -0.037706571
## KALORI_KAP -0.13491137  0.004066679  0.019047190 -0.03078618 -0.077103596
## PROTE_KAP  -0.13228971  0.002499712  0.019918351 -0.04541724  0.124409592
## LEMAK_KAP  -0.14127972  0.048516313  0.012177771  0.09456924  0.343482988
## KARBO_KAP  -0.09560509 -0.032059163  0.016931921 -0.13379970 -0.374683793
## WERT        0.24717417  0.052715455 -0.101468021 -0.09193142 -0.097403005
## WEIND       0.08404904  0.005160187 -0.029380824 -0.11280295 -0.110797145
## WI1         0.06771899  0.560554232  0.521656103 -0.32849635 -0.011423225
## WI2         0.22470327 -0.802872602  0.263334930 -0.26586845  0.019609791
##                     PC11         PC12         PC13         PC14         PC15
## RENUM       2.450875e-02 -0.016139757  0.019700366  0.004257658 -0.001351637
## R101        1.879164e-01  0.051405586  0.020540886 -0.034188952  0.001424954
## R102        2.541799e-01  0.064370552 -0.007383942 -0.020755961  0.008172258
## R105        4.909191e-01  0.006983282 -0.061422384 -0.004170671  0.015605763
## R301       -8.354778e-02  0.471539578 -0.170645754  0.357955420  0.244342319
## FOOD        1.388962e-01 -0.676806998  0.197560359 -0.036330984 -0.007836018
## NONFOOD    -1.368134e-01  0.340699877 -0.041665335 -0.380131289  0.023837114
## EXPEND     -5.657792e-02  0.024329904  0.037458715 -0.305932860  0.015621668
## KAPITA      9.990906e-05 -0.090916584 -0.039914982  0.785257494 -0.036900150
## KALORI_KAP -1.231048e-01  0.146314789  0.158092811 -0.003102547 -0.021102210
## PROTE_KAP   1.188564e-01 -0.071962465 -0.843120395 -0.104043145  0.013709205
## LEMAK_KAP   5.255605e-01  0.374136602  0.382276872  0.012949863  0.008784916
## KARBO_KAP  -5.416612e-01  0.025484641  0.187650002  0.028477969  0.019275181
## WERT        6.407340e-02 -0.108886966  0.023206896 -0.027518336  0.674884431
## WEIND       3.713815e-02  0.085652363 -0.051338663  0.036505601 -0.693673421
## WI1         2.018190e-02 -0.033045059  0.028809340  0.016810552 -0.003154958
## WI2         7.417657e-02  0.007363775  0.035813997 -0.001705471 -0.001913532
##                    PC16          PC17
## RENUM       0.001760028 -5.646805e-17
## R101        0.016870547 -6.882792e-16
## R102        0.003570848 -1.759355e-15
## R105        0.003905176  1.247683e-15
## R301        0.016824918  5.695133e-15
## FOOD       -0.003418542  2.686793e-01
## NONFOOD    -0.002974042  5.882075e-01
## EXPEND     -0.003497560 -7.627735e-01
## KAPITA      0.004105967 -1.448772e-16
## KALORI_KAP  0.799207521 -1.221702e-16
## PROTE_KAP  -0.106443485  9.830495e-17
## LEMAK_KAP  -0.314979891  1.132065e-16
## KARBO_KAP  -0.499238229  1.403604e-16
## WERT        0.023540984  8.955860e-17
## WEIND      -0.015669428  4.180359e-17
## WI1         0.001152841 -1.263381e-16
## WI2         0.006043834  6.719597e-17

Penjelasan Ringkas:

  1. Standard Deviations (1, .., p=17):
    • Nilai Standar Deviasi menggambarkan seberapa besar variabilitas atau penyebaran setiap Principal Component (PC).
    • PC1 memiliki standar deviasi tertinggi (2.047635), menunjukkan kontribusi terbesar terhadap variabilitas data. Sebaliknya, PC17 hampir nol (8.311378e-15), artinya PC17 memberikan kontribusi yang sangat kecil.
  2. Rotation (n x k):
    • Matriks Rotasi menunjukkan koefisien atau loading setiap variabel asli pada masing-masing PC.
    • Contohnya, pada PC1, variabel dengan kontribusi besar meliputi:
      • KALORI_KAP (-0.3828), PROTE_KAP (-0.3898), dan LEMAK_KAP (-0.3776).
      • Loading negatif menunjukkan hubungan berlawanan arah dengan PC1.
  3. Interpretasi Umum:
    • PC1: Berkaitan dengan variabel konsumsi energi, protein, dan lemak.
    • PC2: Berkaitan dengan variabel konsumsi total (FOOD, NONFOOD, EXPEND).
    • PC3 hingga PC17: Menangkap variabilitas yang lebih kecil dan pola-pola spesifik yang kurang signifikan dibandingkan PC1 dan PC2.

Kesimpulan:

Principal Component Analysis (PCA) mengurangi dimensi data, dengan PC awal (seperti PC1 dan PC2) menangkap sebagian besar informasi. Variabel seperti konsumsi makanan (FOOD, NONFOOD), energi (KALORI_KAP), dan protein (PROTE_KAP) mendominasi dalam analisis ini.

# Normalisasi data (jika diperlukan)
data <- as.data.frame(scale(data))
summary(res.pca)
## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.0476 1.7094 1.4551 1.16776 1.08329 0.99113 0.96376
## Proportion of Variance 0.2466 0.1719 0.1245 0.08022 0.06903 0.05778 0.05464
## Cumulative Proportion  0.2466 0.4185 0.5431 0.62328 0.69231 0.75010 0.80473
##                            PC8     PC9    PC10    PC11    PC12    PC13    PC14
## Standard deviation     0.94091 0.87927 0.71425 0.66382 0.50393 0.46847 0.38332
## Proportion of Variance 0.05208 0.04548 0.03001 0.02592 0.01494 0.01291 0.00864
## Cumulative Proportion  0.85681 0.90229 0.93230 0.95822 0.97316 0.98607 0.99471
##                           PC15    PC16      PC17
## Standard deviation     0.27417 0.12157 8.311e-15
## Proportion of Variance 0.00442 0.00087 0.000e+00
## Cumulative Proportion  0.99913 1.00000 1.000e+00

Penjelasan:

  1. Standard Deviation:
    • PC1 memiliki standar deviasi terbesar (2.0476), yang menunjukkan bahwa komponen ini memiliki kontribusi terbesar terhadap variabilitas data.
    • PC17 memiliki standar deviasi yang sangat kecil (8.311e-15), menandakan bahwa komponen ini hampir tidak memberikan informasi tambahan yang berguna setelah komponen-komponen sebelumnya.
  2. Proportion of Variance:
    • PC1 menjelaskan sekitar 24.66% dari variabilitas data, dan PC2 menjelaskan 17.19%.
    • Secara keseluruhan, PC1 hingga PC8 menyumbang sekitar 85.68% dari total variabilitas data. Ini menunjukkan bahwa sebagian besar informasi dalam dataset dapat dipahami hanya dengan mengandalkan 8 komponen pertama.
    • PC9 hingga PC17 menjelaskan proporsi varians yang semakin kecil, menunjukkan kontribusi yang sangat terbatas terhadap data.
  3. Cumulative Proportion:
    • Cumulative Proportion mengindikasikan jumlah total varians yang dijelaskan oleh sejumlah komponen. Misalnya, PC1 hingga PC8 sudah mencakup 85.68% dari variabilitas data, dan setelah itu kontribusi semakin kecil.
    • Pada PC17, kontribusinya sangat kecil (praktis nol).

Kesimpulan:

  • PC1 hingga PC8 mencakup sebagian besar variabilitas data (sekitar 85.68%), sehingga hanya komponen-komponen tersebut yang mungkin relevan untuk analisis lebih lanjut.
  • Komponen-komponen berikutnya (PC9 hingga PC17) berkontribusi sangat kecil terhadap data, sehingga bisa diabaikan dalam analisis selanjutnya untuk menyederhanakan model.
eig.val<-get_eigenvalue(res.pca)
eig.val
##          eigenvalue variance.percent cumulative.variance.percent
## Dim.1  4.192808e+00     2.466358e+01                    24.66358
## Dim.2  2.922051e+00     1.718853e+01                    41.85211
## Dim.3  2.117249e+00     1.245441e+01                    54.30652
## Dim.4  1.363670e+00     8.021589e+00                    62.32811
## Dim.5  1.173514e+00     6.903025e+00                    69.23113
## Dim.6  9.823351e-01     5.778442e+00                    75.00957
## Dim.7  9.288315e-01     5.463715e+00                    80.47329
## Dim.8  8.853207e-01     5.207769e+00                    85.68106
## Dim.9  7.731109e-01     4.547711e+00                    90.22877
## Dim.10 5.101597e-01     3.000940e+00                    93.22971
## Dim.11 4.406600e-01     2.592118e+00                    95.82183
## Dim.12 2.539466e-01     1.493804e+00                    97.31563
## Dim.13 2.194642e-01     1.290966e+00                    98.60660
## Dim.14 1.469316e-01     8.643034e-01                    99.47090
## Dim.15 7.516840e-02     4.421670e-01                    99.91307
## Dim.16 1.477872e-02     8.693366e-02                   100.00000
## Dim.17 6.907901e-29     4.063471e-28                   100.00000
fviz_eig(res.pca, col.var="blue")

var <- get_pca_var(res.pca)
var
## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"

Principal Component Analysis (PCA) Results for Variables

PCA menghasilkan beberapa output utama untuk analisis variabel yang terlibat. \(coord** menunjukkan koordinat dari setiap variabel pada ruang dimensi baru yang dibentuk oleh komponen utama (principal components). Koordinat ini menggambarkan posisi variabel dalam representasi PCA, memudahkan interpretasi hubungan antar-variabel dalam dimensi yang dipelajari. **\)cor menunjukkan korelasi antara variabel asli dengan dimensi baru (komponen utama), yang dapat digunakan untuk memahami sejauh mana variabel asli terkait dengan komponen tertentu. \(cos2** mewakili kualitas representasi variabel terhadap dimensi tertentu dalam bentuk kuadrat kosinus, di mana nilai yang lebih tinggi menunjukkan bahwa variabel terwakili dengan baik oleh dimensi tersebut. Terakhir, **\)contrib menghitung kontribusi setiap variabel terhadap pembentukan dimensi utama, membantu mengidentifikasi variabel yang paling signifikan dalam menjelaskan variabilitas data pada dimensi tertentu. Hasil ini secara keseluruhan memberikan gambaran mendalam tentang peran dan hubungan antar-variabel dalam ruang PCA.

head(var$cos2)
##              Dim.1        Dim.2      Dim.3        Dim.4       Dim.5      Dim.6
## RENUM 0.0006307627 3.978019e-04 0.02502648 0.0004355864 0.405359103 0.04753728
## R101  0.0169703711 7.174763e-05 0.26885584 0.0089626807 0.136061905 0.01806778
## R102  0.0533042082 1.074660e-01 0.03703672 0.3842578339 0.033513111 0.14446301
## R105  0.0659197786 1.240961e-01 0.16288498 0.2469247378 0.050582626 0.05960735
## R301  0.0721985344 3.743666e-01 0.02613159 0.1863829582 0.017652887 0.18251656
## FOOD  0.3165078094 2.533469e-01 0.05292174 0.1035945792 0.002226662 0.11147396
##              Dim.7        Dim.8        Dim.9       Dim.10      Dim.11
## RENUM 6.844155e-04 4.895347e-01 0.0299283090 4.664123e-05 0.000264695
## R101  3.346654e-03 1.779808e-02 0.5126565180 7.078128e-04 0.015560840
## R102  5.282406e-04 2.014938e-03 0.0058414696 2.019718e-01 0.028469896
## R105  5.638241e-05 3.850488e-05 0.0353353336 1.474930e-01 0.106199770
## R301  1.480161e-02 3.219228e-02 0.0043477628 1.590121e-04 0.003075909
## FOOD  7.871934e-03 1.536618e-02 0.0006124364 2.487320e-03 0.008501282
##             Dim.12       Dim.13       Dim.14       Dim.15       Dim.16
## RENUM 6.615100e-05 8.517501e-05 2.663524e-06 1.373268e-07 4.578002e-08
## R101  6.710627e-04 9.259808e-05 1.717460e-04 1.526290e-07 4.206251e-06
## R102  1.052245e-03 1.196576e-05 6.329958e-05 5.020181e-06 1.884429e-07
## R105  1.238402e-05 8.279745e-04 2.555800e-06 1.830650e-05 2.253814e-07
## R301  5.646492e-02 6.390791e-03 1.882665e-02 4.487791e-03 4.183529e-06
## FOOD  1.163248e-01 8.565707e-03 1.939409e-04 4.615578e-06 1.727105e-07
##             Dim.17
## RENUM 2.202681e-61
## R101  3.272468e-59
## R102  2.138223e-58
## R105  1.075362e-58
## R301  2.240546e-57
## FOOD  4.986714e-30

Hasil dari analisis komponen utama (PCA), di mana dimensi (Dim.1, Dim.2, …, Dim.17) menunjukkan bobot dari masing-masing variabel dalam setiap komponen utama. Setiap baris mewakili variabel tertentu (seperti RENUM, R101, R102, dll.) dan angka-angka tersebut menunjukkan kontribusi atau “loading” dari setiap variabel terhadap komponen utama yang bersangkutan.

Berikut penjelasan tentang bagaimana data ini diinterpretasikan:

  1. Dimensi 1 hingga Dimensi 17: Ini adalah komponen utama (PC1, PC2, …, PC17) yang dihasilkan dari analisis PCA. Setiap komponen ini adalah kombinasi linier dari variabel-variabel asli, dengan bobot yang menunjukkan seberapa besar kontribusi variabel terhadap komponen tersebut.

  2. Angka dalam kolom Dim.1, Dim.2, …, Dim.17: Angka-angka ini menunjukkan kontribusi masing-masing variabel terhadap setiap komponen utama. Misalnya:

    • Pada Dim.1, variabel RENUM memiliki kontribusi kecil (0.0006307627), sementara FOOD memiliki kontribusi lebih besar (0.3165078094).
    • Pada Dim.2, kontribusi R102 lebih signifikan (0.107466), sedangkan R101 dan R105 memiliki kontribusi yang lebih kecil.
  3. Pentingnya komponen: Komponen utama yang memiliki kontribusi besar (misalnya, Dim.1, Dim.2) menunjukkan variabilitas terbesar dalam data dan sering kali digunakan dalam analisis lanjutan karena mereka mewakili sebagian besar informasi dalam dataset. Sebaliknya, komponen yang memiliki kontribusi sangat kecil (misalnya, Dim.17) tidak memberikan informasi yang signifikan dan bisa diabaikan.

  4. Dimensi dengan kontribusi sangat kecil (Dim.17): Komponen seperti Dim.17 memiliki nilai yang sangat kecil (seperti 2.202681e-61), yang menandakan bahwa komponen tersebut hampir tidak memberikan informasi atau variabilitas yang bermanfaat untuk analisis.

Kesimpulan:

  • Komponen utama dengan kontribusi terbesar (seperti Dim.1, Dim.2) mengandung sebagian besar informasi dari data, dan oleh karena itu lebih relevan untuk analisis lebih lanjut.
  • Komponen-komponen yang memiliki nilai mendekati nol (seperti Dim.17) kemungkinan besar tidak penting dan dapat diabaikan dalam analisis lebih lanjut untuk menyederhanakan model.
library("corrplot")
corrplot(var$cos2, is.corr=FALSE)

Plot Korelasi Variabel terhadap Dimensi

Di sini, matrix korelasi antara variabel-variabel dan komponen utama (Dim1 hingga Dim17) ditampilkan.

  • Sumbu Y berisi variabel-variabel yang terlibat, dan Sumbu X berisi komponen utama Dim1 hingga Dim17.
  • Lingkaran Besar dan Kecil: Ukuran lingkaran menunjukkan kuatnya korelasi antara variabel dengan dimensi tersebut. Semakin besar lingkarannya, semakin kuat korelasinya.
  • Warna pada Lingkaran: Warna menggambarkan tingkat korelasi: warna yang lebih gelap menunjukkan korelasi yang lebih tinggi dengan dimensi tersebut.

Misalnya, variabel KALORI_KAP memiliki korelasi yang tinggi dengan Dim1 dan Dim2, sedangkan variabel seperti RENUN memiliki korelasi yang lebih rendah.

fviz_cos2(res.pca, choice = "var", axes = 1:2)

Bar Plot Kualitas Representasi (Cos2)

Plot ini menunjukkan seberapa baik setiap variabel terwakili dalam Dim1 dan Dim2 (kualitas representasi).

  • Sumbu X adalah nama variabel, dan Sumbu Y menunjukkan nilai cos2 untuk masing-masing variabel.
  • Bar yang Lebih Tinggi: Variabel seperti KALORI_KAP, EXPEND, dan PROTE_KAP memiliki kualitas representasi yang tinggi terhadap Dim1 dan Dim2, berarti variabel-variabel ini lebih baik menggambarkan data pada dua dimensi utama.
  • Bar yang Lebih Rendah: Variabel seperti RENUN, W1, dan R101 memiliki kualitas representasi yang lebih rendah, menunjukkan bahwa mereka tidak banyak berkontribusi pada pemisahan data dalam Dim1 dan Dim2.
fviz_pca_var(res.pca,
             col.var = "cos2", # Color by the quality of representation
             gradient.cols = c("darkred", "red", "pink"),
             repel = TRUE
             )

Plot Variabel pada PCA

Plot ini menggambarkan variabel-variabel yang terlibat dalam analisis PCA (Principal Component Analysis) dengan dua dimensi utama yang terpilih, Dim1 (24.7%) dan Dim2 (17.2%).

  • Sumbu X (Dim1) dan Sumbu Y (Dim2) menunjukkan kontribusi masing-masing dimensi terhadap variabilitas data.
  • Panah: Setiap panah menunjukkan arah dan kekuatan kontribusi variabel terhadap dimensi-dimensi tersebut. Panah yang lebih panjang menunjukkan variabel yang lebih berpengaruh pada komponen utama tersebut.
    • Misalnya, variabel seperti R301, R105, dan EXPEND memiliki kontribusi yang lebih besar.
  • Warna pada Panah: Warna panah menggambarkan kualitas representasi dari masing-masing variabel terhadap dua dimensi tersebut. Variabel dengan warna lebih gelap menunjukkan representasi yang lebih baik pada dimensi tersebut, berdasarkan nilai cos2.

Secara keseluruhan, ketiga visualisasi memberikan gambaran tentang bagaimana variabel-variabel tersebut terdistribusi dan seberapa besar kontribusinya dalam analisis PCA yang dilakukan.

# Contributions of variables to PC1
a<-fviz_contrib(res.pca, choice = "var", axes = 1)
# Contributions of variables to PC2
b<-fviz_contrib(res.pca, choice = "var", axes = 2)
grid.arrange(a,b, ncol=2, top='Contribution of the variables to the first two PCs')

Garis putus-putus merah pada grafik menunjukkan kontribusi rata-rata yang diharapkan dari setiap variabel terhadap komponen utama. Variabel yang memiliki kontribusi melebihi garis ini dianggap signifikan dalam menjelaskan dimensi tersebut. Dari analisis yang ditunjukkan, variabel PROTE_KAP, KALORI_KAP, dan EXPEND memberikan kontribusi terbesar terhadap Dim1 dan Dim2, sehingga mereka memiliki peran penting dalam menjelaskan variabilitas data. Sementara itu, variabel seperti RENUN, W1, dan R101 memiliki kontribusi di bawah rata-rata, yang menunjukkan bahwa pengaruhnya terhadap kedua dimensi ini relatif kecil. Interpretasi hasil sebaiknya difokuskan pada variabel-variabel dengan kontribusi tinggi, karena mereka memberikan informasi yang lebih signifikan dalam analisis ini.