Ilustrasi

Ingin mengetahui apakah ada hubungan antara aspek kesehatan lingkungan dengan penyakit yang ditularkan oleh udara. Peubah yang digunakan adalah aspek kesehatan lingkungan yang terdiri atas kualitas fisik air minum baik, kepadatan hunian besar dari 8 m2/orang, lantai terluas bukan tanah, pencahayaan ruang tidur cukup, dan rumah tidak berada pada lingkungan kumuh, dan penyakit yang ditularkan oleh udara terdiri atas ISPA, pneumonia, dan TB paru.

Data

Data yang digunakan dalam analisis korelasi kanonik ini yaitu Prevalensi Penyakit yang Menyebar melalui Udara dan Kalkulasi Data Persentase Aspek Kesehatan Lingkungan di 33 Provinsi Indonesia (Riskesdas 2013).

Peubah

Peubah yang digunakan sebagai berikut :

  • Peubah Y adalah penyakit yang ditularkan oleh udara
    • Y1 = ISPA
    • Y2 = Pneumonia
    • Y3 = TB Paru
  • Peubah X adalah aspek kesehatan lingkungan
    • X1 = Kualitas fisik air minum
    • X2 = Kepadatan hunian
    • X3 = Lantai bukan tanah
    • X4 = Pencahayaan ruang tidur
    • X5 = Bukan pemukiman kumuh

Packages

Terlebih dahulu lakukan install packages berikut dan load.

library(CCA); library(candisc) ; library(readr)
## Warning: package 'CCA' was built under R version 4.0.5
## Loading required package: fda
## Warning: package 'fda' was built under R version 4.0.3
## Loading required package: splines
## Loading required package: Matrix
## Loading required package: fds
## Warning: package 'fds' was built under R version 4.0.3
## Loading required package: rainbow
## Warning: package 'rainbow' was built under R version 4.0.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.0.4
## Loading required package: pcaPP
## Warning: package 'pcaPP' was built under R version 4.0.3
## Loading required package: RCurl
## Warning: package 'RCurl' was built under R version 4.0.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.0.3
## Loading required package: spam
## Warning: package 'spam' was built under R version 4.0.3
## Loading required package: dotCall64
## Warning: package 'dotCall64' was built under R version 4.0.3
## Loading required package: grid
## Spam version 2.6-0 (2020-12-14) 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 object is masked from 'package:Matrix':
## 
##     det
## The following objects are masked from 'package:base':
## 
##     backsolve, forwardsolve
## See https://github.com/NCAR/Fields for
##  an extensive vignette, other supplements and source code
## Warning: package 'candisc' was built under R version 4.0.5
## Loading required package: car
## Warning: package 'car' was built under R version 4.0.4
## Loading required package: carData
## Loading required package: heplots
## Warning: package 'heplots' was built under R version 4.0.5
## 
## Attaching package: 'candisc'
## The following object is masked from 'package:stats':
## 
##     cancor
# Import Data
datacan <- read.csv("D:/1. Kuliah S2 (STATISTIKA DAN SAINS DATA)/Materi Kuliah/SEMESTER 2/Materi kuliah/2. Analisis Peubah Ganda/STA541 (S2 now)/Pertemuan 13/Kuliah/Tugas kanonik/dataprov.csv")

