Kelompok 12-3SD2-APG

  1. Elisse Krisela Fabrianne (222212580)
  2. Nazlya Rahma Susanto (222212787)
  3. Yoga Regita Hamzah Ashari (222212924)

Pendahuluan

Analisis korelasi kanonik digunakan untuk mengidentifikasi dan mengukur hubungan antara dua set variabel. Analisis ini berguna ketika terdapat dua kelompok variabel yang masing-masing memiliki beberapa variabel dan hubungan antar kelompok ini ingin dipelajari.

Contoh Aplikasi:

Memuat Paket

Langkah pertama adalah memuat paket-paket yang diperlukan. Jika paket belum terinstal, gunakan perintah install.packages().

# Memastikan paket tersedia
if (!require("ggplot2")) install.packages("ggplot2")
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
if (!require("GGally")) install.packages("GGally")
## Loading required package: GGally
## Warning: package 'GGally' was built under R version 4.3.3
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
if (!require("CCA")) install.packages("CCA")
## Loading required package: CCA
## Warning: package 'CCA' was built under R version 4.3.3
## Loading required package: fda
## Warning: package 'fda' was built under R version 4.3.3
## Loading required package: splines
## Loading required package: fds
## Warning: package 'fds' was built under R version 4.3.3
## Loading required package: rainbow
## Warning: package 'rainbow' was built under R version 4.3.3
## Loading required package: MASS
## Loading required package: pcaPP
## Warning: package 'pcaPP' was built under R version 4.3.3
## Loading required package: RCurl
## Warning: package 'RCurl' was built under R version 4.3.3
## Loading required package: deSolve
## Warning: package 'deSolve' was built under R version 4.3.3
## 
## Attaching package: 'fda'
## The following object is masked from 'package:graphics':
## 
##     matplot
## Loading required package: fields
## Warning: package 'fields' was built under R version 4.3.3
## Loading required package: spam
## Warning: package 'spam' was built under R version 4.3.3
## Spam version 2.11-0 (2024-10-03) is loaded.
## Type 'help( Spam)' or 'demo( spam)' for a short introduction 
## and overview of this package.
## Help for individual functions is also obtained by adding the
## suffix '.spam' to the function name, e.g. 'help( chol.spam)'.
## 
## Attaching package: 'spam'
## The following objects are masked from 'package:base':
## 
##     backsolve, forwardsolve
## Loading required package: viridisLite
## 
## Try help(fields) to get started.
if (!require("CCP")) install.packages("CCP")
## Loading required package: CCP
# Memuat paket
library(ggplot2)
library(GGally)
library(CCA)
library(CCP)

Mengimpor Data

Dataset yang digunakan berisi data psikologi dan akademik dari 600 mahasiswa. Variabel psikologi meliputi locus of control, self-concept, dan motivation, sedangkan variabel akademik meliputi nilai tes membaca, menulis, matematika, sains, dan jenis kelamin.

# Mengimpor data
data_url <- "https://stats.idre.ucla.edu/stat/data/mmreg.csv"
mm <- read.csv(data_url)
colnames(mm) <- c("Control", "Concept", "Motivation", "Read", "Write", "Math", "Science", "Sex")

# Ringkasan data
summary(mm)
##     Control            Concept            Motivation          Read     
##  Min.   :-2.23000   Min.   :-2.620000   Min.   :0.0000   Min.   :28.3  
##  1st Qu.:-0.37250   1st Qu.:-0.300000   1st Qu.:0.3300   1st Qu.:44.2  
##  Median : 0.21000   Median : 0.030000   Median :0.6700   Median :52.1  
##  Mean   : 0.09653   Mean   : 0.004917   Mean   :0.6608   Mean   :51.9  
##  3rd Qu.: 0.51000   3rd Qu.: 0.440000   3rd Qu.:1.0000   3rd Qu.:60.1  
##  Max.   : 1.36000   Max.   : 1.190000   Max.   :1.0000   Max.   :76.0  
##      Write            Math          Science           Sex       
##  Min.   :25.50   Min.   :31.80   Min.   :26.00   Min.   :0.000  
##  1st Qu.:44.30   1st Qu.:44.50   1st Qu.:44.40   1st Qu.:0.000  
##  Median :54.10   Median :51.30   Median :52.60   Median :1.000  
##  Mean   :52.38   Mean   :51.85   Mean   :51.76   Mean   :0.545  
##  3rd Qu.:59.90   3rd Qu.:58.38   3rd Qu.:58.65   3rd Qu.:1.000  
##  Max.   :67.10   Max.   :75.50   Max.   :74.20   Max.   :1.000

