Di bagian ini kita terapkan PCA ke kumpulan data “Otomatis” dari ISLR paket dalam R [24]. Ini berisi jarak tempuh bahan bakar, tenaga kuda, dan informasi lainnya untuk 392 kendaraan. Kumpulan data ini diambil dari perpustakaan StatLib yang dikelola di Carnegie Universitas Mellon. Dataset digunakan dalam American Statistical 1983 Pameran Asosiasi [24]. Pertama, kita gunakan library ISLR.

library(ISLR)
## Warning: package 'ISLR' was built under R version 4.2.2
data(Auto)
summary(Auto)
##       mpg          cylinders      displacement     horsepower        weight    
##  Min.   : 9.00   Min.   :3.000   Min.   : 68.0   Min.   : 46.0   Min.   :1613  
##  1st Qu.:17.00   1st Qu.:4.000   1st Qu.:105.0   1st Qu.: 75.0   1st Qu.:2225  
##  Median :22.75   Median :4.000   Median :151.0   Median : 93.5   Median :2804  
##  Mean   :23.45   Mean   :5.472   Mean   :194.4   Mean   :104.5   Mean   :2978  
##  3rd Qu.:29.00   3rd Qu.:8.000   3rd Qu.:275.8   3rd Qu.:126.0   3rd Qu.:3615  
##  Max.   :46.60   Max.   :8.000   Max.   :455.0   Max.   :230.0   Max.   :5140  
##                                                                                
##   acceleration        year           origin                      name    
##  Min.   : 8.00   Min.   :70.00   Min.   :1.000   amc matador       :  5  
##  1st Qu.:13.78   1st Qu.:73.00   1st Qu.:1.000   ford pinto        :  5  
##  Median :15.50   Median :76.00   Median :1.000   toyota corolla    :  5  
##  Mean   :15.54   Mean   :75.98   Mean   :1.577   amc gremlin       :  4  
##  3rd Qu.:17.02   3rd Qu.:79.00   3rd Qu.:2.000   amc hornet        :  4  
##  Max.   :24.80   Max.   :82.00   Max.   :3.000   chevrolet chevette:  4  
##                                                  (Other)           :365

kita akan membersihkan dataset agar bisa kita gunakan berfungsi untuk menerapkan PCA serta memvisualisasikannya.

auto <- Auto[,1:7]
summary(auto)
##       mpg          cylinders      displacement     horsepower        weight    
##  Min.   : 9.00   Min.   :3.000   Min.   : 68.0   Min.   : 46.0   Min.   :1613  
##  1st Qu.:17.00   1st Qu.:4.000   1st Qu.:105.0   1st Qu.: 75.0   1st Qu.:2225  
##  Median :22.75   Median :4.000   Median :151.0   Median : 93.5   Median :2804  
##  Mean   :23.45   Mean   :5.472   Mean   :194.4   Mean   :104.5   Mean   :2978  
##  3rd Qu.:29.00   3rd Qu.:8.000   3rd Qu.:275.8   3rd Qu.:126.0   3rd Qu.:3615  
##  Max.   :46.60   Max.   :8.000   Max.   :455.0   Max.   :230.0   Max.   :5140  
##   acceleration        year      
##  Min.   : 8.00   Min.   :70.00  
##  1st Qu.:13.78   1st Qu.:73.00  
##  Median :15.50   Median :76.00  
##  Mean   :15.54   Mean   :75.98  
##  3rd Qu.:17.02   3rd Qu.:79.00  
##  Max.   :24.80   Max.   :82.00

Kita pilih 7 variabel pertama dan juga membuat variabel “asal”.sebagai kelas karakter.

new.data <- Auto[, 1:8]
new.data$origin <- as.character(new.data$origin)
summary(new.data)
##       mpg          cylinders      displacement     horsepower        weight    
##  Min.   : 9.00   Min.   :3.000   Min.   : 68.0   Min.   : 46.0   Min.   :1613  
##  1st Qu.:17.00   1st Qu.:4.000   1st Qu.:105.0   1st Qu.: 75.0   1st Qu.:2225  
##  Median :22.75   Median :4.000   Median :151.0   Median : 93.5   Median :2804  
##  Mean   :23.45   Mean   :5.472   Mean   :194.4   Mean   :104.5   Mean   :2978  
##  3rd Qu.:29.00   3rd Qu.:8.000   3rd Qu.:275.8   3rd Qu.:126.0   3rd Qu.:3615  
##  Max.   :46.60   Max.   :8.000   Max.   :455.0   Max.   :230.0   Max.   :5140  
##   acceleration        year          origin         
##  Min.   : 8.00   Min.   :70.00   Length:392        
##  1st Qu.:13.78   1st Qu.:73.00   Class :character  
##  Median :15.50   Median :76.00   Mode  :character  
##  Mean   :15.54   Mean   :75.98                     
##  3rd Qu.:17.02   3rd Qu.:79.00                     
##  Max.   :24.80   Max.   :82.00

Dalam Aplikasi Praktis, kita akan menunjukkan cara memilih dimensi untuk memvisualisasikan kumpulan data ini dan bagaimana kita dapat memvisualisasikan data dalam dimensi yang lebih rendah ruang vektor.

Untuk memvisualisasikan data kita bisa gunakan sintaks berikut

library(rgl)
## Warning: package 'rgl' was built under R version 4.2.2
dat <- replicate(2, 1:3)
plot3d(dat, type = 'n', xlim = c(-1, 8), ylim = c(-1, 8), zlim = c(-10, 20), xlab = '', ylab = '', zlab = '')
planes3d(2, 3, -1, 0, col = 'red', alpha = 0.6)
points3d(x = 0, y = 0, z = 0)

Untuk mengurangi dimensi data “Otomatis” dari paket ISLR, kita akan menggunakan fungsi prcomp() untuk menerapkan PCA ke dataset. Untuk prcomp(), untuk menskalakan data kita tidak harus menggunakan fungsi scale. Cukup tambahkan opsi “scale=TRUE”.

pc <- prcomp(auto, scale=TRUE)
plot(pc)

Gambar yang ditampilkan di sini merupakan histogram untuk varian dari masing-masing komponen.

Tampak dari plot

plot(cumsum(pc$sdev^2/sum(pc$sdev^2)))

Source : Source : file:///D:/Tugas%20Sekolah/Kuliah/LinearAlgeb/Ruriko%20Yoshida%20-%20Linear%20Algebra%20and%20Its%20Applications%20with%20R%20(Textbooks%20in%20Mathematics)%20(2021,%20Chapman%20and%20Hall_CRC)%20-%20libgen.li.pdf