Analisis Komponen Utama

Contoh 5.1

Pemetaan kerentanan suatu desa secara umum dapat digambarkan berdasarkan kondisi sosial dan infrastruktur yang diwakili oleh variabel seperti jumlah rumah tangga pengguna PLN (X1), jumlah surat miskin (X2), jumlah orang cacat (X3) dan akses desamenuju pusat kecamatan (X4) ( data diambil dari sebagian kecil penelitian Nooraeni dan Pramana, 2017). Lakukan Analisis Komponen utama terhadap keempat variabel dari 10 desa

Tahap 1:Input data kondisi 10 desa berdasarkan keempat variabel

PLN= c(60, 104, 108, 140, 84, 70,77,100,56,92)
Miskin = c( 10,22,18,31,61,83,30,25,21,56)
Cacat = c( 6,4,12,14,4,5,10,1,2,11)
Jarakcamat=c(11,2,24,7,11,3,15,15,20,11)
dataawal= data.frame (PLN,Miskin, Cacat, Jarakcamat)

Tahap 2: Karena satuan masing-masing variabel berbeda maka lakukan transformasi standarisasi normal baku

dataZ=scale(dataawal)
#Manual
zPLN= (PLN-mean(PLN))/sd(PLN)
zMiskin= (Miskin-mean(Miskin))/sd(Miskin)
zCacat = (Cacat-mean(Cacat))/sd(Cacat)
zJarakcamat=(Jarakcamat-mean(Jarakcamat))/sd(Jarakcamat)
dataZ= data.frame(zPLN,zMiskin, zCacat, zJarakcamat)

Tahap 3: Eksplorasi data sebelum lanjut ke analisis komponen utama

  1. Membuat plot dari data awal dan dataZ untuk melihat korelasinya
panel.cor= function(x,y, digits=2, prefix="", cex.cor,..)
{
  usr= par("usr");on.exit (par(usr))
  # 1.1. VISUALITATION 11
  par (usr = c(0,1,0,1))
  r=abs (cor(x,y))
  txt= format(c(r,0.123456789), digits=digits)[1]
  txt= paste(prefix, txt, sep="")
  if(missing(cex.cor)) cex.cor=0.8/strwidth (txt)
  text(0.5,0.5, txt, cex=cex.cor * r)
}

pairs(~PLN+Miskin+Cacat+Jarakcamat, data=dataawal, lower.panel=panel.smooth, upper.panel=panel.cor, main="scatterplot matriks")

pairs(~zPLN+zMiskin+zCacat+zJarakcamat, data=dataZ, lower.panel= panel.smooth, upper.panel= panel.cor, main="Scatterplot matriks standarisasi")

  1. Hitung matriks korelasi dari data awal
round(cor(dataawal), digits=3)
##               PLN Miskin  Cacat Jarakcamat
## PLN         1.000 -0.107  0.549     -0.153
## Miskin     -0.107  1.000 -0.025     -0.458
## Cacat       0.549 -0.025  1.000      0.085
## Jarakcamat -0.153 -0.458  0.085      1.000

Tahap 4: Analisis komponen utama (input berupa dataframe) terdapat beberapa cara dalam melakukan pengolahan seperti:

  1. Analisis komponen utama dengan fungsi princomp(), inputnya berupa data frame matriks korelasi = “TRUE”, artinya struktur keragaman awal menggunakan matriks korelasi.
dataawal_pca= princomp (dataawal, cor=TRUE)
summary(dataawal_pca, loadings=TRUE)
## Importance of components:
##                           Comp.1    Comp.2    Comp.3     Comp.4
## Standard deviation     1.2521127 1.2063809 0.8077648 0.56953924
## Proportion of Variance 0.3919466 0.3638387 0.1631210 0.08109374
## Cumulative Proportion  0.3919466 0.7557853 0.9189063 1.00000000
## 
## Loadings:
##            Comp.1 Comp.2 Comp.3 Comp.4
## PLN         0.671  0.254  0.363  0.595
## Miskin     -0.264  0.644 -0.602  0.390
## Cacat       0.680  0.140 -0.490 -0.527
## Jarakcamat  0.134 -0.707 -0.515  0.465

b.Analisis komponen utama dengan fungsi princomp() dan input data berupa dataZ(data terstandarisasi normal baku), matriks korelasi = “FALSE”, artinya struktur keragaman awalnya menggunakan matriks kovarians.