Penjelasan Output:

Output menunjukkan statistik deskriptif dari setiap variabel, seperti nilai minimum, maksimum, rata-rata, dan median. Contohnya, median variabel Control adalah 0.21, dengan rentang nilai dari -2.23 hingga 1.36.

Membagi Data

Dataset dibagi menjadi dua kelompok variabel:

  1. Variabel psikologi: Control, Concept, Motivation.
  2. Variabel akademik: Read, Write, Math, Science, Sex.
# Membagi data ke dalam dua set
psych <- mm[, 1:3]  # Set psikologi
acad <- mm[, 4:8]   # Set akademik

Visualisasi Korelasi dalam Set

Korelasi dalam setiap set divisualisasikan menggunakan ggpairs untuk memahami hubungan antar variabel.

Korelasi Antar Variabel dalam set Psikologi

ggpairs(psych, title = "Korelasi Antar Variabel dalam set Psikologi")

Penjelasan Grafik:

  1. Histogram pada diagonal menunjukkan distribusi nilai masing-masing variabel:
    • Control: Data mendekati distribusi normal dengan nilai rata-rata di sekitar 0.
    • Concept: Distribusi serupa dengan Control, tetapi lebih tersebar.
    • Motivation: Data berbentuk bimodal, menunjukkan ada dua kelompok utama pada variabel ini.
  2. Korelasi antar variabel:
    • Control dan Concept memiliki korelasi 0.171, menunjukkan hubungan positif yang sangat lemah.
    • Control dan Motivation memiliki korelasi 0.245, juga lemah namun signifikan.
    • Concept dan Motivation memiliki korelasi 0.289, menunjukkan hubungan positif yang sedikit lebih kuat dibandingkan pasangan lainnya.
  3. Scatter plot:
    • Plot antara pasangan variabel menunjukkan pola hubungan. Contohnya, antara Concept dan Motivation, terdapat kecenderungan hubungan linear meskipun lemah.

Korelasi Antar Variabel dalam set Akademik

ggpairs(acad, title = "Korelasi Antar Variabel dalam set Akademik")

Penjelasan Grafik:

  1. Histogram pada diagonal menunjukkan distribusi nilai masing-masing variabel:
    • Read hingga Science memiliki distribusi mendekati normal, tetapi Sex menunjukkan data biner (kategori).
  2. Korelasi antar variabel:
    • Korelasi tertinggi ditemukan antara Read dan Math (sekitar 0.68), menunjukkan hubungan yang cukup kuat.
    • Sex memiliki korelasi lemah dengan variabel lainnya, karena ini adalah variabel kategori.
  3. Scatter plot:
    • Plot antara Read dan Math menunjukkan pola hubungan linear yang cukup jelas, sesuai dengan nilai korelasi tinggi mereka.

Kesimpulan dari Grafik:

  • Pada kedua set (psikologi dan akademik), sebagian besar hubungan antar variabel lemah hingga sedang.
  • Variabel dalam set akademik memiliki korelasi yang lebih tinggi dibandingkan variabel dalam set psikologi.

Korelasi Antar Set

Korelasi antara variabel dalam set psikologi dan set akademik dihitung menggunakan fungsi matcor.

# Korelasi antar set
cor_results <- matcor(psych, acad)
cor_results
## $Xcor
##              Control   Concept Motivation
## Control    1.0000000 0.1711878  0.2451323
## Concept    0.1711878 1.0000000  0.2885707
## Motivation 0.2451323 0.2885707  1.0000000
## 
## $Ycor
##                Read     Write       Math    Science         Sex
## Read     1.00000000 0.6285909  0.6792757  0.6906929 -0.04174278
## Write    0.62859089 1.0000000  0.6326664  0.5691498  0.24433183
## Math     0.67927568 0.6326664  1.0000000  0.6495261 -0.04821830
## Science  0.69069291 0.5691498  0.6495261  1.0000000 -0.13818587
## Sex     -0.04174278 0.2443318 -0.0482183 -0.1381859  1.00000000
## 
## $XYcor
##              Control     Concept Motivation        Read      Write       Math
## Control    1.0000000  0.17118778 0.24513227  0.37356505 0.35887684  0.3372690
## Concept    0.1711878  1.00000000 0.28857075  0.06065584 0.01944856  0.0535977
## Motivation 0.2451323  0.28857075 1.00000000  0.21060992 0.25424818  0.1950135
## Read       0.3735650  0.06065584 0.21060992  1.00000000 0.62859089  0.6792757
## Write      0.3588768  0.01944856 0.25424818  0.62859089 1.00000000  0.6326664
## Math       0.3372690  0.05359770 0.19501347  0.67927568 0.63266640  1.0000000
## Science    0.3246269  0.06982633 0.11566948  0.69069291 0.56914983  0.6495261
## Sex        0.1134108 -0.12595132 0.09810277 -0.04174278 0.24433183 -0.0482183
##                Science         Sex
## Control     0.32462694  0.11341075
## Concept     0.06982633 -0.12595132
## Motivation  0.11566948  0.09810277
## Read        0.69069291 -0.04174278
## Write       0.56914983  0.24433183
## Math        0.64952612 -0.04821830
## Science     1.00000000 -0.13818587
## Sex        -0.13818587  1.00000000