# Melihat sebagian data (6 data teratas)
head(datacan)
##   Provinsi   Y1  Y2  Y3   X1   X2   X3   X4   X5
## 1     Aceh 20.1 1.8 1.3 88.1 86.2 94.1 71.7 87.1
## 2    Sumut 10.9 1.1 1.0 91.9 84.2 97.9 74.5 87.3
## 3   Sumbar 16.1 1.4 1.2 94.6 81.9 99.1 79.8 79.6
## 4     Riau 10.9 1.0 1.1 95.4 87.0 98.9 79.5 89.3
## 5    Jambi  9.8 1.7 1.8 94.6 92.6 97.8 78.9 85.8
## 6   Sumsel 11.3 0.9 1.3 93.2 81.5 95.7 73.9 81.6
str(datacan)
## 'data.frame':    33 obs. of  9 variables:
##  $ Provinsi: chr  "Aceh" "Sumut" "Sumbar" "Riau" ...
##  $ Y1      : num  20.1 10.9 16.1 10.9 9.8 11.3 13 12 9.2 8.9 ...
##  $ Y2      : num  1.8 1.1 1.4 1 1.7 0.9 1.3 1.2 0.9 1.3 ...
##  $ Y3      : num  1.3 1 1.2 1.1 1.8 1.3 1.4 1.2 1.4 1.1 ...
##  $ X1      : num  88.1 91.9 94.6 95.4 94.6 93.2 91.2 96.2 97 98.3 ...
##  $ X2      : num  86.2 84.2 81.9 87 92.6 81.5 87.3 93.1 92.8 86.2 ...
##  $ X3      : num  94.1 97.9 99.1 98.9 97.8 95.7 97.1 91.7 99.7 99.7 ...
##  $ X4      : num  71.7 74.5 79.8 79.5 78.9 73.9 83.4 75.2 81.8 77.1 ...
##  $ X5      : num  87.1 87.3 79.6 89.3 85.8 81.6 90.5 90.8 89.1 74.2 ...
# Mendefinisikan gugus peubah X dan Y
X <- datacan[,5:9]
Y <- datacan[,2:4]
datagb <- cbind(Y,X)
# Uji Asumsi Multivariate Normal
XX <- as.matrix(datagb) # membentuk matriks n x p
center <- colMeans(XX) # titik pusat
n <- nrow(datagb)
p <- ncol(datagb)
cov <- cov(XX)
d <- mahalanobis(XX,center,cov) #jarak mahalanobis
qqplot(qchisq(ppoints(n),df=p),d, xlim=c(1,20),pch=20,col="blue", 
 ylim=c(0, 30),main="QQ-Plot Data", ylab="Jarak Mahalanobis")
abline(a=0,b=1,col="red")

Hasil Q-Q Plot tersebut menunjukkan bahwa secara deskriptif data menyebar normal ganda karena plot datanya atau titik biru masih berada di sekitar garis lurus.

# Uji multikolinieritas 
library(car) 
model1=lm(Y1+Y2+Y3~X1+X2+X3+X4+X5,data=datagb) 
vif(model1)
##       X1       X2       X3       X4       X5 
## 1.603927 1.507813 1.361306 1.563561 1.417949

Terlihat nilai VIF dari masing masing peubah prediktornya di bawah 10 sehingga tidak terjadi multikolineartitas antar peubah prediktornya.

# Matriks korelasi
correl <- matcor(X,Y)
correl 
## $Xcor
##           X1        X2         X3        X4         X5
## X1 1.0000000 0.5488815  0.3935618 0.3214881  0.0864434
## X2 0.5488815 1.0000000  0.2663345 0.3278409  0.1939119
## X3 0.3935618 0.2663345  1.0000000 0.2887693 -0.1372445
## X4 0.3214881 0.3278409  0.2887693 1.0000000  0.4532025
## X5 0.0864434 0.1939119 -0.1372445 0.4532025  1.0000000
## 
## $Ycor
##           Y1        Y2        Y3
## Y1 1.0000000 0.5703144 0.3326289
## Y2 0.5703144 1.0000000 0.6130461
## Y3 0.3326289 0.6130461 1.0000000
## 
## $XYcor
##            X1          X2          X3         X4         X5         Y1
## X1  1.0000000  0.54888149  0.39356182  0.3214881  0.0864434 -0.4131411
## X2  0.5488815  1.00000000  0.26633449  0.3278409  0.1939119 -0.2701268
## X3  0.3935618  0.26633449  1.00000000  0.2887693 -0.1372445 -0.4427163
## X4  0.3214881  0.32784087  0.28876925  1.0000000  0.4532025 -0.3538002
## X5  0.0864434  0.19391194 -0.13724449  0.4532025  1.0000000 -0.2536615
## Y1 -0.4131411 -0.27012682 -0.44271635 -0.3538002 -0.2536615  1.0000000
## Y2 -0.4517530 -0.38963178 -0.24837377 -0.5714139 -0.4030721  0.5703144
## Y3 -0.1794820 -0.03259112 -0.08706335 -0.3095777 -0.3558982  0.3326289
##            Y2          Y3
## X1 -0.4517530 -0.17948198
## X2 -0.3896318 -0.03259112
## X3 -0.2483738 -0.08706335
## X4 -0.5714139 -0.30957767
## X5 -0.4030721 -0.35589817
## Y1  0.5703144  0.33262890
## Y2  1.0000000  0.61304612
## Y3  0.6130461  1.00000000
# Visualisasi korelasi gugus peubah X, Y dan XY 
img.matcor(correl, type=2) 

