Hal pertama yang harus dilakukan adalah memasukan data yaitu data age(umur), debt(jumlah hutang), yearsemployed (lama bekerja), dan income (pendapatan). Pada tahap ini, kami menggunakan fungsi data.frame() untuk memasukkan data.
CreditCard <- data.frame(age=c(30.83, 58.67, 24.50, 27.83), debt=c(0.000, 4.460, 0.500, 1.540), yearsemployed=c(1.25,3.04,1.50,3.75), income=c(0,560,824,3))
Untuk menampilan data frame yang telah dibuat tadi, fungsi yang digunakan adalah print().
print(CreditCard)
## age debt yearsemployed income
## 1 30.83 0.00 1.25 0
## 2 58.67 4.46 3.04 560
## 3 24.50 0.50 1.50 824
## 4 27.83 1.54 3.75 3
Untuk mencari nilai eigen dan vektor eigen, yang harus dilakukan terlebih dahulu adalah mencari kovariansnya, karena mencari nilai dan vektor eigen harus pada matrix persegi (matriks dengan jumlah baris dan kolom sama).
Covariance_Matrix <- cov(CreditCard)
print(Covariance_Matrix)
## age debt yearsemployed income
## age 246.15983 28.767550 6.580750 1315.7125
## debt 28.76755 3.983567 1.526967 220.1150
## yearsemployed 6.58075 1.526967 1.454567 -119.4483
## income 1315.71250 220.115000 -119.448333 170547.5833
Setelah mendapat kovarians matriksnya, bisa dilanjutkan mencari nilai eigen dan vektor eigen.
nilai_eigen <- eigen(Covariance_Matrix)$values
vektor_eigen <- eigen(Covariance_Matrix)$vectors
print(nilai_eigen)
## [1] 1.705581e+05 2.393532e+02 1.712288e+00 -1.632702e-11
print(vektor_eigen)
## [,1] [,2] [,3] [,4]
## [1,] -0.0077252614 0.992899630 0.0928018443 0.0740166350
## [2,] -0.0012918442 0.114272856 -0.5786760906 -0.8075110078
## [3,] 0.0007000127 0.032113304 -0.8102601508 0.5851894853
## [4,] -0.9999690803 -0.007795793 -0.0005365682 0.0008810479
Selanjutnya mencari korelasi dari data yang sudah tersedia.
korelasi_matrix <- cor(Covariance_Matrix)
print(korelasi_matrix)
## age debt yearsemployed income
## age 1.0000000 0.9983333 -0.9771588 0.9859231
## debt 0.9983333 1.0000000 -0.9877926 0.9939287
## yearsemployed -0.9771588 -0.9877926 1.0000000 -0.9989342
## income 0.9859231 0.9939287 -0.9989342 1.0000000
Pembahasan dari hasil yang didapat adalah sebagai berikut :
1. Varian-Covarians Matriks
Matriks ini menunjukkan hubungan antar variable dalam dataset jika nilai variansnya tinggi berarti variabel tersebut menyebar luas. kovarians positif menunjukkan hubungan searah sedangkan kovarians negatif menunjukan sebaliknya atau berlawanan jika nilainya mendekati nol maka hubungan variabelnya tidak signifikan.
kovarians terbesar ditunjukkan antara income dan age yaitu 1315.7125 dimana income cenderung meningkat dengan bertambahnya usia.
kovarians antara yearsemployed dan income yaitu -119.4483 dimana dapat diartikan bahwa lama bekerja tidak selalu menunjukkan bahwa seseorang memiliki pendapatan yang lebih tinggi.
2. Nilai Eigen dan Vektor Eigen
Semakin besar nilai eigen, maka faktor tersebut memiliki pengaruh signifikan dalam menjelaskan variabilitas data. Jika nilai eigennya negatif atau mendekati nol artinya faktor tersebut tidak memiliki pengaruh signifikan. Dari hasil yang didapat sebelumnya menunjukan bahwa faktor pertama sampai keempat menunjukan variansi yang sangat besar dalam data, sedangkan kelima sampai kesembilan memiliki nilai negatif yang artinya tidak terlalu memiliki kotribusi dalam menjelaskan variansi data.
Nilai eigen yang terbesar terdapat pada komponen pertama dengan nilai 1.705581e+05 yang berarti variasi dalam data paling banyak dijelaskan pada dimensi tersebut.
Nilai eigen terkecil terdapat pada komponen keempat dengan nilai yaitu -1.632702e-11 yang berarti tidak memberikan informasi tambahan yang signifikan.
Pada vektor eigen, setiap nilai yang ada disuatu kolom menunjukan kontribusi masing-masing variabel tehadap kompenen tersebut. Misalkan kolom pertama [ ,1] mempunyai nilai tertinggi pada baris ke 9, berarti variabel ke 9 memiliki pengaruh yang paling tinggi pada komponen pertama.
PC1 (Komponen Utama 1) memiliki nilai terbesar pada variable income yaitu -0.999690 yang dimana variable ini merupakan faktor paling penting.
PC2 didominasi oleh age dengan nilai yaitu 0.929899 dimana age adalah faktor penting kedua dalam menjelaskan variasi.
PC3 lebih dipengaruhi oleh yearsemployed dengan nilai yaitu -0.810206 yang dimana lama bekerja termasuk signifikan.
PC4 dipengaruhi oleh debt dengan nilai yaitu -0.807511, tetapi nilainya sangat kecil sehingga tidak terlalu berkontribusi dalam variabilitas.
3. Korelasi Matrix
Pada setiap nilai dalam matriks merupakan koefisien korelasi pearson yang mempunyai nilai antara -1 hingga 1. Nilai 1 menujukkan korelasi sempurna atau mempunyai hubungan linier langsung. Nilai positif mempunyai arti bahwa hubungan searah yang berarti jika satu variabel meningkat, variabel lainnya juga meningkat sedangkan nilai negatif mempunyai arti bahwa hubungan berlawanan arah yang berarti jika satu variabel meningkat, variabel lainnya menurun. Pada nilai yang mendekati 0 mempunyai arti bahwa tidak ada hubungan linear yang kuat.
pada korelasi matrix hubungan antara age dan debt merupakan hubungan yang paling kuat dengan nilai korelasi yaitu 0.998333 dimana semakin tua seseorang, maka semakin besar kemungkinan seseorang memiliki hutang lebih banyak.
pada korelasi matrix antara yearsemployed dan income mempunyai hubungan negatif yaitu -0.9989342 dimana lama bekerja tidak selalu berbanding lurus dengan pendapatan(income).
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
path = "C:\\Users\\Acer\\Documents\\tugas-kelompok-anmul-2.csv"
mf<-read_csv(path, show_col_types = FALSE)
# Create data-frames
X<-mf %>% dplyr::select( `Sistolik`, `Diastolik`) %>%
scale()
Y<-mf %>% dplyr::select(`Tinggi`, `Berat`) %>%
scale()
cc <- cancor(X,Y)
str(cc)
## List of 5
## $ cor : num [1:2] 0.721 0.195
## $ xcoef : num [1:2, 1:2] 0.214 -0.595 0.692 -0.412
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:2] "Sistolik" "Diastolik"
## .. ..$ : NULL
## $ ycoef : num [1:2, 1:2] 0.228 -0.648 -1.123 0.945
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:2] "Tinggi" "Berat"
## .. ..$ : NULL
## $ xcenter: Named num [1:2] 3.98e-16 1.15e-15
## ..- attr(*, "names")= chr [1:2] "Sistolik" "Diastolik"
## $ ycenter: Named num [1:2] -1.11e-15 -4.28e-16
## ..- attr(*, "names")= chr [1:2] "Tinggi" "Berat"
print(cc)
## $cor
## [1] 0.7206701 0.1953755
##
## $xcoef
## [,1] [,2]
## Sistolik 0.2135035 0.6918022
## Diastolik -0.5952280 -0.4121620
##
## $ycoef
## [,1] [,2]
## Tinggi 0.2281666 -1.1233476
## Berat -0.6483502 0.9453105
##
## $xcenter
## Sistolik Diastolik
## 3.978299e-16 1.147230e-15
##
## $ycenter
## Tinggi Berat
## -1.110223e-15 -4.278985e-16
cc$cor
## [1] 0.7206701 0.1953755
CC1_X <- as.matrix(X) %*% cc$xcoef[, 1]
CC1_Y <- as.matrix(Y) %*% cc$ycoef[, 1]
CC2_X <- as.matrix(X) %*% cc$xcoef[, 2]
CC2_Y <- as.matrix(Y) %*% cc$ycoef[, 2]
cca_df <- mf %>%
mutate(CC1_X=CC1_X,
CC1_Y=CC1_Y,
CC2_X=CC2_X,
CC2_Y=CC2_Y) %>%
glimpse()
## Rows: 6
## Columns: 9
## $ No <dbl> 1, 2, 3, 4, 5, 6
## $ Sistolik <dbl> 120, 109, 130, 121, 135, 140
## $ Diastolik <dbl> 76, 80, 82, 78, 85, 87
## $ Tinggi <dbl> 165, 180, 170, 185, 180, 187
## $ Berat <dbl> 60, 80, 70, 85, 90, 87
## $ CC1_X <dbl[,1]> <matrix[6 x 1]>
## $ CC1_Y <dbl[,1]> <matrix[6 x 1]>
## $ CC2_X <dbl[,1]> <matrix[6 x 1]>
## $ CC2_Y <dbl[,1]> <matrix[6 x 1]>
cca_df %>%
ggplot(aes(x=CC1_X,y=CC1_Y, color=`Tinggi`))+
geom_point()
Dapat dilihat terdapat titik dengan warna yang berbeda, warna titik menunjukkan variasi nilai ‘Tinggi’ dengan warna yang lebih gelap untuk nilai yang lebih rendah begitupula sebaliknya warna lebih terang untuk nilai ‘Tinggi’ yang lebih tinggi.
Titik-titik tersebar di kuadran positif dan negatif, ini menunjukkan bahwa hubungan antara tekanan darah (diastolik, sistolik) dan ukuran tubuh (tinggi badan dan berat badan) tidak sepenuhnya linier.
# First Canonical Variate of X vs Latent Variable
p1<-cca_df %>%
ggplot(aes(x=`Tinggi`,y=CC1_X, color=`Tinggi`))+
geom_boxplot(width=0.5)+
geom_jitter(width=0.15)+
theme(legend.position="none")+
ggtitle("First Canonical Variate of X vs Tinggi")
# First Canonical Variate of Y vs Latent Variable
p2<-cca_df %>%
ggplot(aes(x=`Tinggi`,y=CC1_Y, color=`Tinggi`))+
geom_boxplot(width=0.5)+
geom_jitter(width=0.15)+
theme(legend.position="none")+
ggtitle("First Canonical Variate of Y vs Tinggi")
library(patchwork)
p1+p2
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## Warning: The following aesthetics were dropped during statistical transformation:
## colour.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
## Warning: Continuous x aesthetic
## ℹ did you forget `aes(group = ...)`?
## Warning: The following aesthetics were dropped during statistical transformation:
## colour.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
Outlier dengan CC1_X yang tinggi yaitu di atas 0.6 memiliki tinggi badan yang rendah yaitu 165 cm.
Outlier dengan CC1_X yang rendah yaitu di bawah -0.3 memiliki tinggi badan yang lebih tinggi yaitu 185 cm.
Outlier dengan CC1_Y yang tinggi yaitu di atas 0.4 memiliki tinggi badan yang rendah yaitu 165 cm.