Vector Spaces dan Subspaces adalah konsep penting dalam matematika linier yang juga dapat diterapkan dalam lingkungan pemrograman seperti RStudio.

Vector space (ruang vektor) adalah himpunan objek vektor yang memenuhi sejumlah properti tertentu. Dalam RStudio, vektor sering digunakan untuk menyimpan dan memanipulasi data. Misalnya, vektor numerik dalam RStudio dapat digunakan untuk merepresentasikan serangkaian angka.

Subspace (subruang) adalah subset dari ruang vektor yang mempertahankan sifat-sifat struktural dari ruang vektor itu sendiri. Dalam konteks RStudio, subruang dapat digunakan untuk mewakili subset data atau subset fitur dalam analisis data. Misalnya, jika Anda memiliki data yang terdiri dari beberapa variabel numerik, Anda dapat membentuk subruang yang terdiri dari subset variabel-variabel tersebut untuk analisis yang lebih terfokus.

library(ISLR)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(ggfortify)
## Warning: package 'ggfortify' was built under R version 4.2.3
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

Fungsi summary() menunjukkan ringkasan dataset termasuk rata-rata setiap variabel, dll. Sebelum melakukan apa pun, kita akan membersihkan dataset agar kita dapat menggunakan fungsi-fungsi 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

Kemudian, kita akan memilih 7 variabel pertama dan juga menjadikan 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

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

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

Ada berbagai aturan praktis untuk memilih jumlah komponen utama yang akan dipertahankan dalam analisis jenis ini: - Pilihlah jumlah komponen yang menjelaskan 85% atau lebih besar dari variasi. Untuk melakukannya, kita akan menggunakan fungsi cumsum(). Fungsi ini menghitung jumlah kumulatif.

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

Dengan kriteria proporsi kumulatif varians yang dijelaskan, kami menyimpan sebanyak yang diperlukan untuk menjelaskan lebih dari 80% dari total varians. Dengan demikian, dengan melihat plot, kita akan menyimpan 2 variabel dari set data. Sekarang kita selesaikan dengan menggunakan fungsi autoplot() dari paket ggfortify.

Dengan menggunakan fungsi ini kita dapat dengan mudah melihat bagaimana titik-titik data dikelompokkan dalam kategori yang berbeda. Pertama, kita ingin melihat bagaimana titik-titik data dikelompokkan dalam kategori “asal”.

autoplot(pc, data=new.data, colour = "origin")