# ANALISIS KORELASI KANONIK
ccan <- candisc::cancor(X,Y)
summary(ccan)
## 
## Canonical correlation analysis of:
##   5   X  variables:  X1, X2, X3, X4, X5 
##   with    3   Y  variables:  Y1, Y2, Y3 
## 
##     CanR  CanRSQ  Eigen percent   cum                          scree
## 1 0.6911 0.47763 0.9143  76.100  76.1 ******************************
## 2 0.3929 0.15440 0.1826  15.198  91.3 ******                        
## 3 0.3077 0.09466 0.1046   8.702 100.0 ***                           
## 
## Test of H0: The canonical correlations in the 
## current row and all that follow are zero
## 
##      CanR LR test stat approx F numDF  denDF Pr(> F)  
## 1 0.69111      0.39990  1.82223    15 69.415 0.04855 *
## 2 0.39294      0.76555  0.92893     8 52.000 0.50081  
## 3 0.30767      0.90534  0.94103     3 27.000 0.43455  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Raw canonical coefficients
## 
##    X  variables: 
##        Xcan1     Xcan2     Xcan3
## X1 -0.100334 -0.043076  0.034750
## X2 -0.012807  0.067838 -0.080102
## X3 -0.043025 -0.173439 -0.067497
## X4 -0.045958  0.070987  0.024700
## X5 -0.055803 -0.092624  0.103588
## 
##    Y  variables: 
##       Ycan1    Ycan2    Ycan3
## Y1  0.10469  0.33316  0.14801
## Y2  1.92285 -2.66708  0.45958
## Y3 -0.31216  1.40139 -2.72671

Berdasarkan hasil di atas, Korelasi kanonik pertama (korelasi antara pasangan pertama dari kanonik) adalah sebesar 0.6911 sedangkan squared canonical correlation adalah 0.47763. Nilai ini merepresentasikan korelasi tertinggi yang mungkin terjadi antara beberapa kombinasi linear dari penyakit yang ditularkan oleh udara dan beberapa kombinasi linear aspek kesehatan lingkungan. Kontribusi keragaman yang dijelaskan oleh fungsi kanonik terlihat fungsi kanonik pertama menjelaskan keragaman total sebesar 76.10%. Sedangkan yang kedua 15.198%, dan ketiga 8.70%. Berdasarkan proporsi keragaman tersebut dengan menggunakan kriteria batasan minimal kontribusi keragaman 70%, maka cukup mengambil fungsi kanonik yang pertama saja karena keragaman yang mampu diterangkan sudah cukup besar. Dilihat dari Uji rasio kemungkinan (uji parsial) di atas juga menunjukkan bahwa korelasi kanonik yang pertama berbeda nyata dengan nol pada taraf nyata α = 5% (Pr < α) sehingga dapat disimpulkan bahwa pasangan peubah kanonik pertama memiliki korelasi yang signifikan dan dapat digunakan untuk menjelaskan hubungan antar gugus peubah penyakit yang ditularkan oleh udara dan peubah aspek kesehatan lingkungan.

# Korelasi kanonik
res.cc <- cc(X,Y) 
# Plot korelasi
plot(res.cc$cor,type="b") 

Terlihat hanya satu fungsi kanonik yang baik untuk digunakan.

