Anggota kelompok 4

  1. Dea Kurnia Wati (23031554001)
  2. Muhammad Ariq Hibatullah (23031554064)
  3. Firdaini Azmi (23031554071)

ASSIGNMENT 1

Memasukkan data

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

Variance-Covariance Matrix

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

Nilai Eigen dan Vektok Eigen

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

Korelasi Matriks

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

Hasil dan pembahasan

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.

2. Nilai Eigen dan Vektor Eigen

  1. Nilai 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.

  1. Vektor Eigen

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.

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.

ASSIGNMENT 3

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

# 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?