**Penerima Beasiswa**   
library(scatterplot3d) 
library("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(DT) 
Indeks_Prestasi <- c(3.75,3.69,3.78,2.83,3.85,2.92,3.85,3.88,3.89,3.86) # Buat vektor x1 dalam hal ini Indeks Prestasi (IP)
Daya_listrik <- c(450,2200,1300,2200,450,2200,1300,450,450,1300) # Buat vektor x2 dalam hal ini Daya listrik (VA)
Tagihan_listrik <- c(825882,538182,679670,942130,616478,284606,710103,983355,893746,327686) # Buat vektor x3 dalam hal ini Jumlah tagihan listrik (Rp)
Semester <- c(3,5,6,2,3,7,4,7,4,5) # Buat vektor x4 dalam hal ini Semester (II-VII)
luas_tanah <- c(24,35,46,52,36,72,45,75,49,54) # Buat vektor x5 dalam hal ini luas tanah
luas_bangunan  <- c(20,30,40,50,30,70,40,70,42,50) # Buat vektor x6 dalam hal ini luas bangunan
tagihan_air <- c(325882,438182,579670,742130,416478,214606,310103,383355,793746,727686) # Buat vektor x7 dalam hal ini Jumlah tagihan air (Rp)
penghasilan_ayah <- c(3025882,4038182,5079670,7042130,4016478,2014606,3010103,3083355,1093746,1207686) # Buat vektor x8 dalam hal ini penghasilan ayah (Rp/bulan)
penghasilan_ibu <- c(0,238182,379670,542130,0,114606,210103,0,193746,0) # Buat vektor x9 dalam hal ini penghasilan ibu (Rp/bulan)
Jumlah_Organisasi <- c(1,2,4,2,0,3,3,2,4,5) # Buat vektor x10 dalam hal ini Jumlah Organisasi yang diikuti
Jumlah_prestasi <- c(6,3,0,3,5,5,4,3,0,1) # Buat vektor x11 dalam hal ini Jumlah prestasi yang didapat

data1.1 <- data.frame(Indeks_Prestasi,Daya_listrik,Tagihan_listrik,Semester,luas_tanah,luas_bangunan,tagihan_air,penghasilan_ayah,penghasilan_ibu,Jumlah_Organisasi,Jumlah_prestasi)
datatable(data1.1)
scatterplot3d(data1.1, main="3D Scatterplot", pch=20) 

Standarisasi Data

Karena variabel memiliki satuan yang berbeda dibanding dengan variabel yang lain, maka perlu dilakukan standardisasi data. Di R untuk melakukan standardisasi ke normal baku dapat menggunakan fungsi scale.

dataBea <- scale(x = data1.1)

Menghitung matriks ragam-peragam

Matriks ragam-peragam dihitung dari data yang telah distandardisasi. Di R untuk menghitung matriks ragam-peragam dapat menggunakan fungsi cov.

dataCov <- cov(dataBea)

Menghitung vektor eigen dan nilai eigen

Untuk menghitung vektor eigen dan nilai eigen di R dapat menggunakan fungsi eigen.

data_eigen <- eigen(dataCov)
data_eigen
## eigen() decomposition
## $values
##  [1]  3.317474e+00  2.826522e+00  2.423032e+00  1.329760e+00  6.092497e-01
##  [6]  2.648697e-01  9.666939e-02  8.766154e-02  4.476121e-02  1.452797e-16
## [11] -2.072600e-16
## 
## $vectors
##              [,1]        [,2]        [,3]         [,4]         [,5]        [,6]
##  [1,]  0.14061054  0.39757348  0.37368396  0.007793768 -0.415632864 -0.12666368
##  [2,] -0.20916767 -0.39113211 -0.26298963 -0.388284007 -0.101686756  0.06987441
##  [3,]  0.22493909 -0.13210407  0.19011194  0.684231998 -0.070991584  0.45975258
##  [4,] -0.42523478  0.22103738 -0.10437458  0.061168190 -0.574408421 -0.07489814
##  [5,] -0.47346641  0.01008891 -0.12387492  0.383463069  0.135900056 -0.12038725
##  [6,] -0.47011312 -0.01408280 -0.16197762  0.361564363  0.179495194 -0.10368447
##  [7,] -0.05553020 -0.26232872  0.51356275  0.002891411  0.411010998 -0.41022263
##  [8,]  0.19347995 -0.46573595 -0.13016026  0.183968737 -0.390324415 -0.48266682
##  [9,] -0.02469738 -0.56369431  0.08332179  0.001891237 -0.251363704  0.33277909
## [10,] -0.39693851 -0.03208482  0.35441190 -0.255537765  0.009323901  0.43884538
## [11,]  0.24736678  0.13354712 -0.53790306  0.018196608  0.216062723  0.17964159
##              [,7]         [,8]        [,9]       [,10]       [,11]
##  [1,] -0.50099099  0.409535102 -0.12858370  0.11020766 -0.21512491
##  [2,] -0.02957229  0.717092395  0.19037100 -0.04972386  0.11960063
##  [3,]  0.15436778  0.283882252  0.30846601 -0.04162482  0.09960048
##  [4,]  0.51406997 -0.065648523  0.22275182  0.20447797 -0.24519424
##  [5,] -0.23068615  0.080611198 -0.23695319  0.53479558  0.42250390
##  [6,] -0.24888483  0.062318365 -0.03030521 -0.55297568 -0.45423898
##  [7,]  0.21547775  0.161252979  0.20711096  0.30709317 -0.34277980
##  [8,] -0.32421929 -0.276343603  0.34321541 -0.01655589  0.09997040
##  [9,] -0.02845930 -0.129910107 -0.55190404  0.20158901 -0.37127385
## [10,] -0.37918366 -0.321762678  0.45252553  0.06226693  0.04316055
## [11,] -0.22076551 -0.001650846  0.27444681  0.45929720 -0.46619172

Output yang dihasilkan dari fungsi eigen terdiri atas :

values yaitu nilai eigen yang sudah diurutkan dari yang tertinggi ke yang terendah. Nilai ini bisa digunakan untuk melihat seberapa besar varians yang dapat dijelaskan oleh komponen utama. vectors yaitu vektor eigen. Nilai ini merupakan nilai loadings yang digunakan untuk membuat persamaan komponen utama.

Melakukan PCA dengan fungsi prcomp

Selain penghitungan manual diatas, R telah menyediakan fungsi prcomp yang bisa digunakan untuk melakukan Analisis Komponen Utama. Fungsi ini hanya digunakan untuk raw data, dimana standarisasi data sudah bisa dilakukan dengan memasukkan argument TRUE pada parameter scale. dan center.

data_pca <- prcomp(x = data1.1, scale. = TRUE, center = TRUE) 
names(data_pca)
## [1] "sdev"     "rotation" "center"   "scale"    "x"
data_pca
## Standard deviations (1, .., p=10):
##  [1] 1.821393e+00 1.681226e+00 1.556609e+00 1.153152e+00 7.805445e-01
##  [6] 5.146549e-01 3.109170e-01 2.960769e-01 2.115684e-01 4.429362e-16
## 
## Rotation (n x k) = (11 x 10):
##                           PC1         PC2         PC3          PC4          PC5
## Indeks_Prestasi   -0.14061054  0.39757348  0.37368396  0.007793768 -0.415632864
## Daya_listrik       0.20916767 -0.39113211 -0.26298963 -0.388284007 -0.101686756
## Tagihan_listrik   -0.22493909 -0.13210407  0.19011194  0.684231998 -0.070991584
## Semester           0.42523478  0.22103738 -0.10437458  0.061168190 -0.574408421
## luas_tanah         0.47346641  0.01008891 -0.12387492  0.383463069  0.135900056
## luas_bangunan      0.47011312 -0.01408280 -0.16197762  0.361564363  0.179495194
## tagihan_air        0.05553020 -0.26232872  0.51356275  0.002891411  0.411010998
## penghasilan_ayah  -0.19347995 -0.46573595 -0.13016026  0.183968737 -0.390324415
## penghasilan_ibu    0.02469738 -0.56369431  0.08332179  0.001891237 -0.251363704
## Jumlah_Organisasi  0.39693851 -0.03208482  0.35441190 -0.255537765  0.009323901
## Jumlah_prestasi   -0.24736678  0.13354712 -0.53790306  0.018196608  0.216062723
##                           PC6         PC7          PC8         PC9        PC10
## Indeks_Prestasi   -0.12666368  0.50099099 -0.409535102  0.12858370  0.14637047
## Daya_listrik       0.06987441  0.02957229 -0.717092395 -0.19037100 -0.07000937
## Tagihan_listrik    0.45975258 -0.15436778 -0.283882252 -0.30846601 -0.05851472
## Semester          -0.07489814 -0.51406997  0.065648523 -0.22275182  0.24446287
## luas_tanah        -0.12038725  0.23068615 -0.080611198  0.23695319  0.45203074
## luas_bangunan     -0.10368447  0.24888483 -0.062318365  0.03030521 -0.46433789
## tagihan_air       -0.41022263 -0.21547775 -0.161252979 -0.20711096  0.36265990
## penghasilan_ayah  -0.48266682  0.32421929  0.276343603 -0.34321541 -0.03390274
## penghasilan_ibu    0.33277909  0.02845930  0.129910107  0.55190404  0.26382272
## Jumlah_Organisasi  0.43884538  0.37918366  0.321762678 -0.45252553  0.05369282
## Jumlah_prestasi    0.17964159  0.22076551  0.001650846 -0.27444681  0.53421896

Fungsi prcomp menghasilkan beberapa output sebagai berikut :

sdev yaitu nilai standar deviasi dari komponen utama yang terbentuk. Nilai kuadrat dari nilai ini merupakan nilai eigen atau varians dari komponen utama. rotation yaitu vektor eigen atau koeffisien dari masing-masing variabel yang digunakan untuk membentuk komponen utama. Nilai ini juga bisa disebut loadings. center yaitu nilai rata-rata dari variabel yang digunakan. scale yaitu nilai standar deviasi dari variabel yang digunakan. x yaitu nilai data setelah dimasukkan ke dalam persamaan komponen utama.

Menentukan Jumlah Komponen Utama

Terdapat beberapa pendekatan ketika ingin menentukan jumlah komponen utama, salah satunya adalah dengan melihat proporsi kumulatif varians yang dapat dijelaskan oleh komponen utama. Untuk melihatnya di R dapat menggunakan fungsi summary yang diisi objek data_pca

summary(data_pca)
## Importance of components:
##                           PC1    PC2    PC3    PC4     PC5     PC6     PC7
## Standard deviation     1.8214 1.6812 1.5566 1.1532 0.78054 0.51465 0.31092
## Proportion of Variance 0.3016 0.2570 0.2203 0.1209 0.05539 0.02408 0.00879
## Cumulative Proportion  0.3016 0.5585 0.7788 0.8997 0.95509 0.97917 0.98796
##                            PC8     PC9      PC10
## Standard deviation     0.29608 0.21157 4.429e-16
## Proportion of Variance 0.00797 0.00407 0.000e+00
## Cumulative Proportion  0.99593 1.00000 1.000e+00

Output diatas memberi petunjuk bahwa sebaiknya kita memilih dua komponen utama, karena kedua komponen utama telah mampu menangkap 86,75% keragaman data.

Persamaan Komponen Utama

Persamaan komponen utama dibentuk berdasarkan komponen loadings atau vektor eigen .

data_pca$rotation
##                           PC1         PC2         PC3          PC4          PC5
## Indeks_Prestasi   -0.14061054  0.39757348  0.37368396  0.007793768 -0.415632864
## Daya_listrik       0.20916767 -0.39113211 -0.26298963 -0.388284007 -0.101686756
## Tagihan_listrik   -0.22493909 -0.13210407  0.19011194  0.684231998 -0.070991584
## Semester           0.42523478  0.22103738 -0.10437458  0.061168190 -0.574408421
## luas_tanah         0.47346641  0.01008891 -0.12387492  0.383463069  0.135900056
## luas_bangunan      0.47011312 -0.01408280 -0.16197762  0.361564363  0.179495194
## tagihan_air        0.05553020 -0.26232872  0.51356275  0.002891411  0.411010998
## penghasilan_ayah  -0.19347995 -0.46573595 -0.13016026  0.183968737 -0.390324415
## penghasilan_ibu    0.02469738 -0.56369431  0.08332179  0.001891237 -0.251363704
## Jumlah_Organisasi  0.39693851 -0.03208482  0.35441190 -0.255537765  0.009323901
## Jumlah_prestasi   -0.24736678  0.13354712 -0.53790306  0.018196608  0.216062723
##                           PC6         PC7          PC8         PC9        PC10
## Indeks_Prestasi   -0.12666368  0.50099099 -0.409535102  0.12858370  0.14637047
## Daya_listrik       0.06987441  0.02957229 -0.717092395 -0.19037100 -0.07000937
## Tagihan_listrik    0.45975258 -0.15436778 -0.283882252 -0.30846601 -0.05851472
## Semester          -0.07489814 -0.51406997  0.065648523 -0.22275182  0.24446287
## luas_tanah        -0.12038725  0.23068615 -0.080611198  0.23695319  0.45203074
## luas_bangunan     -0.10368447  0.24888483 -0.062318365  0.03030521 -0.46433789
## tagihan_air       -0.41022263 -0.21547775 -0.161252979 -0.20711096  0.36265990
## penghasilan_ayah  -0.48266682  0.32421929  0.276343603 -0.34321541 -0.03390274
## penghasilan_ibu    0.33277909  0.02845930  0.129910107  0.55190404  0.26382272
## Jumlah_Organisasi  0.43884538  0.37918366  0.321762678 -0.45252553  0.05369282
## Jumlah_prestasi    0.17964159  0.22076551  0.001650846 -0.27444681  0.53421896

“Rekonstruksi” Data

Setelah didapatkan persamaan komponen utamanya, maka kita dapat ‘merekonstruksi’ data dengan memasukkan nilai variabel pada komponen utama yang dibuat. Di R cukup dengan mengakses atribut x pada objek data_pca Dapat dilihat bahwasanya kita dapat mereduksi data yang berawal dari 4 dimensi/variabel menjadi 2 dimensi/variabel namun tetap menggambarkan keragaman data. Nilai ini juga dapat digunakan untuk keperluan analisis selanjutnya seperti regresi maupun klasifikasi.

head(data_pca$x[,1:2])
##             PC1        PC2
## [1,] -3.0274847  1.2735713
## [2,] -0.5809910 -0.6101996
## [3,]  0.6995626 -1.1253980
## [4,] -0.5170778 -4.1630267
## [5,] -2.4514314  1.0706574
## [6,]  2.8390170  0.3076605

Visualisasi data hasil rekonstruksi

fviz_pca(data_pca)