# Menampilkan nilai korelasi kanoniknya 
res.cc$cor 
## [1] 0.6911060 0.3929432 0.3076713
# Menampilkan penaksir koefisien bagi peubah X 
res.cc$xcoef 
##           [,1]        [,2]        [,3]
## X1 -0.10033410 -0.04307616  0.03475000
## X2 -0.01280690  0.06783816 -0.08010208
## X3 -0.04302519 -0.17343938 -0.06749695
## X4 -0.04595845  0.07098707  0.02470047
## X5 -0.05580346 -0.09262443  0.10358757
# Menampilkan penaksir koefisien bagi peubah Y 
res.cc$ycoef 
##          [,1]       [,2]       [,3]
## Y1  0.1046860  0.3331624  0.1480144
## Y2  1.9228504 -2.6670802  0.4595843
## Y3 -0.3121624  1.4013879 -2.7267095

Output di atas menunjukkan koefisien kanonik untuk fungsi kanonik prediktor (aspek kesehatan lingkungan) dan fungsi kanonik respon (penyakit yang ditularkan oleh udara) yang tetap menampilkan 3 variate, akan tetapi yang diperhatikan cukup 1 saja karena sudah ditentukan pada penjelasan sebelumnya. Dapat dilihat bahwa untuk peubah X yang memberikan kontribusi terbesar sampai terkecil yaitu kualitas fisik air minum [X1], bukan pemukiman kumuh [X5], pencahayaan ruang tidur [X4], lantai bukan tanah [X3], dan kepadatan hunian [X2]. Sedangkan untuk peubah Y yang memberikan kontribusi terbesar sampai terkecil yaitu prevalensi pneumonia [Y2], prevalensi TB paru [Y3] dan prevalensi ISPA [Y1].