Penjelasan Output:

Tabel ini menampilkan korelasi dalam setiap set (diagonal) dan antar set (off-diagonal). Contohnya, Control memiliki korelasi sebesar 0.37 dengan Read, menunjukkan hubungan yang lemah namun signifikan.

Analisis Korelasi Kanonik

Langkah utama adalah menjalankan analisis korelasi kanonik menggunakan fungsi cc dari paket CCA.

# Melakukan analisis korelasi kanonik
cc1 <- cc(psych, acad)

# Korelasi kanonik
cc1$cor
## [1] 0.4640861 0.1675092 0.1039911

Penjelasan Output:

Hasil menunjukkan tiga korelasi kanonik. Dimensi pertama memiliki korelasi kanonik tertinggi, yaitu 0.46, menunjukkan hubungan kuat antara kombinasi variabel dari kedua set. Dimensi berikutnya memiliki korelasi yang lebih kecil.

Koefisien Kanonik dan Kombinasi Linier

Koefisien kanonik asli menunjukkan kontribusi setiap variabel terhadap variat kanonik (kombinasi linier).

# Menampilkan koefisien kanonik mentah dengan nama variabel
rownames(cc1$xcoef) <- colnames(psych)
rownames(cc1$ycoef) <- colnames(acad)

cc1$xcoef  # Koefisien kanonik untuk set psikologi
##                  [,1]       [,2]       [,3]
## Control    -1.2538339 -0.6214776 -0.6616896
## Concept     0.3513499 -1.1876866  0.8267210
## Motivation -1.2624204  2.0272641  2.0002283
cc1$ycoef  # Koefisien kanonik untuk set akademik
##                 [,1]         [,2]         [,3]
## Read    -0.044620600 -0.004910024  0.021380576
## Write   -0.035877112  0.042071478  0.091307329
## Math    -0.023417185  0.004229478  0.009398182
## Science -0.005025152 -0.085162184 -0.109835014
## Sex     -0.632119234  1.084642326 -1.794647036

Penjelasan Output:

Koefisien kanonik memberikan informasi tentang bagaimana setiap variabel berkontribusi terhadap variat kanonik. Koefisien ini mirip dengan koefisien regresi. Contohnya, untuk variabel Read, peningkatan satu unit akan mengurangi skor pada variat kanonik pertama sebesar 0.0446.

Variat kanonik psikologi (X variables):

Variat kanonik akademik (Y variables):

Loadings Kanonik

Loadings kanonik menunjukkan hubungan antara variabel asli dengan variat kanonik.

# Menghitung loadings kanonik
cc2 <- comput(psych, acad, cc1)

rownames(cc2$corr.X.xscores) <- colnames(psych)
rownames(cc2$corr.Y.xscores) <- colnames(acad) #cross loading
rownames(cc2$corr.X.yscores) <- colnames(psych) #cross loading
rownames(cc2$corr.Y.yscores) <- colnames(acad)

cc2[3:6]
## $corr.X.xscores
##                   [,1]       [,2]       [,3]
## Control    -0.90404631 -0.3896883 -0.1756227
## Concept    -0.02084327 -0.7087386  0.7051632
## Motivation -0.56715106  0.3508882  0.7451289
## 
## $corr.Y.xscores
##               [,1]        [,2]        [,3]
## Read    -0.3900402 -0.06010654  0.01407661
## Write   -0.4067914  0.01086075  0.02647207
## Math    -0.3545378 -0.04990916  0.01536585
## Science -0.3055607 -0.11336980 -0.02395489
## Sex     -0.1689796  0.12645737 -0.05650916
## 
## $corr.X.yscores
##                    [,1]        [,2]        [,3]
## Control    -0.419555307 -0.06527635 -0.01826320
## Concept    -0.009673069 -0.11872021  0.07333073
## Motivation -0.263206910  0.05877699  0.07748681
## 
## $corr.Y.yscores
##               [,1]        [,2]       [,3]
## Read    -0.8404480 -0.35882541  0.1353635
## Write   -0.8765429  0.06483674  0.2545608
## Math    -0.7639483 -0.29794884  0.1477611
## Science -0.6584139 -0.67679761 -0.2303551
## Sex     -0.3641127  0.75492811 -0.5434036

