Dalam konteks matematika, Angles and Orthogonality (sudut dan ortogonalitas) merujuk pada konsep hubungan antara sudut dan keberadaan sudut yang tegak lurus satu sama lain.
Sudut: Sudut adalah ukuran rotasi antara dua garis atau bidang yang berpotongan di titik tertentu. Sudut diukur dalam derajat atau radian. Sudut yang lebih kecil akan menghasilkan rotasi yang lebih kecil, sedangkan sudut yang lebih besar akan menghasilkan rotasi yang lebih besar. Sudut yang paling umum adalah sudut 90 derajat, yang juga dikenal sebagai sudut tegak lurus.
Ortogonalitas: Dalam matematika, dua objek dikatakan ortogonal jika mereka saling tegak lurus satu sama lain. Dua vektor atau dua garis dianggap ortogonal jika sudut antara mereka adalah 90 derajat. Dalam tiga dimensi, dua bidang dianggap ortogonal jika mereka saling tegak lurus.
Dalam PCA, komponen utama membentuk basis ruang vektor Rd, di mana d adalah jumlah variabel dalam set data input, dan mereka juga membentuk basis ortogonal. Ketika kita menggambar gambar cluster pada set data “USArrests” yang kita hitung melalui metode pengelompokan k-means pada bagian sebelumnya dan juga melalui metode pengelompokan hirarkis pada bahasan sebelumnya, kita menggunakan komponen utama pertama dan komponen utama kedua untuk memvisualisasikan data.
PCA sering digunakan untuk memvisualisasikan kumpulan data input dalam ruang vektor berdimensi rendah. Pada Contoh Kerja di bagian ini, kita akan menerapkan PCA pada set data “USArrests” sehingga kita dapat melihat semua komponen utama secara dekat. Pertama, mari kita plot set data pada komponen utama pertama dan kedua. Untuk melakukannya, kita perlu menggunakan paket ggplot2, ggfortify, dan gridExtra.
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
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.2.3
Lalu kita upload dan bersihkan data
df <- USArrests
df <- na.omit(df)
df <- scale(df)
pc <- prcomp(df, scale=TRUE)
autoplot(pc, data=df)
Kembali ke set data “USArrests”, perhatikan bahwa karena kita memiliki empat variabel, set data tersebut berada dalam ruang vektor V = R4. Untuk menghitung komponen utama, yang membentuk basis ortonormal untuk ruang vektor V = R4, kita akan menggunakan fungsi princomp() di R. “loadings” adalah keluaran dari fungsi princomp() dan merupakan sekumpulan komponen utama, yang merupakan basis ortonormal untuk V = R4:
pca<- princomp(data.frame(scale(df)))
pca$loadings
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4
## Murder 0.536 0.418 0.341 0.649
## Assault 0.583 0.188 0.268 -0.743
## UrbanPop 0.278 -0.873 0.378 0.134
## Rape 0.543 -0.167 -0.818
##
## 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
Kami menerapkan Orthogonal Distance Regression (ODR) untuk menemukan bidang linier yang “terbaik” di R2 untuk memprediksi “Gaji” dari “Hit” dan “AtBat” pemain bisbol berdasarkan kumpulan data “Pemukul” dari paket ISLR [24].
ODR adalah analisis regresi untuk kumpulan data di Rd yang mencoba menemukan bidang linier sedemikian rupa sehingga jumlah kuadrat jarak antara setiap titik data dan proyeksinya pada bidang linier diminimalkan pada semua bidang linier yang mungkin di Rd. Pertama, kami mengunggah paket ISLR dan kumpulan data.
Kemudian, karena ada beberapa nilai yang hilang, kita menggunakan fungsi na/omit() untuk menghapus semua nilai yang hilang:
library(ISLR)
data(Hitters)
D <- na.omit(Hitters)
Kemudian kita akan menggunakan fungsi odregress() dari paket pracma
library(pracma)
## Warning: package 'pracma' was built under R version 4.2.3
res <- odregress(as.matrix(D[,1:2]), as.matrix(D$Salary))
Fungsi as.matrix() membuat kumpulan data menjadi sebuah matriks numerik. Argumen pertama dari fungsi odregress() adalah sekumpulan variabel independen. Dalam hal ini adalah “AtBat” (kolom pertama dari data) dan “Hits” (kolom kedua dari data).
Argumen kedua dari fungsi ini adalah variabel dependen. Dalam hal ini adalah “Gaji”. Kemudian jika Anda mengetikkan “res$coeff” yang menghasilkan koefisien dari bidang linier:
res$coeff
## [1] -43.53176 150.65796 1861.91571
Ini berarti bahwa koefisien untuk “AtBat” adalah -43.53176 dan koefisien untuk “Hits” adalah 150.65796. Koefisien untuk intersep adalah 1861.91571. Ini berarti bahwa kita dapat memperkirakan “Gaji” sebagai
Gaji = -43.53176-AtBat + 150.65796-Hits + 1861.91571.