dataZ_pca = princomp (dataZ, cor=FALSE)
summary (dataZ_pca, loadings=TRUE)
## Importance of components:
##                           Comp.1    Comp.2    Comp.3     Comp.4
## Standard deviation     1.1878584 1.1444734 0.7663129 0.54031237
## Proportion of Variance 0.3919466 0.3638387 0.1631210 0.08109374
## Cumulative Proportion  0.3919466 0.7557853 0.9189063 1.00000000
## 
## Loadings:
##             Comp.1 Comp.2 Comp.3 Comp.4
## zPLN         0.671  0.254  0.363  0.595
## zMiskin     -0.264  0.644 -0.602  0.390
## zCacat       0.680  0.140 -0.490 -0.527
## zJarakcamat  0.134 -0.707 -0.515  0.465

Interpretasi output

  • Output a dan b sama karena matriks korelasi (dataawal)= matriks kovarians (dataZ)
  • Beradasarkan nilai proporsi kumulatif varians komponen utama (KU1) dapat menjelaskan 39 persen dari total varians dan bila ditambahkan dengan komponen kedua (KU2) maka kumulatif proporsi menjadi 75 persen. Menurut Johnson, dasar menentukan banyaknya komponen utama adalah proporsi kumulatif keragaman komponen minimal 80%. Untuk itu kita tambahkan lagi satu komponen menjadi tiga komponen sehingga proporsi kumulatif keragaman menjadi 92 persen.
  • Nilai simpangan baku (standar deviasi) pada baris pertama merupakan nilai akar positif dan nilai eigen (√𝝀i)

  • Nilai-nilai loading yang ditampilkan pada hasil di atas adalah nilai eigenvector yang dinormalisasi.

  • Persamaan komponen utama yang dihasilkan adalah

    \(KU1= 0.671zPLN-0.264zMiskin+0.68zCacat+0.134zJarakcamat\)

    \(KU2= 0.254zPLN+0.644zMiskin+0.14zCacat-0.707zJarakcamat\)

    \(KU3= 0.363zPLN-0.602zMiskin-0.49zCacat-0.515zJarakcamat\)

    \(KU4= 0.595zPLN+0.39zMiskin-0.527zCacat+0.465zJarakcamat\)

  • Untuk memberi nama -menginterpretasi-masing-masing komponen bisa berdasarkan besaran korelasi antara komponen i dengan variabel asalnya.

c. Cara selanjutnya untuk menampilkan nilai-nilai loading tiap komponen:

loadings(dataZ_pca)
## 
## Loadings:
##             Comp.1 Comp.2 Comp.3 Comp.4
## zPLN         0.671  0.254  0.363  0.595
## zMiskin     -0.264  0.644 -0.602  0.390
## zCacat       0.680  0.140 -0.490 -0.527
## zJarakcamat  0.134 -0.707 -0.515  0.465
## 
##                Comp.1 Comp.2 Comp.3 Comp.4
## SS loadings      1.00   1.00   1.00   1.00
## Proportion Var   0.25   0.25   0.25   0.25
## Cumulative Var   0.25   0.50   0.75   1.00

Tahap 5: Penentuan jumlah komponen utama yang akan digunakan selain dengan memperhatikan proporsi keragaman kumulatif juga dapat merujuk pada pola scree plot

screeplot(dataZ_pca, type="lines", col=4)
#atau
plot(dataZ_pca, type="lines",col=4)

Interpretasi Gambar

Berdasarkan pola garis scree plot jumlah komponen utama yang dapat ditentukan adalah tiga. Penentuan jumlah komponen berdasarkan posisi titik kurva ketika mulai melandai. Pada gambar cree plot di atas pada posisi titik 3 kurva mulai melandai.

Tahap 6: Menampilkan nilai (score) komponen utama

