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