Penjelasan Output:

Loadings ini adalah korelasi antara variabel asli dengan variat kanonik. Misalnya, variabel Control memiliki korelasi -0.90 dengan variat kanonik pertama, menunjukkan hubungan yang kuat.

Dimensi sebagai Kombinasi Linier

Dimensi dalam analisis korelasi kanonik adalah pasangan kombinasi linier antara dua set variabel yang menunjukkan hubungan maksimal. Jika suatu dimensi signifikan: - Kombinasi linier tersebut secara statistik menjelaskan hubungan yang berarti.

Fungsi Variat Kanonik:

# Koefisien kanonik dengan nama variabel
rownames(cc1$xcoef) <- colnames(psych)
rownames(cc1$ycoef) <- colnames(acad)

cat("Variat kanonik psikologi (X variables):\n")
## Variat kanonik psikologi (X variables):
for (i in 1:ncol(cc1$xcoef)) {
  cat(paste0("u", i, " = ", paste0(round(cc1$xcoef[, i], 4), " * ", rownames(cc1$xcoef), collapse = " + "), "\n"))
}
## u1 = -1.2538 * Control + 0.3513 * Concept + -1.2624 * Motivation
## u2 = -0.6215 * Control + -1.1877 * Concept + 2.0273 * Motivation
## u3 = -0.6617 * Control + 0.8267 * Concept + 2.0002 * Motivation
cat("\nVariat kanonik akademik (Y variables):\n")
## 
## Variat kanonik akademik (Y variables):
for (i in 1:ncol(cc1$ycoef)) {
  cat(paste0("v", i, " = ", paste0(round(cc1$ycoef[, i], 4), " * ", rownames(cc1$ycoef), collapse = " + "), "\n"))
}
## v1 = -0.0446 * Read + -0.0359 * Write + -0.0234 * Math + -0.005 * Science + -0.6321 * Sex
## v2 = -0.0049 * Read + 0.0421 * Write + 0.0042 * Math + -0.0852 * Science + 1.0846 * Sex
## v3 = 0.0214 * Read + 0.0913 * Write + 0.0094 * Math + -0.1098 * Science + -1.7946 * Sex

Uji Signifikansi Dimensi

Uji signifikansi dilakukan untuk menentukan jumlah dimensi yang signifikan.

# Uji signifikansi
rho <- cc1$cor
n <- dim(psych)[1]
p <- length(psych)
q <- length(acad)

# Menggunakan Wilks' Lambda
p.asym(rho, n, p, q, tstat = "Wilks")
## Wilks' Lambda, using F-approximation (Rao's F):
##               stat    approx df1      df2     p.value
## 1 to 3:  0.7543611 11.715733  15 1634.653 0.000000000
## 2 to 3:  0.9614300  2.944459   8 1186.000 0.002905057
## 3 to 3:  0.9891858  2.164612   3  594.000 0.091092180

Penjelasan tentang Dimensi dan Signifikansinya:

Koefisien Kanonik Terstandar

Koefisien ini memungkinkan perbandingan antar variabel dengan skala berbeda.

# Koefisien kanonik terstandar
s1 <- diag(sqrt(diag(cov(psych))))
std_xcoef <- s1 %*% cc1$xcoef

s2 <- diag(sqrt(diag(cov(acad))))
std_ycoef <- s2 %*% cc1$ycoef

rownames(std_xcoef) <- colnames(psych)
rownames(std_ycoef) <- colnames(acad)

std_xcoef
##                  [,1]       [,2]       [,3]
## Control    -0.8404196 -0.4165639 -0.4435172
## Concept     0.2478818 -0.8379278  0.5832620
## Motivation -0.4326685  0.6948029  0.6855370
std_ycoef
##                [,1]        [,2]        [,3]
## Read    -0.45080116 -0.04960589  0.21600760
## Write   -0.34895712  0.40920634  0.88809662
## Math    -0.22046662  0.03981942  0.08848141
## Science -0.04877502 -0.82659938 -1.06607828
## Sex     -0.31503962  0.54057096 -0.89442764

Penjelasan Output:

Koefisien ini menunjukkan kontribusi variabel terhadap variat kanonik setelah menyesuaikan skala variabel. Misalnya, Control memiliki kontribusi besar (-0.84) pada dimensi pertama.

Kesimpulan

Sekian dan Terima kasih :)