dataZ_pca$scores
##            Comp.1     Comp.2     Comp.3      Comp.4
##  [1,] -0.63046802 -0.9427663  0.4156561 -1.07051212
##  [2,] -0.07813221  0.6863873  1.6182223 -0.20343103
##  [3,]  1.70529944 -1.3759597 -0.7205997  0.35876912
##  [4,]  2.37709486  1.0987149  0.4419349 -0.04189657
##  [5,] -0.87825425  0.6539660 -0.3483712  0.58477540
##  [6,] -1.50362779  1.9703152 -0.6364659 -0.02585019
##  [7,]  0.27212946 -0.4993585 -0.5919516 -0.53525236
##  [8,] -0.41927475 -0.6863810  0.8459998  0.97330088
##  [9,] -1.29099360 -1.7169923 -0.1593139  0.09024655
## [10,]  0.44622685  0.8120744 -0.8651108 -0.13014968

Interpretasi Output

Nilai scores tersebut dapat digunakan untuk analisis lanjutan menggantikan keempat variabel asal yang diamati.

Contoh 5.2

Input berupa matriks korelasi

Untuk mengetahui tingkat kemandirian anak-anak cacat tunagrahita usia SD di Kota Palembang maka dilakukan penelitian di beberapa sekolah tunagrahita Kota Palembang (data diambil dari penelitian Ardhila dan Nooraeni, 2017).Indikator yang dikumpulkan untuk mengukur kemandiriannya : kemampuan makan sendiri (X1), kemampuan minum sendriri (X2), kemampuan membersihkan diri,mandi (X3) dan kemampuan buang air (X4). Dari data sebanyak 70 siswa diperoleh matriks korelasinya sebagai berikut :

Tahap 1: input matriks korelasi

r= c( 1, 0.988, 0.881, 0.711, 0.988, 1, 0.884,0.697, 0.881, 0.884,1,0.861, 0.711, 0.697, 0.861, 1)
R= matrix(r,4,4)

Tahap 2: Hitung eigenvalue dan eigenvector dari matriks R

#eigen value
eigen(R)$value
## [1] 3.51718522 0.39534821 0.07618855 0.01127802
#eigenvector
eigen(R)$vector
##            [,1]       [,2]       [,3]        [,4]
## [1,] -0.5109560  0.4202210  0.2935221  0.69006022
## [2,] -0.5095528  0.4471000  0.1598647 -0.71756588
## [3,] -0.5157470 -0.1669555 -0.8368936  0.07576284
## [4,] -0.4618278 -0.7717783  0.4334711 -0.05635680

Tahap 3: Analisis komponen utama menggunakan princomp()

kemandirian_pca=princomp(covmat=R,cor=TRUE, n.obs= 70)
## Warning: In princomp.default(covmat = R, cor = TRUE, n.obs = 70) :
##  extra argument 'n.obs' will be disregarded
summary(kemandirian_pca)
## Importance of components:
##                           Comp.1     Comp.2     Comp.3      Comp.4
## Standard deviation     1.8754160 0.62876721 0.27602274 0.106198003
## Proportion of Variance 0.8792963 0.09883705 0.01904714 0.002819504
## Cumulative Proportion  0.8792963 0.97813336 0.99718050 1.000000000

Interpretasi Output

Berdasarkan nilai Cumulative Proportion, proprosi varians sampel yang dapat dijelaskan oleh komponen pertama sebesar 87,9 persen dari total keragaman sampel. Jika ditambahkan dengan komponen kedua maka Cumulative Proportion Varians sebesar 97,8 persen.

loadings (kemandirian_pca)
## 
## Loadings:
##      Comp.1 Comp.2 Comp.3 Comp.4
## [1,]  0.511  0.420  0.294  0.690
## [2,]  0.510  0.447  0.160 -0.718
## [3,]  0.516 -0.167 -0.837       
## [4,]  0.462 -0.772  0.433       
## 
##                Comp.1 Comp.2 Comp.3 Comp.4
## SS loadings      1.00   1.00   1.00   1.00
## Proportion Var   0.25   0.25   0.25   0.25
## Cumulative Var   0.25   0.50   0.75   1.00

Nilai loading yang diperoleh hasilnya sama dengan nilai eigenvector normalized. Nilai loading ini digunakan sebagai koefisien dari fungsi komponen utamanya.

Persamaan komponen utama yang dihasilkan:

\(KU1=0.511X1+O.51X2+0.516X3+0.462X4\)

\(KU2= 0.42X1+0.447X2-0.167X3-0.772X4\)

\(KU3= 0.294X1+0.16X2-0.837X3+0.433X4\)

\(KU4= 0.69X1-0.718X2\)