# Menampilkan koordinat bagi variat kanonik
res.cc$scores 
## $xscores
##             [,1]         [,2]        [,3]
##  [1,]  0.4792937  0.109755336 -0.07567323
##  [2,] -0.1797021 -0.668441114  0.04997133
##  [3,] -0.2866716 -0.059462127 -0.41967700
##  [4,] -0.9511551 -0.633013717  0.21049103
##  [5,] -0.6723916  0.253717475 -0.56901073
##  [6,]  0.1647524 -0.040669476 -0.14535418
##  [7,] -0.7023507  0.046148763  0.38264187
##  [8,] -0.6858470  0.550920575  0.28481572
##  [9,] -1.3149336 -0.265430620 -0.21640503
## [10,] -0.3133661  0.277303358 -1.30210327
## [11,]  1.2452121 -1.902452959 -0.79120133
## [12,]  0.8145941  0.097518626 -1.63615513
## [13,]  0.3417506  2.507834324 -0.21327487
## [14,] -0.7396526  0.320109795 -0.33280797
## [15,]  0.3054178  1.422085805 -0.33627227
## [16,]  0.6970233  0.068183658 -1.46759810
## [17,] -1.2489374 -0.563875191  0.94509381
## [18,]  1.0940467 -1.210723153 -0.61770318
## [19,]  2.1828277  2.231823300  2.73711482
## [20,] -0.4978663 -0.099878364 -0.35791621
## [21,] -0.2074570  0.052404386 -0.22217888
## [22,]  0.7920012  1.076470383 -1.71336637
## [23,] -0.5691061  0.353097103 -0.75416118
## [24,] -0.7152640  0.007725803  0.91252754
## [25,] -0.1253150 -0.471962925  0.55056820
## [26,]  0.1072380 -0.761339468 -0.71595867
## [27,] -0.0330071 -0.610627310 -0.10181835
## [28,] -1.2423853 -0.763083791  2.27225511
## [29,] -0.3229580 -2.023634137  0.92827863
## [30,] -0.1756532  0.030636962  1.46347630
## [31,] -0.6589853  1.686348121  0.45674790
## [32,] -0.1294803  0.295704238 -0.28541055
## [33,]  3.5483276 -1.313193655  1.08006426
## 
## $yscores
##              [,1]         [,2]         [,3]
##  [1,]  1.52057530  1.235216190  1.557361472
##  [2,] -0.69488230 -0.383337924  0.691932986
##  [3,]  0.36390745  0.829259968  1.054141171
##  [4,] -0.91838358  0.023508891  0.373303610
##  [5,]  0.09394349 -1.228954324 -1.376499842
##  [6,] -1.13122671  0.703759451 -0.158790960
##  [7,] -0.21533661  0.343442202  0.003996259
##  [8,] -0.44987516 -0.003289742  0.355365342
##  [9,] -1.38228350  0.144257248 -0.742292112
## [10,] -0.55090041 -1.442939932  0.215150130
## [11,]  0.56888067 -0.596123923 -0.930902578
## [12,]  0.99551471 -0.756187508 -1.008046599
## [13,]  1.28844589 -0.063420354 -0.365339694
## [14,] -0.96018268  1.725439700 -3.565637989
## [15,]  0.05684694  1.209664387  0.388833656
## [16,]  0.62380214  1.096486605 -0.172892393
## [17,] -1.13564566  0.849897234  0.746476398
## [18,]  0.22138691 -0.263480159  0.398186941
## [19,]  0.71965022  1.721924549  1.785656707
## [20,] -0.83002629  0.383988518 -0.641818874
## [21,]  0.01939149  0.930261653 -0.575639456
## [22,] -0.78872057 -0.203009051  0.102186776
## [23,] -0.15675442  0.929564919  0.769805615
## [24,]  0.93856321 -1.016718422  0.051480199
## [25,] -0.13511408 -2.116494769  0.579737934
## [26,]  0.50108147 -1.370146089  0.570356047
## [27,]  0.24232411 -0.196847684  0.427789818
## [28,] -0.64915762 -1.116473277  0.530671278
## [29,] -0.96101620 -1.070106089  1.227164386
## [30,]  0.00835423  0.176682894  0.094359003
## [31,] -1.75291382 -0.635585788 -0.583341728
## [32,]  1.56100855  1.282976846 -0.437035562
## [33,]  2.98874283 -1.123216220 -1.365717944
## 
## $corr.X.xscores
##          [,1]        [,2]       [,3]
## X1 -0.7179710 -0.04509045 -0.2800464
## X2 -0.5999983  0.37485925 -0.5534055
## X3 -0.5017390 -0.59461059 -0.5292426
## X4 -0.8107438  0.28144045  0.2070808
## X5 -0.5483616 -0.01413874  0.6405344
## 
## $corr.Y.xscores
##         [,1]        [,2]        [,3]
## Y1 0.5346582  0.23388083  0.06686810
## Y2 0.6600104 -0.08045735 -0.06601579
## Y3 0.3453391  0.08475591 -0.25811127
## 
## $corr.X.yscores
##          [,1]         [,2]        [,3]
## X1 -0.4961940 -0.017717984 -0.08616225
## X2 -0.4146624  0.147298378 -0.17026699
## X3 -0.3467548 -0.233648166 -0.16283275
## X4 -0.5603099  0.110590101  0.06371282
## X5 -0.3789759 -0.005555721  0.19707404
## 
## $corr.Y.yscores
##         [,1]       [,2]       [,3]
## Y1 0.7736270  0.5952027  0.2173362
## Y2 0.9550060 -0.2047557 -0.2145660
## Y3 0.4996905  0.2156951 -0.8389190

Terlihat bahwa peubah Y yang berhubungan paling erat dengan fungsi kanonik pertama adalah Pneumonia (Y2). Sedangkan peubah X yang berhubungan paling erat dengan fungsi kanonik pertama yaitu Pencahayaan ruang tidur (X4) kemudian Kualitas fisik air minum (X1). Untuk korelasi silang antar peubah-peubah respon terhadap fungsi kanonik peubah prediktor yang berhubungan paling erat dengan fungsi kanonik pertama adalah Pneumonia (Y2). Sedangkan korelasi silang antar peubah-peubah prediktor terhadap fungsi kanonik peubah respon yang berhubungan paling erat dengan fungsi kanonik pertama adalah Pencahayaan ruang tidur (X4).