Anda di halaman 1dari 78

Praktikum Analisis Data Multivariat II Menggunakan Software

R
MODUL I
ANALISIS KOMPONEN UTAMA

1. Analisis Komponen Utama


Analisis komponen utama digunakan untuk menjelaskan struktur matriks varians-
kovarians dari suatu set variabel melalui kombinasi linier dari variabel-variabel tersebut. Secara
umum komponen utama dapat berguna untuk reduksi dan interpretasi variabel-variabel.
Misalkan saja terdapat p buah variabel yang terdiri atas n buah objek. Misalkan pula
bahwa dari p buah variabel tersebut dibuat sebanyak k buah komponen utama (dengan k <= p)
yang merupakan kombinasi linier atas p buah variabel tersebut. k komponen utama tersebut
dapat menggantikan p buah variabel yang membentuknya tanpa kehilangan banyak informasi
mengenai keseluruhan variabel. Umumnya analisis komponen utama merupakan analisis
intermediate yang berarti hasil komponen utama dapat digunakan untuk analisis selanjutnya.
Dalam bentuk matematis, katakan saja bahwa Y merupakan kombinasi linier dari
variabel-variabel X1, X2, … , Xp yang dapat dinyatakan sebagai

Y = W1X1 + W2X2 + … + WpXp


dengan
Wi adalah bobot atau koefisien untuk variabel ke
i Xi adalah variabel ke i
Y adalah kombinasi linier dari variabel X

Secara prinsip pembentukan komponen utama merupakan pembentukan kombinasi linier


dari variabel-variabel yang diamati. Dalam analisis komponen utama ditentukan suatu metode
untuk mendapatkan nilai-nilai koefisien atau bobot dari kombinasi linier variabel-variabel
pembentuknya dengan ketentuan sebagai berikut

Bertho Tantular - 1
a) Ada sebanyak p komponen utama, yaitu sebanyak variabel yang diamati dan
setiap komponen utama adalah kombinasi linier dari variabel-variabel tersebut
b) Setiap komponen utama saling ortogonal (tegak lurus) dan saling bebas.
c) Komponen utama dibentuk berdasarkan urutan varians dari yang terbesar hingga yang
terkecil, dalam arti sebagai berikut
• komponen utama pertama (KU1) merupakan kombinasi linier dari seluruh variabel
yang diamati dan memiliki varians terbesar
• komponen utama kedua (KU2) merupakan kombinasi linier dari seluruh variabel
yang diamati yang bersifat ortogonal terhadap KU1 dan memiliki varians kedua
terbesar
• komponen utama ketiga (KU3) merupakan kombinasi linier dari seluruh variabel
yang diamati yang bersifat ortogonal baik terhadap KU1 maupun KU2, dan memiliki
varians ketiga terbesar
:
• komponen utama ke p (KUp) merupakan kombinasi linier dari seluruh variabel yang
diamati yang bersifat ortogonal terhadap KU1, KU2, … , KU(p-1) dan memiliki varians
yang terkecil.
Untuk mendapatkan koefisien komponen utama secara bersamaan dapat menggunakan
salah satu cara berikut ini

 dekomposisi eigen value dan eigen vector dari matriks korelasi atau kovarians dari
variabel-variabel yang diamati. Dalam hal ini eigen value merupakan varians setiap
komponen utamanya dan eigen vector merupakan koefisien-koefisien komponen
utamanya

 dekomposisi nilai singular dari matriks data yang berukuran n x p.

Interpretasi dari komponen utama adalah bahwa komponen utama tersebut merupakan
suatu sistem sumbu baru dalam ruang vektor berdimensi banyak peubah yang diamati. Melalui
komponen utama salib-salib sumbu tersebut telah diubah skalanya dan dirotasi hingga
memiliki sifat varians yang terurut semakin kecil dan ortogonal.
Apabila varians dari variabel-variabel yang diamati mempengaruhi besarnya bobot atau
koefisien kompomnen utamanya maka analisis komponen utama dapat dilakukan menggunakan
matriks varians-kovarians. Secara sederhana varians merupakan suatu informasi dari variabel
yang diamati yang berarti apabila sebuah variabel memiliki pengamatan yang semua nilainya
sama maka variabel tersebut tidak memiliki informasi yang dapat membedakan antar
pengamatan.
Komponen utama adalah himpunan variabel baru yang merupakan kombinasi linier dari
variabel-variabel yang diamati. Komponen utama memiliki sifat varians yang semakin
mengecil, sebagian besar variasi (keragaman atau informasi) dalam himpunan variabel yang
diamati cenderung berkumpul pada beberapa komponen utama pertama, dan semakin sedikit
informasi dari variabel asal yang terkumpul pada komponen utama terakhir. Hal ini berarti
bahwa komponen-komponen utama pada urutan terakhir dapat diabaikan tanpa kehilangan
banyak informasi. Dengan cara ini analisis komponen utama dapat digunakan untuk mereduksi
variabel-variabel.
Untuk keperluan reduksi variabel tentu harus ditentukan berapa banyak komponen utama
yang mesti diambil. Ada beberapa cara untuk menentukan berapa banyak komponen utama yang
harus diambil diantaranya adalah

 menggunakan scree plot. Banyak komponen yang diambil adalah pada titik kurva tidak
lagi menurun tajam atau mulai melandai.

 menggunakan proporsi kumulatif varinas terhadap total varians

Telah dijelaskan bahwa antar komponen utama bersifat ortogonal yang artinya bahwa
setiap komponen utama merupakan wakil dari seluruh variabel asal sehingga komponen-
komponen utama tersebut dapat dijadikan pengganti variabel asal apabila analisis terhadap
variabel tersebut membutuhkan ortogonalitas, Dalam analisis regresi linier multipel memerlukan
suatu syarat tidak adanya multikolinieritas antara variabel-variabel bebasnya. Apabila ternyata
dalam data terdapat multikolinieritas maka komponen utama dapat digunakan sebagai pengganti
variabel-variabel bebas dalam model regresi tersebut.
Dalam analisis komponen utama diperoleh beberapa ukuran-ukuran berikut
1. Nilai total varians merupakan informasi dari seluruh variabel asal yang dapat dijelaskan
oleh komponen-komponen utamanya
2. proporsi varians komponen utama ke k terhadap total varians menunjukkan besarnya
persentase informasi variabel-variabel asal yang terkandung dalam komponen utama ke-
k
3. Nilai koefisien korelasi antara komponen utama dengan variabelnya

2. Analisis Komponen Utama dalam R


(a) Fungsi princomp
Analisis Komponen Utama dalam software R dapat dianalisis menggunakan fungsi
princomp. Fungsi princomp menganalisis komponen utama dari data berupa matriks numerik
dan menghasilkan nilai-nilai berupa suatu objek dalam kelas princomp. Penjelasan mengenai
syntax dan penggunaan fungsi princomp adalah sebagai berikut

> fit_pca <- princomp(x, ...)


atau
> fit_pca <- princomp(formula, data = NULL, subset, na.action, ...)
atau
> fit_pca <- princomp(x, cor = FALSE, scores = TRUE, covmat = NULL, subset =
rep(TRUE, nrow(as.matrix(x))), ...)

Keterangan:
formula: adalah formula untuk variabel numerik tanpa melibatkan variabel respon
data: data yang digunakan berupa data frame meliputi variabel-variabel dalam formula
Sebagai default diambil variabel dari ‘environment(formula)’.
subset: sebuah vektor yang digunakan untuk memilih baris (pengamatan) dari matriks X
na.action: sebuah fungsi yang mengindikasikan apa yang akan dilakukan apabila ada data
hilang
x: adalah matriks numerik atau data frame yang berisi data yang digunakan untuk
analisis
komponen utama
cor: bernilai ”TRUE” apabila yang digunakan matriks korelasi dan bernilai ”FALSE”
untuk
matriks kovarians (matrix korelasi hanya dapat digunakan apabila tidak ada
variabel
konstanta)
scores: bernilai TRUE untuk menampilkan setiap nilai komponen utamanya dan
bernilai FALSE
untuk tidak menampilkan setiap nilai komponen utamanya.
covmat: digunakan apabila inputnya adalah matriks kovarians atau matriks korelasi.
Biasanya
bernama ‘cov.wt’ atau ‘cov.mve’ atau 'cov.mcd’ yang diperoleh dari pajet MASS.

Nilai-nilai yang dapat ditampilkan hasil analisis fungsi princomp adalah sebagai berikut

sdev: simpangan baku (standard deviation) dari komponen utamanya


loadings: matriks variabel loading yaitu matriks yang kolom-kolomnya berupa
eigen vector. center: rata-rata yang digunakan.
scale: transformasi dari tiapvariabel.
n.obs: banyak pengamatan.
scores: nilai-nilai komponen utamanya
na.action: bila ada penanganan data hilang
Perintah-perintah berikut digunakan untuk menampilkan hasil analisis

summary(fit_pca) untuk menampilkan nilai varians


loadings(fit_pca) untuk menampilkan nilai loadings
plot(fit_pca,type="lines") untuk membuat scree plot
fit_pca$scores untuk menampilkan nilai komponen utama

Dalam fungsi princomp analisis komponen utama menggunakan nilai eigen dari matriks
korelasi atau matriks varians-kovarians. Analisis komponen utama yang menggunakan
dekomposisi nilai singular dari matriks X berada dalam fungsi lain yaitu prcomp. Fungsi print
dapat digunakan untuk menampilkan hasil analisis dan fungsi plot dapat digunakan untuk
menampilkan screeplot.

Contoh Kasus 1:
Jolicoeur dan Mosimann mempelajari mengenai hubungan antara ukuran dan bentuk sejenis
kura-kura. Pada penelitiannya mereka mengambil sampel sebanyak 24 kura-kura jantan dan 24
kura-kura betina dan diukur panjang, lebar dan tinggi kura-kura tersebut. (data diambil dari
Johnson & Wichern, 2002 halaman 339)
Sebelum melakukan analisis dengan definisikan variabel X1 = length, X2 = width, X3 =
height dan X4 = sex kemudian input dulu data tersebut menggunakan software R sebagai berikut

> x1<-
c(98,103,103,105,109,123,123,133,133,133,134,136,138,138,141,147,149,153,155,
155,158,159,162,177,93,94,96,101,102,103,104,106,107,112,113,114,116,117,117,
119,120,120,121,125,127,128,131,135)

> x2<-
c(81,84,86,86,88,92,95,99,102,102,100,102,98,99,105,108,107,107,115,117,115,1
18,124,132,74,78,80,84,85,81,83,83,82,89,88,86,90,90,91,93,89,93,95,93,96,95,
95,106)
> x3<-
c(38,38,42,42,44,50,46,51,51,51,48,49,51,51,53,57,55,56,63,60,62,63,61,67,37,
35,35,39,38,37,39,39,38,40,40,40,43,41,41,41,40,44,42,45,45,45,46,47)

> x4<-rep(c(”F”,”M”),each=24)

Lakukan transformasi sederhana terhadap data (x1, x2 dan x3) tersebut menggunakan log
sebagai berikut

> y1<-log(x1)

> y2<-log(x2)

> y3<-log(x3)

> y<-data.frame(y1,y2,y3)

> Y<-y[25:48,]

Analisis data kura-kura jantan menggunakan fungsi princom() sebagai berikut

> fit_pca<-princomp(Y, cor=FALSE)

> summary(fit_pca)

Importance of components:

Comp.1 Comp.2 Comp.3

Standard deviation 0.1494402 0.02394526 0.01856994

Proportion of Variance 0.9605077 0.02466069 0.01483157


Cumulative Proportion 0.9605077 0.98516843 1.00000000

Terlihat dari proporsi varians kumulatif Komponen pertama dapat menjelaskan 96% total
varians dan bila ditambahkan komponen kedua menjadi 98%. Artinya apabila kita hanya
mengambil satu komponen saja yaitu komponen pertama sudah mencukupi. Nilai simpangan
baku (standard deviation) pada baris pertama hasil diatas diperoleh dari akar positif nilai eigen
(eigen value) matriks kovarians dari log(y1), log(y2) dan log(y3).
> loadings(fit_pca)

Loadings:

Comp.1 Comp.2 Comp.3

y1 0.683 -0.159 0.713

y2 0.510 -0.594 -0.622


y3 0.523 0.788 -0.324

Comp.1 Comp.2 Comp.3

SS loadings 1.000 1.000 1.000

Proportion Var 0.333 0.333 0.333


Cumulative Var 0.333 0.667 1.000

Nilai-nilai loading yang ditampilkan pada hasil di atas adalah nilai vektor eigen dari matriks
kovarians log(y1), log(y2) dan log(y3). Fungsi komponen utamanya adalah sebagai berikut

KU1 = 0.683 log(y3) + 0.510 log(y3) + 0.523 log(y3)


KU2 = -0.159 log(y3) - 0.594 log(y3) + 0.788 log(y3)
KU3 = 0.713 log(y3) - 0.622 log(y3) - 0.324 log(y3)

Untuk membuat dan menampilkan scree plot dilakukan dengan cara sebagai berikut

> plot(fit_pca,type="lines")
Dari scree plot tersebut terlihat bahwa kurva mulai landai pada titik comp 2 artinya
bahwa dengan satu komponen saja sudah mencukupi untuk mewakili ketiga variabel tersebut
Menampilkan nilai (score) komponen utama

> fit_pca$scores

Comp.1 Comp.2 Comp.3

25 -0.268473390 0.0610685037 0.0004066149

26 -0.263344980 -0.0157244390 -0.0066858875

27 -0.236045707 -0.0341210935 -0.0074276738

28 -0.119923476 0.0141251769 -0.0366922244

29 -0.120728388 -0.0149572760 -0.0286045130

30 -0.152592781 -0.0089082112 0.0169793685

31 -0.106039296 0.0165711616 -0.0083826652

32 -0.093027430 0.0135333730 0.0051929344

33 -0.106371042 -0.0012452738 0.0278503862

34 -0.006575259 -0.0167441765 -0.0071889505

35 -0.006268452 -0.0114497088 0.0061739765

36 -0.011979592 0.0008012246 0.0267516989

37 0.060886922 0.0280465362 -0.0125896593


38 0.041862973 -0.0108766303 0.0089785626

39 0.047500815 -0.0174403631 0.0021060793

40 0.070171264 -0.0330572711 0.0006647271

41 0.040553932 -0.0277470963 0.0419820919

42 0.112788083 0.0212894116 -0.0162796865

43 0.105004626 -0.0293536649 -0.0085075394

44 0.152416632 0.0324987788 0.0055238164

45 0.179458559 0.0111082110 -0.0029094996

46 0.179473590 0.0160774637 0.0091929735

47 0.206783903 0.0297129498 0.0185740872

48 0.294468494 -0.0232075863 -0.0351090182

Contoh Kasus 2:
Data berikut mengenai rates of return dari lima saham perusahaan yaitu Allied Chemical, du
Pont, Union Carbide, Exxon dan Texaco yang berada di pasar saham New York yang diambil
pada periode 1975 hingga Desember 1976. Berdasarkan nilai penutupan pada hari Jum'at
rates of return didefiniskan sebagai

Harga penutupan Jum' at ini−Harga penutupan Jum' at sebelumnya


rates of return= Harga penutupan Jum' at sebelumnya

Diasumsikan bahwa pengamatan saling bebas dalam hal ini adalah minggu dan saham
perusahaan adalah variabelnya yang saling berkorelasi. Dari data sebanyak 100 minggu
diperoleh vektor rata-ratanya adalah

x ' =[0.0054, 0.0048, 0.0057, 0.0063, 0.0037 ]

dan matriks korelasinya adalah


1.000 0.577 0.509 0.387 0.462
0.577 1.000 0.599 0.389 0.322

R=
[ 0.509
0.387
0.462
0.599
0.389
0.322
1.000
0.436
0.426
0.436
1.000
0.523
0.426
0.523
1.000
]
R merupakan matriks varians-kovarians dari matriks pengamatan yang sudah dibakukan.
(Johnson dan Wichern, 2002)
Dalam kasus ini yang diketahui adalah matriks kovarians atau matriks korelasi maka
fungsi princomp digunakan dengan cara sebagai berikut

# Input matriks R dengan cara sebagai berikut

> r<-
c(1,.577,.509,.387,.462,.577,1,.599,.389,.322,.509,.599,1,.436,.426,.387,

.389,.436,1,.523,.462,.322,.426,.523,1)

> R<-matrix(r, 5, 5)

> R

[,1] [,2] [,3] [,4] [,5]

[1,] 1.000 0.577 0.509 0.387 0.462

[2,] 0.577 1.000 0.599 0.389 0.322

[3,] 0.509 0.599 1.000 0.436 0.426

[4,] 0.387 0.389 0.436 1.000 0.523


[5,] 0.462 0.322 0.426 0.523 1.000

# Nilai eigen value dan eigen vector dapat diperoleh

> eigen(R)$value

[1] 2.8567110 0.8091637 0.5396752 0.4515001 0.3429499


> eigen(R)$vector

[,1] [,2] [,3] [,4] [,5]

[1,] -0.4636052 0.2403390 0.6117054 -0.3866346 -0.4512622

[2,] -0.4571078 0.5093047 -0.1781895 -0.2064744 0.6762233

[3,] -0.4701756 0.2604483 -0.3350565 0.6624447 -0.4000072

[4,] -0.4214588 -0.5256649 -0.5407628 -0.4720060 -0.1755986


[5,] -0.4212245 -0.5819699 0.4351755 0.3824388 0.3850245

# Analisis menggunakan fungsi princomp

> fit_pca2<-princomp(covmat=R, cor=TRUE, n.obs=100)

> summary(fit_pca2)

Importance of components:

Comp.1 Comp.2 Comp.3 Comp.4 Comp.5

Standard deviation 1.6901808 0.8995353 0.7346259 0.67193757 0.58561928

Proportion of Variance 0.5713422 0.1618327 0.1079350 0.09030002 0.06858999


Cumulative Proportion 0.5713422 0.7331749 0.8411100 0.93141001 1.00000000

dari hasil perhitungan tersebut terlihat bahwa proporsi varians untuk komponen 1 baru mencapai
57% dan apabila diambil dua komponen proporsi varians mencapai 73%.

> loadings(fit_pca2)

Loadings:

Comp.1 Comp.2 Comp.3 Comp.4 Comp.5

[1,] -0.464 0.240 0.612 -0.387 -0.451

[2,] -0.457 0.509 -0.178 -0.206 0.676

[3,] -0.470 0.260 -0.335 0.662 -0.400

[4,] -0.421 -0.526 -0.541 -0.472 -0.176


[5,] -0.421 -0.582 0.435 0.382 0.385
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5

SS loadings 1.0 1.0 1.0 1.0 1.0

Proportion Var 0.2 0.2 0.2 0.2 0.2


Cumulative Var 0.2 0.4 0.6 0.8 1.0

Nilai loading yang diperoleh hasilnya sama dengan nilai eigen vektor. Nilai loading ini
digunakan sebagai koefisien dari fungsi komponen utamanya.

(2) Fungsi prcomp


Selain menggunakan fungsi princomp analisis komponen utama juga dapat
menggunakan fungsi prcomp. Fungsi prcomp menganalisis komponen utama menggunakan
dekomposisi nilai singular (singular value decomposition atau svd) dari matriks data berbeda
dengan fungsi princomp yang menggunakan nilai eigen dari matriks varians-kovarians. Fungsi
print dapat digunakan untuk menampilkan hasil analisis dan fungsi plot dapat digunakan untuk
menampilkan screeplot. Berikut penjelasan syntax dan pengunaannya.

> prcomp(x, ...)


atau
> prcomp(formula, data = NULL, subset, na.action, ...)
atau
> prcomp(x, retx = TRUE, center = TRUE, scale. = FALSE, tol = NULL, ...)

keterangan:
formula: adalah formula untuk variabel numerik tanpa melibatkan variabel respon
data: data yang digunakan berupa data frame meliputi variabel-variabel dalam formula
Sebagai default diambil variabel dari ‘environment(formula)’.
subset: sebuah vektor yang digunakan untuk memilih baris (pengamatan) dari matriks X
na.action: sebuah fungsi yang mengindikasikan apa yang akan dilakukan apabila ada data
hilang
x: adalah matriks numerik atau data frame yang berisi data yang digunakan untuk
analisis komponen utama
retx: berisi nilai logical (TRUE atau FALSE) yang mengindikasikan rotasi variabel
yang akan digunakan
center: berisi nilai logical (TRUE atau FALSE) yang mengindikasikan pemusatan data
terhadap rata-ratanya.
scale: berisi nilai logical (TRUE atau FALSE) yang mengindikasikan variabel yang
dibakukan
tol: berisi nilai yang mengindikasikan batas bawah komponen mana yang harus
diabaikan. Komponen diabaikan apabila nilai simpangan bakunya kurang dari
atau sama dengan nilai ”tol”.

Nilai-nilai yang dapat ditampilkan hasil analisis fungsi princomp adalah sebagai berikut

sdev: Nilai simpangan baku dari komponen utamanya. Yaitu akar dari nilai eigen
matriks varians-kovarians atau matriks korelasinya melalui perhitungan nilai
singular matriks
data.rotation: adalah matriks variabel loading. Yaitu matriks yang kolom-kolomnya merupakan
nilai-nilai eigen matriks varians-kovarians.
x: adalah nilai dari data yang telah dirotasikan. Nilai ini akan ada apabila fungsi
‘retx’ bernilai TRUE .
center, scale: adalah nilai pemusatan dan pembakuan yang digunakan

Penggunaan fungsi prcomp dapat dilakukan pada contoh kasus 1 dengan cara sebagai
berikut
> fit_pca<-prcomp(Y, rex=TRUE, tol=0.1)

> summary(fit_pca)

Importance of components:

PC1 PC2 PC3

Standard deviation 0.153 0.0245 0.0190

Proportion of Variance 0.961 0.0247 0.0148

Cumulative Proportion 0.961 0.9852 1.0000

> fit_pca$x

PC1 PC2 PC3

25 -0.268473390 0.0610685037 -0.0004066149

26 -0.263344980 -0.0157244390 0.0066858875

27 -0.236045707 -0.0341210935 0.0074276738

28 -0.119923476 0.0141251769 0.0366922244

29 -0.120728388 -0.0149572760 0.0286045130

30 -0.152592781 -0.0089082112 -0.0169793685

31 -0.106039296 0.0165711616 0.0083826652

32 -0.093027430 0.0135333730 -0.0051929344

33 -0.106371042 -0.0012452738 -0.0278503862

34 -0.006575259 -0.0167441765 0.0071889505

35 -0.006268452 -0.0114497088 -0.0061739765

36 -0.011979592 0.0008012246 -0.0267516989

37 0.060886922 0.0280465362 0.0125896593

38 0.041862973 -0.0108766303 -0.0089785626

39 0.047500815 -0.0174403631 -0.0021060793

40 0.070171264 -0.0330572711 -0.0006647271

41 0.040553932 -0.0277470963 -0.0419820919

42 0.112788083 0.0212894116 0.0162796865

43 0.105004626 -0.0293536649 0.0085075394

44 0.152416632 0.0324987788 -0.0055238164


45 0.179458559 0.0111082110 0.0029094996
46 0.179473590 0.0160774637 -0.0091929735

47 0.206783903 0.0297129498 -0.0185740872

48 0.294468494 -0.0232075863 0.0351090182

Dengan cara ini menghasilkan nilai skor komponen utama yang sama dengan cara sebelumnya.
Nilai proporsi varians untuk tiap komponen utama juga bernilai sama dengan cara sebelumnya.
Selain menggunakan fungsi princomp dan prcomp analisis komponen utama juga dapat
dilakukan dengan fungsi principal. Tetapi fungsi principal ini hanya dapat dilakukan apabila
telah diinstallkan paket psych. Paket psych dapat diunduh secara gratis di CRAN (http://cran.r-
project.org/).
MODUL II
ANALISIS FAKTOR

1. Analisis Faktor
Analisis Faktor adalah suatu cara menjelaskan suatu set variabel berdasarkan dimensi
yang lebih umum. Pada dasarnya analisis faktor bertujuan untuk memudahkan interpretasi
melalui struktur pola hubungan atau untuk mereduksi variabel. Hal ini dilakukan dengan cara
mengidentifikasi struktur yang terdapat dalam set variabel yang terobservasi.
Secara umum ada tiga kegunaan utama dari Analisis Faktor yaitu:
• Eksplorasi (disebut Eksploratory factor analysis (EFA)) yaitu membentuk variabel
baru yang diperoleh melalui reduksi variabel
• Konfirmasi (disebut Confirmatory Factor Analysis (CFA)) yaitu menguji struktur
variabel yang dihipotesiskan berdasarkan banyaknya faktor yang signifikan dan besarnya
faktor loading
• Alat Pengukur (model measurment) yaitu pembentukan indeks-indeks yang akan
digunakan sebagai pengamatan baru dalam analisa selanjutnya
Misalkan terdapat satu set variabel dengan banyak variabel adalah p dan ternyata antar
variabel tersebut mempunyai tingkat korelasi yang tinggi. Dimungkinkan ada satu atau lebih
variabel yang tidak terobservasi (disebut sebagai variabel laten) yang merupakan penyebab p
variabel di atas. Keberadaan variabel yang tak terobservasi yang mampu menjelaskan variabel
yang teramati merupakan pembahasan dalam Analisis Faktor. Dengan demikian pada intinya
Analisis Faktor menjelaskan hubungan struktur kovarians dari variabel yang teramati dengan
variabel yang tidak teramati.
Analisis Faktor dapat dirumuskan dalam suatu model persamaan linier. Misalkan vektor
acak X dengan p komponen memiliki rata-rata μ dan matriks covariance Σ. Maka dapat
dibentuk model persamaan faktornya adalah
X1 – μ1 = l11 F1 + l12 F2 + … + l1m Fm
+ε1 X2 – μ2 = l21 F1 + l22 F2 + … + l2m
Fm + ε2
: : : :
Xp – μp = lp1 F1 + lp2 F2 + … + lpm Fm + εp

dengan:
μi = rata-rata variabel asal ke i
εi = spesifik faktor ke i
Fj = Common faktor ke j.
lij disebut loading dari peubah asal ke i pada faktor ke j.
Atau dalam bentuk matriks menjadi

(X – μ) = L F + ε
(px1) (pxm) (mx1) (px1)

Asumsi yang digunakan dalam analisis faktor adalah:


• Data berasal dari populasi yang berdistribusi normal univariat

• Dalam set data terdapat multikolinieritas dapat diuji dengan menggunakan Uji Bartlett.

• E(F) = 0, E(e) = 0

• Cov(F) = E(FF’) = I

• Cov(e) = E(e e’) = Ψ = diag(Ψ1, …., Ψp)

• F dan ε saling bebas,

• Cov (ε, F) = E (ε, F’) = 0

Koefisien lij disebut loading dari variabel asal ke i pada faktor ke j, maka matriks L adalah
matriks factor loading dan F1, F2,…., Fm , ε1, ε2,…. εp adalah tidak terobservasi.
Berikut adalah hal-hal yang perlu dilakukan dalam analisis faktor

 Mengidentifikasikan struktur

 Menentukan jumlah faktor (scree plot, eigen values, proporsi varians)

 Menduga parameter (factor loading dan sistematik varians)

- Metode Komponen Utama


- Metode Kemungkinan Maksimum
- Metode Kuadrat Terkecil

 Rotasi faktor (ortogonal: varimax, quartimax, equimax; oblique: oblimax, quartimin,


oblimin)

 Interpretasi faktor (eigen values, explained variances, factor scores, koefisien faktor)

2. Analisis Faktor dalam R


Analisis Faktor dalam software R dapat dianalisis melalui fungsi factanal(). Fungsi
factanal() adalah analisis ekstraksi faktor menggunakan metode kemungkinan maksimum.
Dalam software R, penjelasan tentang model analisis faktor adalah sebagai berikut

x=Λf+e

dengan x adalah vektor berukuran (p x 1), Λ adalah matriks loading berukuran (p x k), f adalah
vektor skor faktor berukuran (k x 1) dan e adalah galat berukuran (p X 1). Dalam model ini tidak
ada komponen yang terobservasi kecuali x. Asumsi yang mendasari model ini adalah bahwa
faktor tidak saling berkorelasi, dan bahwa galat saling bebas dengan varians phi yang disebut
”uniquenesses”. Kemudian dalam analisi faktor model bagi matriks varians-kovarians x adalah

Σ=Λ'Λ+Ψi

Apabila dilakukan rotasi terhadap data maka Λ dapat digantikan dengan GΛ untuk setiap
matriks G yang ortogonal.
Input data berupa matriks varians-kovarians dapat digunakan dalam analisis faktor.
Selain itu matriks data X juga dapat digunakan atau berupa formula yang menyatakan model
konstruk dalam bentuk matriks sehingga dapat diperoleh dari matriks data tersebut matriks
varians-kovariansnya. Yang perlu diperhatikan dalam hal ini adalah bahwa semua nilai-nilai
dalam variabel-variabel yang terlibat harus numerik. Dalam analisis menggunakan fungsi
factanal, matriks varians-kovarians dikonversi menjadi matriks korelasi.
Model fit diperoleh dengan mengoptimasi fungsi log likelihood dibawah asumsi
uniquenesses berdistribusi multivariat normal. Nilai uniquenesses secara teknis berada dalam
interval [0, 1], tetapi apabila nilainya mendekati nol akan menjadi masalah, dan optimalisasi
berakhir dengan batas bawah 0.005.
Nilai faktor skor hanya dapat diperoleh apabila yang digunakan adalah matriks data.
Metode yang digunakan adalah metode regresi dari Thomson (1951) dan metode weighted least
squares (WLS) dari Bartlett (1937). Kedua metode ini menaksir nilai skor F. Metode Thomson
menaksir F dengan model sebagai berikut

F ='  −1 X

dan kemudian menggantikan nilai-nilai parameter dengan penaksirnya. Prinsip Metode Bartlett
adalah meminimumkan jumlah kuadrat galat yang sudah dibakukan atau diboboti. Uraian
berikut ini adalah penjelasan syntax dan cara penggunaannya.

> factanal(x, factors, data = NULL, covmat = NULL, n.obs = NA,

subset, na.action, start = NULL,

scores = c("none", "regression", "Bartlett"),

rotation = "varimax", control = NULL, ...)

Keterangan:
x: berupa formula atau matriks numerik dari objek

factors: banyak faktor yang digunakan.

data: adalah data frame yang digunakan apabila x berupa formula.

covmat: adalah matriks varians-kovarians dalam hal ini matriks korelasi


juga

termasuk matriks varians-kovarians.

n.obs: banyaknya pengamatan dari data, opsi ini digunakan apabila opsi

‘covmat’ adalah matriks kovarians.

subset: Spesifikasi pengamatan yang digunakan. Digunakan apabila opsi ‘x’

digunakan sebagai matriks data atau formula.

na.action: opsi untuk data hilang, digunakan apabila opsi 'x' berupa formula

start: dengan nilai default ‘NULL’ adalah matriks yang berisi nilai awal

dengan tiap kolom merupakan set awal uniquenesses.

scores: nilai skor. Ada dua tipe yaitu "regression" bila menggunakan
metode

Thompson, dan "Bartlett"’ bila menggunakan metode Bartlett's


weighted

least-squares

rotation: tipe rotasi yang digunakan, secara default bernilai "none"

Nilai-nilai hasil analisis faktor menggunakan fungsi factanal

loadings: menampilkan matriks loading faktor yang terurut dari besar


ke

kecil berdasarkan jumlah kuadrat loading..

uniquenesses: menampilkan nilai uniquenesses.

correlation: menampilkan matriks korelasi yang digunakan.

criteria: hasil dari optimalisasi yaitu nilai -2 log-likelihood dan

informasi iterassi yang digunakan

factors: The argument ‘factors’.

dof: menampilkan nilai derajat kebebasan model analisis faktor


method: metode yang digunakan (dalam hal ini adalah "mle").

scores: menampilkan matriks faktor skor

n.obs: banyak pengamatan.

STATISTIC, PVAL: menampilkan nilai signifikansi statistik uji dan p-value.

Dalam analisis faktor ada banyak variasi penggunaannya sehingga sulit bagi kita untuk
membandingkan output dari program yang berbeda-beda. Bagaimanapun metode optimalisasi
dalam analisis faktor menggunakan maximum likelihood cukup sulit.

Syntax berikut adalah contoh pengunaannya

> fit <- factanal(dataku, factors=banyak_faktor, rotation="varimax")


> print(fit, digits=2, cutoff=.3, sort=TRUE) # Output analisis faktor
> load <- fit$loadings # Menampilkan loading factor
> plot(load,type="n") # plot faktor 1 dan faktor 2
> text(load,labels=names(mydata),cex=.7) # menambahkan nama variabel

Contoh Kasus 1
Dalam suatu studi consumer-preference diambil sampel acak dari sejumlah konsumen. Kepada
mereka ditanyakan mengenai 5 atribut dari sebuah produk baru. Respon dari konsumen
menggunakan skala 7 semantik differensial, yang hasilnya telah dihitung menjadi matriks
korelasi berikut ini (Johnson & Wichern, 2002 halaman 487)

Atribut (Variabel) 1 2 3 4 5
Taste 1 0.02 0.96 0.42 0.01
Good buy for money 0.02 1 0.13 0.71 0.85
Flavor 0.96 0.13 1 0.5 0.11
Suitable for snack 0.42 0.71 0.5 1 0.79
Provides lots energy 0.01 0.85 0.11 0.79 1
Lakukan analisis faktor terhadap matriks korelasi dari 5 variabel tersebut

Sebelum menganalisis data tersebut perlu diinputkan dulu matriks korelasinya dengan
cara sebagai berikut

> mc<-
matrix(c(1,.02,.96,.42,.01,.02,1,.13,.71,.85,.96,.13,1,.5,.11,.42,.71,.5,1,.7
9,.01,.85,.11,.79,1), 5, 5)

> mc

[,1] [,2] [,3] [,4] [,5]

[1,] 1.00 0.02 0.96 0.42 0.01

[2,] 0.02 1.00 0.13 0.71 0.85

[3,] 0.96 0.13 1.00 0.50 0.11

[4,] 0.42 0.71 0.50 1.00 0.79


[5,] 0.01 0.85 0.11 0.79 1.00

Kemudian analisis faktor menggunakan perintah sebagai berikut

> fit<-factanal(factors=2, covmat=mc)

> fit

Call:

factanal(factors = 2, covmat = mc)

Uniquenesses:

[1] 0.028 0.237 0.040 0.168 0.052

Loadings:

Factor1 Factor2

[1,] 0.985
[2,] 0.873

[3,] 0.131 0.971

[4,] 0.817 0.405


[5,] 0.973

Factor1 Factor2

SS loadings 2.396 2.078

Proportion Var 0.479 0.416

Cumulative Var 0.479 0.895


The degrees of freedom for the model is 1 and the fit was 0.0233

Dari output diatas terlihat bahwa Faktor 1 beranggotakan variabel 2, variabel 4 dan variabel 5
sedangkan variabel 1 dan variabel 3 berada pada Faktor 2.

3. Menentukan Banyak Faktor


Hal yang penting dalam analisis faktor adalah menentukan berapa banyak faktor yang
mesti diambil. Beberapa metode dapat digunakan untuk menentukan banyak faktor, misalnya
menggunakan kriteria nilai eigen, proporsi varians dan secara grafis menggunakan screeplot.
Untuk itu dalam software R disediakan paket nFactors. Fungsi yang digunakan dalam paket ini
adalah nScree, uraian berikut adalah penjelasan mengenai syntax dan contoh penggunaannya
Fungsi nScree dalam software R adalah suatu fungsi untuk menganalisis banyaknya
komponen atau faktor dalam analisis faktor eksplanatori. Fungsi ini berguna untuk memberikan
informasi mengenai banyak faktor melalui aturan Kaiser dan analisis paralel.

> nScree(eig=NULL, x=eig, aparallel=NULL, cor=TRUE, model="components",

criteria=NULL, ...)

Keterangan:
eig: adalah parameter berupa eigenvalues yang akan dianalisis
x: adalah input dapat berupa vektor eigenvalues, atau matriks korelasi atau
kovarians dari data (data frame)
aparallel: hasil dari analisis paralel.
Cor berniilai ‘TRUE’ apabila yang digunakan matriks korelasi dan 'FALSE' apabila
yang digunakan matriks kovarians
model: bernilai "components” atau "factors"
criteria: bernilai numerik.

Hasil analisis yang dapat ditampilkan dari paket nFactors

Components : berupa data frame yang berisi banyaknya komponen atau faktor yang
didasarkan atas aturan yang berbeda
Components$noc : Banyaknya komponen atau faktor berdasarkan koordinat optimal (oc)
Components$naf : Banyaknya komponen atau faktor berdasarkan acceleratoin factor (af)
Components$npar.analysis : Banyaknya komponen atau faktor berdasarkan koordinat analisis
paralel
Components$nkaiser : Banyaknya komponen atau faktor berdasarkan aturan Kaiser
Analysis : Berupa Data frame berisi vektor yang berkaitan dengan aturan yang
berbeda
Analysis$Eigenvalues : Menampilkan nilai eigen
Analysis$Prop : Nilai proporsi varians yang dihitung dari nilai eigen
Analysis$Cumu : proporsi kumulatif dari varians yang dihitung dari nilai eigen
Analysis$Pred.eig : prediksi nilai eigen dari setiap koordinat garis regresi optimal
Analysis$OC : nilai koordinat optimal (oc)
Analysis$Acc.factor : nilai Acceleration factor _af_
Analysis$AF : nilai kritis acceleration factor _af_
Secara umum contoh penggunaan paket nFactors untuk data pada Contoh kasus 1 dengan
banyak pengamatan adalah 200 dapat dilihat pada syntax berikut ini

# Menentukan banyak faktor yang diekstraksi


> library(nFactors)
> ev <- eigen(mc) # get eigenvalues
> ap <- parallel(subject=200,var=5,rep=100,cent=.05)
> nS <- nScree(ev$values, ap$eigen$qevpea)
> plotnScree(nS)
Dari gambar diatas diperoleh hasil bahwa banyak faktor yang dapat diambil adalah 2
berdasarkan analisis paralel. Berdasarkan metode acceleration factor (AF) banyak faktor yang
dapat diambil adalah 1. Hal ini sesuai dengan output yang dapat ditampilkan diantaranya
sebagai berikut

> nS$Components

noc naf nparallel nkaiser

1 0 1 2 3

> nS$Analysis

Eigenvalues Prop Cumu Par.Analysis Pred.eig OC Acc.factor AF

1 1.1171429 0.2392734 0.2392734 1 1.1405741 NA (< AF)

2 1.0352471 0.2217327 0.4610062 1 1.0635482 -0.004563809

3 0.9487875 0.2032145 0.6642207 1 0.9776396 -0.013875043

4 0.8484528 0.1817245 0.8459452 1 NA -0.028852103


5 0.7192661 0.1540548 1.0000000 1 NA NA

Fungsi Alternatif untuk Analisis Faktor dalam R


(1) Fungsi factor.pa dalam Paket psych
Fungsi lain untuk analisis faktor adalah factor.pa( ) yang terdapat pada Paket psych.
Dalam fungsi ini menyertakan analisis faktor menggunakan principal axis. Dari sekian banyak
metode analisis faktor pendekatan konvensional adalah principal axes melalui dekomposisi nilai
eigen dari matriks korelasi dipeorleh nilai komunalitas dari tiap variabel dan ditaksir n faktor
pertama. Nilai komunalitas ini dimasukkan ke dalam diagonal matriks dan prosedur diulang
hingga jumlah diagonal tidak berubah. Metode lain adalah menggunakan Metode kuadrat
terkecil untuk memperoleh nilai solusi residual minimum (disebut minres). Variasi dari minres
digunakan dalam kuadrat terkecil diboboti (weighed least squares). Metode penaksiran lainnya
adalah metode kemungkinan maksimum. Metode ini bisa diperoleh dari fungsi fa atau factanal
yang telah dijelaskan sebelumnya.
Metode Principal axes dapat digunakan pada saat metode kemungkinan maksimum tidak
mencapai konvergen. Masalah dalam analisis faktor adalah mencari penaksir terbaik bagi
komunalitas. Apabila Squared Multiple Correlation (SMC) digunakan untuk tiap variabel akan
diperoleh nilai komunalitas yang underestimate. Algoritma yang digunakan tidak mencoba
untuk menemukan solusi terbaik (seperti dalam kriteria kemungkinan maksimum) tetapi cukup
dengan mencapai konvergen dengan cepat melalui dekomposisi nilai eigen.
Pendekatan yang berbeda adalah solusi yang diperoleh dari minimum residual (minres)
merupakan metode kuadrat terkecil yang tidak diboboti (unweighted least squares). Fungsi
optim digunakan dan disesuaikan dengan elemen-elemen matriks korelasi untuk
meminimumkan kuadrat residu. Metode minres dan pa dapat digunakan pada saat metode
maksimum likelihood tidak mencapai konvergen dan dapat digunakan apabila matriks input
singular. Setidaknya solusi yang diperoleh dari metode minres lebih mirip dengan metode
kemungkinan maksimum dibandingkan solusi dari metode pa. Secara umum solusi dari metode
minres dan WLS mengikuti ide dari fungsi factanal.
Metode weighted least squares (WLS) memberikan bobot dari matriks residu dengan 1
dibagi diagonal invers matriks korelasi. Metode generalized least squares (GLS) memberikan
bobotmatriks residual dengan invers matriks korelasi.
Beberapa metode rotasi dalam analisis faktor yang dapat digunakan adalah varimax
meliputi “Varimax”, “quartimax”, “bentlerT” dan “geominT” berupa rotasi ortogonal, dan
oblique meliputi "promax", "oblimin", "simplimax", "bentlerQ, dan "geominQ" atau "cluster".
Uraian berikut adalah penjelasan mengenai syntax dan contoh penggunaannya

> fa(r,nfactors=1,n.obs = NA, rotate="oblimin", scores=FALSE,


residuals=FALSE, SMC=TRUE,
covar=FALSE,missing=FALSE,impute="median",min.err = 0.001, max.iter =
50,symmetric=TRUE,warnings=TRUE,fm="minres",alpha=.1, ...)

> factor.pa(r, nfactors=1, residuals = FALSE, rotate = "varimax",n.obs = NA,


scores = FALSE,SMC=TRUE, missing=FALSE,impute="median",min.err = 0.001,
digits = 2, max.iter = 50,symmetric=TRUE,warnings=TRUE,fm="pa")
> factor.minres(r, nfactors=1, residuals = FALSE, rotate = "varimax",n.obs = NA,
scores = FALSE,SMC=TRUE, missing=FALSE,impute="median",min.err =
0.001, digits = 2, max.iter = 50,symmetric=TRUE,warnings=TRUE,fm="minres")

> factor.wls(r,nfactors=1,residuals=FALSE,rotate="varimax",n.obs = NA,


scores=FALSE,SMC=TRUE,missing=FALSE,impute="median", min.err = .001,
digits=2, max.iter=50,symmetric=TRUE,warnings=TRUE,fm="wls")
Keterangan:
r : adalah matriks korelasi atau matriks data mentah.
Nfactors : adalah banyak faktor yang akan diekstrak, nilai defaultnya adalah satu
n.obs : banykanya pengamatan yang digunakan. Opsi ini berlaku apabila input
adalah matriks korelasi. Dan digunakan untuk mencari statistik goodness
of fit statistics.
Rotate : berisi metode rotasi meliputi "none", "varimax", "quartimax",
"bentlerT", dan "geominT" untuk rotasi ortogonal. "promax", "oblimin",
"simplimax", "bentlerQ, dan "geominQ" or "cluster". Nilai default untuk
opsi ini adalah oblimin
residuals : Matriks residual yang akan ditampilkan
scores : bernilai “TRUE” untuk menampilkan nilai taksiran factor scores
SMC : benilai “TRUE” apabila menggunakan squared multiple
correlations covar : bernilai “TRUE” bila yang digunakan matriks kovarians, bernilai
“FALSE” bila yang digunakan matriks korelasi
missing : Bernilai “TRUE” apabila akan mengganti data hilang dengan rata-rata
atau median. Opsi ini digunakan apabila opsi scores bernilai “TRUE”.
impute : digunakan untuk mengganti data hilang. Opsi ini bernilai "median"
untuk mengganti dengan median atau "mean" untuk mengganti dengan
rata-rata.
min.err : adalah nilai batas untuk iterasi. Iterasi berhenti pada saat perubahan
komunalitas lebih kecil dari nilai min.err
digits : berapa banyak digit output yang digunakan
max.iter : Nilai maksimum iterasi
symmetric : bernilai “TRUE” atau “FLASE”
warnings : bernilai “TRUE” untuk menampilkan peringatan apabila terlalu banyak
faktor yang akan diekstrak
fm : metode faktorisasi bernilai "minres" untuk minimum residual (OLS),
bernilai “wls" untuk weighted least squares (WLS), “gls" untuk
generalized weighted least squares (GLS), "pa" untuk principal factor
dan "ml" untuk maximum likelihood.
alpha : adalah nilai alpha untuk selang kepercayaan RMSEA

Hasil-hasil yang dapat ditampilkan adalah sebagai berikut:

values : menampilkan nilai eigen dari common faktor


e.values : menampilkan nilai eigen dari matriks asli
communality : menampilkan nilai taksiran komunalitas setiap item. Nilai ini
merupakan jumlah kuadrat loading faktor untuk item tersebut.
Rotation : menampilkan rotasi yang digunakan
n.obs : menampilkan banyak pengamatan yang digunakan
loadings : menampilkan nilai loading
fit : How well does the factor model reproduce the correlation
matrix. This is just (sum(r^2ij - sum(r*^2ij))/sum(r^2ij (See
‘VSS’, ‘ICLUST’, and ‘principal’ for this fit statistic.
fit.off : how well are the off diagonal elements reproduced?
Dof : derajat kebebasan dari model yang digunakan. Nilai ini merupakan
banyaknya nilai korelasi pengamatan dikurangi banyaknya parameter.
Dituliskan dalam rumus matematika adalah sebagai berikut

n n−1 q  q− 1
dof = 2 − nq  2

dengan n adalah banyaknya pengamatan


q banyaknya faktor
objective : menampilkan fungsi objektif.
STATISTIC : Nilai statistik chi kuadrat yang didasarkan atas fungsi objektif.
Apanila dituliskan dalam rumus matematika adalah sebagai berikut

n −1− 2 p 5  2 q
2 =  6 − 3  f

dengan n adalah banyak pengamatan


p adalah banyak variabel
q adalah banyak faktor
f adalah fungsi objektif
Phi : interfactor correlation.
communality.iterations: menampilkan taksiran komunalitas dari tiap iterasi (Hanya digunakan
pada metode principal axis)
Residual : menampilkan matriks korelasi residual setelah model faktor digunakan
BIC : menampilkan nilai Bayesian Information Criterion
R2 : Nilai R2 multiple antara faktor dengan penaksir factor score.
Menggunakan nilai ini dapat diketahui korelasi minimum antara dua
faktor dengan rumus 2R2 - 1
r.scores : nilai korelasi dari penaksir factor score
weights : pembobot yang digunakan
valid : nilai koefisien validitas
score.cor : matriks korelasi dari penaksir faktor score dengan pembobot berdasarkan
matriks loading.

Syntax berikut adalah contoh analisis faktor menggunakan principal axis dengan fungsi
factor.pa()

# Principal Axis Factor Analysis


library(psych)
fit <- factor.pa(dataku, nfactors=3, rotation="varimax")
fit # print results

dataku adalah data yang digunakan (raw data atau matriks


kovarians/korelasi). rfactors banyak faktor yang diekstraksi
rotation rotasi yang digunakan dalam hal ini "varimax" or "promax".

(2) Paket FactoMineR


Paket FactoMineR meliputi beragam fungsi tambahan dalam analisis faktor
eksploratori. Dalam Paket ini menyertakan analisis faktor untuk variabel kualitatif maupun
kuantitatif. Dalam paket ini juga menyertakan grafik untuk analisis faktor secara otomatis.
Fungsi yang digunakan adalah PCA dan contoh penggunaan paket FactoMineR secara
sederhana.

# PCA Variable Factor Map


library(FactoMineR)
result <- PCA(mydata) # grafik digambarkan secara otomatis

Paket nFactors, psych dan FactoMineR tidak disertakan secara default dalam software
tetapi dapat diunduh secara gratis pada the Comprehensive R Archive Network (CRAN) di
alamat http://CRAN.R-project.org/.
Praktikum Analisis Data Multivariat II Menggunakan Software
R
MODUL III
ANALISIS KORELASI KANONIK

1. Pendahuluan
Analisis korelasi kanonik berguna untuk mengidentifikai dan kuantifikasi asosiasi antara
dua set variabel. Analisis korelasi kanonik tercurah pada korelasi antara kombinasi linier dari
suatu set variabel dengan kombinasi linier set variabel lainnya. Pasangan-pasangan kombinasi
linier disebut sebagai variabel kanonik sedangakn korelasinya disebut korelasi kanonik. Korelasi
kanonik mengukur kekuatan asosiasi antara dua set variabel.

2. Korelasi Kanonik dalam R


Analisis Korelasi Kanonik dalam software R dapat dianalisis melalui Paket CCA yang
dapat diunduh pada the Comprehensive R Archive Network (CRAN) di alamat http://CRAN.R-
project.org/. Setelah itu install paket tadi di software R kemudian loading dengan perintah

> library(CCA)

Adapun syntax untuk analisis korelasi kanonik adalah sebagi berikut

> cc( X, Y)

X adalah set variabel yang pertama berukuran n x p


Y adalah set variabel yang kedua berukuran n x q

Contoh
Data berikut mengenai studi nutrisi dari tikus. Data diperoleh dari Pascal Martin dari the
Toxicology and Pharmacology Laboratory (French National Institute for Agronomic Research).
Data ini sudah disertakan dalam paket CCA dengan nama nutrimouse sehingga kita tinggal
Bertho Tantular - 33
Praktikum Analisis Data Multivariat II Menggunakan Software
R
mempergunakannya saja. Dari data nutrimouse ingin dikorelasikan gen dengan lipid dari tikus.
Berikut adalah syntax yang digunakan

> data(nutrimouse) # menggunakan data nutrimouse

> X=as.matrix(nutrimouse$gene[,1:10]) # set variabel pertama yaitu


gen

> Y=as.matrix(nutrimouse$lipid) # set variabel kedua yaitu


lipid

> res.cc=cc(X,Y) # korelasi kanonik

> plot(res.cc$cor,type="b") # plot korelasi

> plt.cc(res.cc)

Output dari syntax tersebut adalah

Bertho Tantular - 34
Untuk menampilkan seluruh output gunakan syntax berikut

> res.cc # Menampilkan seluruh output


> res.cc$cor # Menampilkan nilai korelasi kanoniknya
> res.cc$xcoef # Menampilakn penaksir koefisien bagi variabel X
> res.cc$ycoef # Menampilakn penaksir koefisien bagi variabel Y
> res.cc$scores # Menampilkan koordinat bagi variat kanonik
MODUL IV
ANALISIS DISKRIMINAN

1. Pendahuluan
Analisis Diskriminan adalah suatu teknik mutivariat yang terkonsentrasi pada pemisahan
secara tegas suatu set objek atau pengamatan dan menenpatkan suatu objek atau pengamatan
baru ke dalam kelompok yang telah didefinisikan sebelumnya. Tujuan analisis diskriminan
sendiri adalah untuk menduga keanggotaan objek atu pengamatan dalam suatu kelompok
melalui fungsi dari variabel-variabel yang diukur pada objek tersebut. Fungsi pembentuk
kelompok tersebut merupakan sebuah model yang linier terhadap variabel maupun terhadap
koefisiennya.
Model linier yang mendasari analisis diskriminan mempunyai setidaknya tiga asumsi
yaitu
1. antar objek atau pengamatan harus saling bebas
2. variabel-variabel penjelas harus memiliki distribusi normal multivariat
3. banyaknya pengamatan harus lebih besar dari banyaknya variabel

2. Analisis Diskriminan dalam R


Analisis Diskriminan dalam software R dapat dianalisis melalui Paket MASS. Secara
default paket MASS telah disertakan dalam installasi awal software R sehingga kita tinggal
mengaktifkannya dengan perintah

> library(MASS)

Paket MASS telah meliputi fungsi analisis diskriminan linier dan kuadratik.
Penggunaan analisis diskriminan menggunakan software R akan dijelaskan melalui
ilustrasi berikut ini:
Dalam rangka mengatur penangkapan Ikan Salmon, sangat diinginkan bisa mengidentifikasi
apakah ikan yang tertangkap berasal dari Alaska atau Kanada. Ikan Salmon mempunyai ciri
khas dalam perkembangan pertumbuhannya. Ikan salmon lahir di air tawar kemudian tumbuh
dewasa di air laut. Untuk keperluan tersebut lima puluh Ikan Salmon diambil dari masing-
masing tempat, dan pertumbuhan diameternya diukur ketika ikan-ikan itu hidup di air tawar dan
ketika hidup di air laut, selain itu dibedakan pula terhadap jenis kelaminnya. Tujuannya adalah
untuk mengetahui apakah ikan yang tertangkap di kemudian hari berasal dari Alaska atau dari
Kanada. (Johnson & Wichern 2002 halaman 607). Untuk keperluan analisis untuk jenis kelamin
diberi kode 1 untuk ikan jantan dan 2 untuk ikan betina.

Deskripsi Data
Untuk menampilkan deskripsi dari data salmon lakukan perintah-perintah berikut:

> salmon<-read.csv("salmon.csv")

> str(salmon)

'data.frame': 100 obs. of 4 variables:

$ Ikan.Salmon: Factor w/ 2 levels "Alaska","Kanada": 1 1 1 1 1 1 1 1 1 1 ...

$ AirTawar : int 108 131 105 86 99 87 94 117 79 99 ...

$ AirLaut : int 368 355 469 506 402 423 440 489 432 403 ...
$ JK : int 2 1 1 2 1 2 1 2 2 1 ...

> alaska<-c(mean(salmon$AirTawar[1:50]),sd(salmon$AirTawar[1:50]) )

> kanada<-c(mean(salmon$AirTawar[51:100]),sd(salmon$AirTawar[51:100]))

> sdes<-data.frame(alaska,kanada)

> row.names(sdes)=c("Rata-rata","Simp.Baku")

> sdes

alaska kanada

Rata-rata 98.38000 137.46000


Simp.Baku 16.14335 18.05797

> alaska<-c(mean(salmon$AirLaut[1:50]),sd(salmon$AirLaut[1:50]) )

> kanada<-c(mean(salmon$AirLaut[51:100]),sd(salmon$AirLaut[51:100]))
> sdes2<-data.frame(alaska,kanada)

> row.names(sdes2)=c("Rata-rata","Simp.Baku")

> sdes

alaska kanada

Rata-rata 429.66000 366.62000


Simp.Baku 37.40436 29.88747

Secara deskriptif terlihat bahwa rata-rata diameter pertumbuhan ikan salmon di Alaska lebih
kecil dibandingkan dengan di Kanada.

Pengujian Asumsi Normalitas Multivariat


Secara umum ada dua pendekatan untuk menguji distribusi data Normal Multivariat yaitu
menggunakan metode grafik (Q-Q Plot) dan menggunakan pengujian hipotesis (Uji Mshapiro).
Baris-baris perintah berikut adalah pengujian distribusi normal multivariat untuk kedua metode

# Metode Grafik QQ-Plot

> salmon2<-data.frame(salmon$AirTawar, salmon$AirLaut)

> X <- as.matrix(salmon2) # membentuk matriks n x p


> center <- colMeans(X) # titik pusat
> n <- nrow(X)

> p <- ncol(X)

> cov <- cov(X)


> d <- mahalanobis(X,center,cov) # Menghitung Jarak Mahalanobis
> qqplot(qchisq(ppoints(n),df=p),d,main="QQ-Plot untuk Data Salmon",
+ ylab="Jarak Mahalanobis")
> abline(a=0,b=1)
# Pengujian Hipotesis Shapiro

library(mvnormtest)

mshapiro.test(M) # input M harus matriks

Dari grafik data terlihat agak melenceng untuk jarak data yang cukup besar yang
mengindikasikan data tidak berdistribusi normal multivariat.

Fungsi Diskriminan Linier


Fungsi lda() dalam paket MASS dapat digunakan untuk analisis diskriminan linier. Fungsi ini
didasarkan pada variabel-variabel yang terpusat tetapi bukan nilai baku. Uraian berikut adalah
penjelasan mengenai penggunaan fungsi lda.

> lda(x, ...)


atau

> lda(formula, data, ..., subset, na.action)

atau
> lda(x, grouping, prior = proportions, tol = 1.0e-4, method, CV = FALSE, nu, ...)

> lda(x, grouping, ..., subset, na.action)

keterangan:
formula : adalah model atau fungsi yang digunakan. Contoh ‘G ~ x1 + x2 + ...’
dalam hal ini G adalah variabel respon berupa data nominal yang
menjelaskan kelompok dan x1, x2, … adalah variabelnya.
data : berupa data frame dari variabel-variabel yang digunakan dalam formula
x : berupa matriks atau data frame dari variabel-variabel penjelas. Opsi ini
digunakan apabila formula tidak didefinisikan
grouping : suatu faktor yang mendefinisikan kelompok dari tiap pengamatan Opsi
ini digunakan apabila formula tidak didefinisikan
prior : adalah fungsi peluang prior dari keanggotaan kelompok.
tol : nilai toleransi yang digunakan apabila diperoleh matriks singular.
Variabel dan kombinasi linier varians unit variabel yang nilainya kurang
dari Nilai kuadrat tol berguna akan ditolak atau dikeluarkan.
na.action : suatu fungsi untuk penanganan data hilang
method : bernilai ‘"moment"’ untuk penaksir baku bagi rata-rata dan varianas,
"mle” untuk penaksir kemungkinan maksimum, ‘"mve"’ untuk digunakan
dalam ‘cov.mve’, atau "t" untuk penaksir robust berdasarkan distribusi t.
CV : bernilai “TRUE” untuk menampilkan cross-validation.
Nu : derajat bebas untuk metode "t".
Hasil yang dapat ditampilkan adalah sebagai berikut
prior : prior probabilities yang digunakan.
means : rata-rata kelompok.
scaling : menampilkan matriks yang mentransformasikan pengamatan menjadi
fungsi diskriminan.
svd : menampilkan dekomposisi nilai singular yaitu ratio simpangan baku
antar kelompok dengan simpangan baku dalam kelompok. Kuadrat dari
nilai ini adalah nilai statistik F.
n : banyak pengamatan yang digunakan.
call : fungsi yang dihasilkan.

Untuk analisis diskriminan linier data Ikan salmon dapat menggunakan perintah-perintah berikut

> library(MASS)
> fit <- lda(Ikan.Salmon ~ AirTawar + AirLaut, data=salmon,
na.action="na.omit")

Call:

lda(Ikan.Salmon ~ AirTawar + AirLaut, data = salmon, na.action = "na.omit")

Prior probabilities of groups:

Alaska Kanada

0.5 0.5

Group means:

AirTawar AirLaut

Alaska 98.38 429.66

Kanada 137.46 366.62


Coefficients of linear discriminants:

LD1

AirTawar 0.04458572

AirLaut -0.01803856

Kemudian apabila ingin mengetahui akurasi dari analisis diskriminan yang telah dibuat lakukan
prosedur berikut ini

# Menampilkan tabel keanggotaan sebenarnya dan hasil prediksi

> fit <- lda(Ikan.Salmon ~ AirTawar + AirLaut, data=salmon,


na.action="na.omit",CV=T)

> ct <- table(salmon$Ikan.Salmon, fit$class)

> ct

Alaska Kanada

Alaska 44 6

Kanada 1 49

# Menentukan persentase ketepatan keanggotaan untuk tiap kategori


> diag(prop.table(ct, 1))
Alaska Kanada

0.88 0.98

# Menentukan Total persentase ketepatan keanggotaan


> sum(diag(prop.table(ct)))

[1] 0.93

Secara umum kekeliruan dalam klasifikasi sebesar 7% cukup kecil. Artinya hanya sekitar 7 dari
100 ekor Ikan Salmon Alaska yang diklasifikasikan sebagai Ikan Salmon Kanada dan Ikan
Salmon Kanada yang diklasifikasikan sebagai Ikan Salmon Alaska.
Fungsi Diskriminan Kuadratik
Untuk memperoleh fungsi diskriminan kuadratik dapat melalui fungsi qda( ) atau lda( ). Fungsi
diskriminan kuadratik tidak mengasumiskan homogenitas matriks varians-kovarians. Kedua
fungsi ini ada didalam paket MASS. Uraian berikut adalah penjelasan mengenai penggunaan
fungsi qda.

> qda(x, ...)

atau

> qda(formula, data, ..., subset, na.action)

atau
> lda(x, grouping, prior = proportions, tol = 1.0e-4, method, CV = FALSE, nu, ...)

> qda(x, grouping, ..., subset, na.action)

keterangan:
formula : adalah model atau fungsi yang digunakan. Contoh ‘G ~ x1 + x2 + ...’
dalam hal ini G adalah variabel respon berupa data nominal yang
menjelaskan kelompok dan x1, x2, … adalah variabelnya.
data : berupa data frame dari variabel-variabel yang digunakan dalam formula
x : berupa matriks atau data frame dari variabel-variabel penjelas. Opsi ini
digunakan apabila formula tidak didefinisikan
grouping : suatu faktor yang mendefinisikan kelompok dari tiap pengamatan Opsi
ini digunakan apabila formula tidak didefinisikan
prior : adalah fungsi peluang prior dari keanggotaan kelompok.
tol : nilai toleransi yang digunakan apabila diperoleh matriks singular.
Variabel dan kombinasi linier varians unit variabel yang nilainya kurang
dari Nilai kuadrat tol berguna akan ditolak atau dikeluarkan.
na.action : suatu fungsi untuk penanganan data hilang
method : bernilai ‘"moment"’ untuk penaksir baku bagi rata-rata dan varianas,
"mle” untuk penaksir kemungkinan maksimum, ‘"mve"’ untuk digunakan
dalam ‘cov.mve’, atau "t" untuk penaksir robust berdasarkan distribusi t.
CV : bernilai “TRUE” untuk menampilkan cross-validation.
Nu : derajat bebas untuk metode "t".

Hasil yang dapat ditampilkan adalah sebagai berikut


prior : prior probabilities yang digunakan.
means : rata-rata kelompok.
scaling : menampilkan matriks yang mentransformasikan pengamatan menjadi
fungsi diskriminan.
svd : menampilkan dekomposisi nilai singular yaitu ratio simpangan baku
antar kelompok dengan simpangan baku dalam kelompok. Kuadrat dari
nilai ini adalah nilai statistik F.
n : banyak pengamatan yang digunakan.
call : fungsi yang dihasilkan.
Ldet : menampilkan vektor setengah log determinan matriks dispersi.
Lev : menampilkan tingkatan dari faktor kelompok
class : menampilkan mapping klasifikasi
posterior : menampilkan distribusi posterior

Berikut contoh penggunaan analisis diskriminan kuadratik dengan banyak kelompok adalah 3
dan banyak variabel adalah 4 dan ketiga kelompok mempunyai nilai peluang prior yang sama
> library(MASS)
> fit <- qda(G ~ x1 + x2 + x3 + x4, data=na.omit(mydata), prior=c(1,1,1)/3))

Menggambarkan Hasil
Semua pengamatan dapat diplot kedalam sebuah gambar dua dimensi dengan mengambil dua
fungsi diskriminan pertama

# Menggambarkan Histogram kedua kategori


plot(fit) # fit from qda

Menggambarkan scatterplot bagi kedua variabel untuk memperlihatkan keanggotaan kedua


kategori. Fungsi partimat( ) dalam paket klaR dapat menggambarkan hasil dari fungsi
diskriminan linier dua variabel. Perintah-perintah berikut adalah langkah-langlahnya

# Grafik Eksplorasi untuk Analisis Diskriminan Linier


> library(klaR)

> partimat(Ikan.Salmon ~ AirTawar + AirLaut, data=salmon, method="lda")

Selain itu juga bisa dibuat scatterplot dengan menggunakan warna untuk masing-masing
kategori. Untuk itu gunakan perintah-perintah berikut ini.

# Scatterplot
> pairs(salmon[c("AirTawar","AirLaut")], main="Plot Analisis Diskriminan Ikan
Salmon", pch=22, bg=c("red", "blue")[unclass(salmon$Ikan.Salmon)])
Dari Gambar diatas menunjukkan perbedaan kelompok Ikan Salmon dilihat dari dua variabel
diameter ikan pada saat hidup di air tawar dan diameter ikan pada saat hidup di air laut. Warna
merah adalah Ikan Salmon yang berasal dari Alaska dan warna biru menunjukkan Ikan Salmon
yang berasal dari Kanada.
MODUL V
ANALISIS KLASTER

1. Pendahuluan
Secara sederhana Analisis Klaster digunakan untuk menentukan pengelompokkan objek
atau pengamatan yang didasarkan atas kemiripan objek. Objek yang berada dalam satu
kelompok merupakan objek yang mirip satu sama lain dan sebaliknya yang berbeda kelompok
merupakan objek yang tidak mirip satu sama lain.Berbagai metode digunakan untuk
menentukan keanggotaan kelompok dalam analisis klaster. Secara umum analisis klaster dibagi
menjadi dua yaitu Analisis Klaster Hierarki dan Analisis Klaster Non-Hirarki.
Data yang digunakan dalam Analisis Klaster dapat berupa data pengamatan yang
berdistribusi Multivariat atau bisa berupa sebuah matriks simetris proximity yaitu kemiripan
antar objek (similarity) atau ketakmiripan antar objek (dissimilarity). Matriks korelasi bisa
digunakan sebagai matriks proximity sebagai ukuran kemiripan sedangakn matriks jarak
(misalnya Euclidian Distance) sebagai ukuran ketakmiripan.

2. Analisis Klaster Dalam R


Software R memiliki beragam fungsi untuk analisis klaster. Dalam bagian ini akan
dijelaskan tiga pendekatan dalam analisis klaster yaitu: Analisis Klaster hierarki agglomerative
dan Metode partitioning (K-means). Beberapa pendekatan dalam penentuan banyak klaster akan
dijelaskan pula dalam bagain ini.
Ilustrasi berikut merupakan penjelasan mengenai penggunaan software R untuk analisis
klaster hierarki. Data berikut dikumpulkan pada 22 perusahaan publik di Amerika Serikat pada
tahun 1975, pada tiap perusahaan diukur variabel-variabel berikut ini:
X1 : Fixed-charge coverage ratio
(income/debt) X2 : Rate of Return on capital
X3 : Cost per KW capacity in
place X4 : Annual load factor
X5 : Peak kWh demand grouth from 1974 to 1975
X6 : Sales (kWh use per year)
X7 : Percent nuclear
X8 : Total Fuel cost (cents per kWh)
Sumber : Johnson & Wichern 2002 halaman 687
Dengan menggunakan data tersebut perusahaan-perusahaan akan dikelompokkan berdasarkan
kedelapan variabel yang telah diukur.
Hal pertama yang harus dilakukan adalah mempersiapkan data agar dapat dianalisis.
Baris-baris berikut beberapa hal yang dapat dilakukan untuk mempersiapkan data

> dataku <- na.omit(dataku) # Menghilangkan/menghapus data hilang


> dataku <- scale(dataku) # membakukan variabel-variabel

2. Analisis Klaster Hierarki


Analisis Klaster Hierarki merupakan metode pengelompokkan yang didasarkan atas
konsep kedekatan antar objek. Oleh karena itu matriks jarak merupakan input yang diperlukan
dalam analisis ini. Beberapa metode dalam Analisis Klaster Hierarki adalah sebagai berikut
1. Metode Agglomerative / Metode Pautan (Linkage Method)
a) Pautan Tunggal (Single Linkage)
b) Pautan Lengkap (Complete Linkage)
c) Pautan Rata-rata (Average Linkage)
d) Metode Ward
2. Metode Divisive
Dalam Analisis Klaster Hierarki baik metode agglomerative maupun metode Divisive
menghasilkan suatu diagram dua dimensi yang disebut sebagai dendogram.
Dalam R untuk semua metode agglomerative dalam Analisis Klaster Hierarki dapat
menggunakan baris-baris perintah berikut ini
# Membuat Matriks Jarak

d <- dist(dataku, method =....)

Dalam hal ini metode diisi dengan jarak yang digunakan yaitu "euclidean", "maximum",
"manhattan", "canberra", "binary" atau "minkowski"

# Analisis Klaster Hierarki

fit <- hclust(d, method=....) # d adalah matriks jarak


plot(fit) # Menggambarkan dendogram
groups <- cutree(fit, k=k) # Memotong Dendogram untuk k
Klaster

Dalam hal ini metode diisi dengan metode klaster yang digunakan yaitu "ward", "single",
"complete" atau "average". Apabila tidak ingin terlihat tahap dalam dendogramnya gunakan
perintah berikut

> plot(fit, hang= -1)

# Menggambarkan Dendogram dengan warna dan banyak klaster ditentukan


rect.hclust(fit, k=5, border="red")

Analisis Klaster untuk data pada ilustrasi diatas menggunakan software R adalah sebagai
berikut
Menggunakan metode Single Lingkage
> publik<-read.csv("public.csv")

> str(publik)

'data.frame': 22 obs. of 8 variables:

$ x1 : num 1.06 0.89 1.43 1.02 1.49 1.32 1.22 1.1 1.34 1.12 ...

$ x2 : num 9.2 10.3 15.4 11.2 8.8 13.5 12.2 9.2 13 12.4 ...
$ x3 : int 151 202 113 168 192 111 175 245 168 197 ...
$ x4 : num 54.4 57.9 53 56 51.2 60 67.6 57 60.4 53 ...

$ x5 : num 1.6 2.2 3.4 0.3 1 -2.2 2.2 3.3 7.2 2.7 ...

$ x6 : int 9077 5088 9212 6423 3300 11127 7642 13082 8406 6455 ...

$ x7 : num 0 25.3 0 34.3 15.6 22.5 0 0 0 39.2 ...

$ x8 : num 0.63 1.56 1.06 0.7 2.04 1.24 1.65 0.31 0.86 0.62 ...

> publik1 <- scale(publik)

> d <- dist(publik1, method ="euclidean")

> fit <- hclust(d, method="single")

> plot(fit)

Apabila menggunakan metode Complete Linkage


> fit2 <- hclust(d, method="complete")

> plot(fit2)
Apabila menggunakan metode Average Linkage
> fit3 <- hclust(d, method="average")

> plot(fit3)
Apabila menggunakan metode Ward
> fit3 <- hclust(d, method="complete")

> plot(fit3)
Dari keempat metode yang digunakan terlihat menghasilkan Dendogram yang berbeda-
beda, sehingga kita harus memilih metode yang dapat mengelompokkan data dengan jelas.
Katakan saja dalam kasus ini kita akan menggunaka metode Ward untuk mengelompokkan data
kita. Selanjutnya kita akan mengelompokkan data dengan cara memotong dendogram menjadi 3
klaster menggunakan perintah berikut ini

> groups<-cutree(fit, k=3)

> rect.hclust(fit, k=3, border=”red”)


Dari hasil dendogram tersebut terlihat bahwa setiap kotak merupakan sebuah klaster
dengan anggotanya adalah setiap bilangan yang ada dalam kotak tersebut yang menyatakan
objek atau pengamatan.
Klaster 1 beranggotakan objek ke 2, 4, 5, 7, 10, 12, 13, 15, 17, 20, 21
Klaster 2 beranggotakan objek ke 1, 3, 6, 9, 14, 18, 22
Klaster 3 beranggotakan objek ke 8, 11, 16, 19
Salah satu kelebihan software R dalam Analisis Klaster adalah bisa menampilkan p-
value dari Analisis Klaster Hierarki berdasarkan metode bootstrap. Fungsi pvclust( ) dalam
paket pvclust yang digunakan untuk hal tersebut. Klaster-klaster yang sangat didukung oleh
data memiliki p-values yang tinggi. Tetapi perlu diperhatikan dalam paket pvclust yang
dikelompokkan adalah kolom bukan baris, sehingga data kita harus ditranspos terlebih dahulu.
Berikut perintah yang digunakan untuk fungsi pvclust
> library(pvclust)
> fit <- pvclust(mydata, method.hclust="ward",method.dist="euclidean")
> plot(fit) # Menggambarkan dendogram dengan p values
> pvrect(fit, alpha=.95) # Menambahkan kotak diantara kelompok
yang sangat didukung oleh data

Dalam modul ini tidak akan dibahas lebih lanjut mengenai penggunaan fungsi pvclust() ini.

3. Analisis Klaster Non Hierarki


Salah satu metode analisis klaster non hierarki atau disebut juga metode partioning yang
paling populer adalah Analisis Klaster K-means. Pada metode ini banyaknya klaster secara
pasti harus sudah diketahui. Sebuah cara sederhana yang dapat digunakan untuk menentukan
banyak klaster yang akan digunakan adalah plot dari jumlah kuadrat dalam klaster (within sum
of squares) dengan banyak klaster yang mana hasilnya mirip dengan screeplot dalam analisis
faktor. Berikut adalah perintah-perintah yang digunakan dalam Analisis Klaster K-Means

# Menentukan Banyak Klaster

> wss <- (nrow(dataku)-1)*sum(apply(dataku,2,var))


> for (i in 2:15) wss[i] <- sum(kmeans(dataku, centers=i)$withinss)
> plot(1:15, wss, type="b", xlab="Banyak Klaster",ylab="Jumlah Kuadrat dalam
Klaster")

# Analisis Klaster K-Means


> fit <- kmeans(dataku, banyak_klaster)

# Menentukan Rata-rata Klaster


> aggregate(dataku,by=list(fit$cluster),FUN=mean)

# Keanggotaan Klaster

> agt_klaster<- data.frame(dataku, fit$cluster)

Data sebelumnya digunakan untuk contoh penggunaan analisis klaster K-means. Berikut
Praktikum Analisis Data Multivariat II Menggunakan Software
R
adalah hasil yang diperoleh dari software R

> wss <- (nrow(publik1)-1)*sum(apply(publik1,2,var))

> for (i in 2:15) wss[i] <- sum(kmeans(publik1, centers=i)$withinss)

> plot(1:15, wss, type="b", xlab="Banyak Klaster",ylab="Jumlah Kuadrat dalam


Klaster")

Dari gambar diatas banyak klaster yang dapat diambil adalah 6 yaitu titik pada saat kurva mulai
melandai. Sehingga analisis klaster K-means adalah sebagai berikut

> fit <- kmeans(publik1, 6)

> fit

K-means clustering with 6 clusters of sizes 6, 1, 4, 3, 5, 3


Bertho Tantular - 57
Praktikum Analisis Data Multivariat II Menggunakan Software
R

Cluster means:
x1 x2 x3 x4 x5 x6
x7

1 0.04105853 -0.4469734 0.4285248 0.7485504 -0.3712261 -0.8536317


-0.2997473

2 -1.91907572 -1.9323833 -0.7812761 1.1034665 1.8468982 -0.9014253


-0.2203441

3 -0.13056613 0.2845910 -1.0422533 -0.7290215 -0.7507124 0.4747076


-0.7146294

4 -0.60027572 -0.8331800 1.3389101 -0.4805802 0.9917178 1.8565214


-0.7146294

5 -0.01133215 0.3313815 0.2189339 -0.3580408 0.1664686 -0.4018738


1.5650384

6 1.35082566 1.4394973 -0.9107532 0.1844205 -0.1413963 0.1880632


-0.2679860

x8

1 1.2132359

2 1.4679800

3 -0.6493932

4 -0.9655756

5 -0.5963464

6 -0.0904546

Clustering vector:

[1] 3 1 6 5 1 6 1 4 6 5 4 1 5 3 1 4 2 3 3 5 1 5

Within cluster sum of squares by cluster:

[1] 23.335588 0.000000 7.182296 9.534465 10.190007 10.152177

Available components:

Bertho Tantular - 58
[1] "cluster" "centers" "withinss" "size"

> aggregate(publik1,by=list(fit$cluster),FUN=mean)

Group.1 x1 x2 x3 x4 x5 x6

1 1 0.04105853 -0.4469734 0.4285248 0.7485504 -0.3712261 -0.8536317

2 2 -1.91907572 -1.9323833 -0.7812761 1.1034665 1.8468982 -0.9014253

3 3 -0.13056613 0.2845910 -1.0422533 -0.7290215 -0.7507124 0.4747076

4 4 -0.60027572 -0.8331800 1.3389101 -0.4805802 0.9917178 1.8565214

5 5 -0.01133215 0.3313815 0.2189339 -0.3580408 0.1664686 -0.4018738


6 6 1.35082566 1.4394973 -0.9107532 0.1844205 -0.1413963 0.1880632

x7 x8

1 -0.2997473 1.2132359

2 -0.2203441 1.4679800

3 -0.7146294 -0.6493932

4 -0.7146294 -0.9655756

5 1.5650384 -0.5963464
6 -0.2679860 -0.0904546

> agt_klaster<- data.frame(publik1, fit$cluster)

> agt_klaster

x1 x2 x3 x4 x5 x6

1 -0.29315791 -0.68463896 -0.417122002 -0.57771516 -0.52622751 0.04590290

2 -1.21451134 -0.19445367 0.821002037 0.20683629 -0.33381191 -1.07776413

3 1.71214073 2.07822360 -1.339645796 -0.89153574 0.05101929 0.08393124

4 -0.50994695 0.20660702 -0.004413989 -0.21906307 -0.94312798 -0.70170610

5 2.03732429 -0.86288816 0.578232617 -1.29501935 -0.71864311 -1.58142837

6 1.11597086 1.23153991 -1.388199680 0.67756716 -1.74485965 0.62337028

7 0.57399826 0.65223002 0.165524604 2.38116460 -0.33381191 -0.35832428

8 -0.07636887 -0.68463896 1.864910540 0.00509449 0.01895002 1.17407698

9 1.22436538 1.00872841 -0.004413989 0.76723019 1.26965142 -0.14311204

10 0.03202565 0.74135462 0.699617327 -0.89153574 -0.17346558 -0.69269198


11 -1.97327298 -1.44219805 0.116970720 -1.22777208 1.04516655 2.40196983

12 0.08622291 0.07292013 0.238355430 1.12588228 0.14722709 -0.77748109

13 0.19461744 0.87504152 0.748171211 -0.73462545 1.01309729 -0.48874740

14 -0.13056613 0.56310542 -1.752353809 -1.60883993 -0.59036605 0.21379097

15 -0.83513051 -1.39763576 -0.101521757 1.17071379 -1.07140505 -0.68902999

16 0.24881470 -0.37270287 2.034849134 -0.21906307 1.91103676 1.99351729

17 -1.91907572 -1.93238335 -0.781276132 1.10346652 1.84689822 -0.90142531

18 -0.34735517 0.83047922 -0.441398944 -0.06215278 -0.17346558 0.34534086

19 0.24881470 0.42941852 -1.558138274 -0.66737818 -1.71279038 1.29379583

20 0.46560374 0.47398082 -0.489952828 0.65515141 0.08308855 -0.45832473

21 -0.40155243 -0.95201276 0.869555920 0.90172472 0.08308855 -0.63776215

22 -0.23896065 -0.64007666 0.141247662 -0.60013092 0.85275095 0.33210137

x7 x8 fit.cluster

1 -0.7146294 -0.85168995 3

2 0.7920476 0.82063024 1

3 -0.7146294 -0.07846664 6

4 1.3280197 -0.72581638 5

5 0.2143888 1.68376323 1

6 0.6253007 0.24520824 6

7 -0.7146294 0.98246767 1

8 -0.7146294 -1.42711195 4

9 -0.7146294 -0.43810539 6

10 1.6198267 -0.86967188 5

11 -0.7146294 -0.59994282 4

12 -0.7146294 1.43201611 1

13 2.2749037 -1.03150932 5

14 -0.7146294 -0.92361770 3

15 -0.6610322 0.53291924 1

16 -0.7146294 -0.86967188 4

17 -0.2203441 1.46797999 2

18 -0.7146294 0.01144305 3
19 -0.7146294 -0.83370801 3

20 1.7329764 -0.72581638 5

21 -0.7146294 1.82761873 1
22 0.8694658 0.37108180 5

Menggambarkan Hasil
Dalam software R memungkinkan kita untuk menggambarkan hasil analisis klaster K-
means. Untuk itu harus menggunakan paket Cluster dan paket fpc.Perintah-perintah berikut
yang digunakan untuk menggambarkan klaster yang terbentuk

> library(cluster)
> clusplot(publik1, fit$cluster, color=TRUE, shade=TRUE, labels=2, lines=0)
Dari gambar terlihat dengan jelas anggota dari masing-masing klaster dari warna dan bentuk
titik masing-masing klaster.

> library(fpc)
> plotcluster(publik1, fit$cluster)
Terlihat dari gambar keanggotaan tiap klaster dengan menggunakan angka dan warna untuk
masing-masing klaster tetapi objek yang menjadi anggota klasternya tidak terlihat.
Fungsi lain yang dapat digunakan untuk analisis klaster adalah metode validasi dari
klaster atau lebih tepatnya perbandingan dari dua metode klaster. Fungsi cluster.stats() dalam
paket fpc adalah suatu metode membandingkan kesamaan dua hasil klaster menggunakan
kriteria validasi Hubert's gamma coefficient, the Dunn index dan the corrected rand index.
Baris-basris berikut adalah metode validasi secara umum

# membandingkan 2 hasil klaster

> library(fpc)
> cluster.stats(d, fit1$cluster, fit2$cluster)

dengan d adalah matriks jarak fit1 dan fit2 adalah hasil dari dua metode klaster yang digunakan
untuk data yang sama.
4. Multidimensioal Scalling
Multidimensional scalling adalh suatu teknik statistika multivariat yang bertujuan untuk
menganalisis kemiripan (similarity) dan ketakmiripan (dissimilarity) antar objek. Hasil dari
analisis multidimensional scalling adalah berupa gambar titik-titik yang mana jarak antar titik
menunjukkan kemiripan atau ketakmiripan. Selain itu penggunaan multidimensional scalling
juga dapat memberikan petunjuk untuk mengidentifikasi peubah yang tidak diketahui atau
faktor yang memengaruhi munculnya kemiripan atau ketakmiripan.
Dalam software R fungsi yang digunakan untuk multidimensoinal scalling dibedakan
menjadi dua yaitu classical multidimensional scalling (Classical MDS) dan nonmetric
multidimensional scaling (Nonmetric MDS). Input data yang dibutuhkan dalam
multidimensional scalling adalah N objek yang diukur (baris) dalam p variabel numerik
(kolom).

Classical MDS
Untuk classical MDS dapat digunakan fungsi cmdscale( ) dengan perintah-perintah sebagai
berikut:

> d <- dist(dataku) # jarak euclidean antar baris

> fit <- cmdscale(d,eig=TRUE, k=2) # dalam 2 dimensi

> fit # menampilkan hasil

Input data adalah dataku dengan N baris dan p kolom

# Menggambarkan hasil
> x <- fit$points[,1]
> y <- fit$points[,2]
> plot(x, y, xlab="Nama Koordinat 1", ylab="Nama Koordinat 2",
main="Classical MDS", type="n")
> text(x, y, labels = row.names(dataku), cex=.7)
Praktikum Analisis Data Multivariat II Menggunakan Software
R

Data mengenai jarak udara antar 12 kota terpilih di amerika serikat sebagai ilustrasi
penggunaan classical MDS dalam software R. Data yang digunakan telah berupa jarak
sebenarnya antar kota. (Johnson & Wichern 2002, halaman 703)
Hal pertama yang mesti dilakkukan adalah menginput data berupa matriks simetris
kemudian diberi nama misalkan airline.csv (dalam format .csv). Kemudian lanjutkan dengan
perintah-perintah berikut ini sehingga keluar output yang diinginkan

> airline<-read.csv("airline.csv")

> names(airline)<-
c("Atlanta","Boston","Cincinati","Columbus","Dallas","Indianapolis","Little
Rock","Los Angeles","Memphis","St.Louis","Spokane","Tampa")

> d<-as.dist(airline)

> d

Atlanta Boston Cincinati Columbus Dallas Indianapolis Little


Rock

Boston 1068

Cincinati 461 867

Columbus 549 769 107

Dallas 805 1819 943 1050

Indianapolis 508 941 108 172 882

Little Rock 505 1494 618 725 325 562

Los Angeles 2197 3052 2186 2245 1403 2080


1701

Memphis 366 1355 502 586 464 436


137

St.Louis 558 1178 338 409 645 234


353

Spokane 2467 2747 2067 2131 1891 1959


1988

Tampa 467 1379 928 985 1077 975


Bertho Tantular - 65
912

Los Angeles Memphis St.Louis Spokane

Boston

Cincinati

Columbus

Dallas

Indianapolis

Little Rock

Los Angeles

Memphis 1831

St.Louis 1848 294

Spokane 1227 2042 1820


Tampa 2480 779 1016 2821

> fit <- cmdscale(d,eig=TRUE, k=2)

> fit $points

[,1] [,2]

Atlanta -539.553369 295.5910

Boston -1110.896190 -710.4137

Cincinati -361.088094 -232.6231

Columbus -420.410259 -287.8358

Dallas 275.413193 490.9508

Indianapolis -254.115644 -237.7739

Little Rock 3.782515 289.5550

Los Angeles 1704.311998 480.7388

Memphis -118.427684 223.8966

St.Louis -55.803594 -110.0129

Spokane 1654.001584 -817.4730


Tampa -777.214456 615.4001

Output diatas adalah koordinat yang diperlukan untuk menggambarkan ke 12 kota dalam 2
dimensi. Untuk menampilkan gambarnya lanjutkan dengan perintah-perintah berikut ini
> y <- fit$points[,1]
> x <- fit$points[,2]
> plot(x, y, main="Classical MDS", type="p", pch=20)
> text(x, y, labels = names(airline), cex=0.7, pos=3)

Gambar diatas menunjukkan setiap titik-titik yang berdekatan menunjukkan lokasi kota
yang juga berdekatan begitu pula sebaliknya. Dalam ilustrasi ini memperlihatkan kemiripan
antar objek adalah kedekatan jarak sebenarnya secara geografis.

Nonmetric MDS

Selain untuk data metrik multidimensional scalling juga dapat dilakukan untuk data
Praktikum Analisis Data Multivariat II Menggunakan Software
R
nonmetrik yang disebut Nonmetric MDS. Dalam software R Nonmetrik MDS dapat dianalisis
menggunakn fungsi isoMDS( ) dalam paket MASS. Baris perintah berikkut adalah tahapan
dalam Nonmetric MDS

> library(MASS)
> d <- dist(dataku) # jarak euclidean antar baris

> fit <- isoMDS(d, k=2) # MDS dalam 2 dimensi

> fit # menampilkan hasil

# Menggambarkan hasil
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, main="Nonmetric MDS", type="p", pch=20)
text(x, y, labels = row.names(mydata), cex=.7)

5. Analisis Korespondensi
Analisis Korespondensi adalah suatu prosedur grafis untuk menjelaskan asosiasi dalam
tabel frekuensi terutama pada tabel frekuensi dua arah atau disebut juga tabel kontingensi.
Dalam tabel kontingensi terdiri atas I baris dan J kolom. Analisis korespondensi menghasilkan
titik-titik yang diplotkan dalam grafik yang terdiri atas dua set yaitu sebanyak I titik pada set
pertama yang menyatakan baris dan sebanyak J titik pada set kedua yang menyatakan kolom.
Posisi titik pada grafik menyatakan asosiasi antara keduanya.
Analisis Korespondensi secara umum merupakan metode grafik dalam eksplorasi
hubungan antara dua variabel dalam tabel kontingensi, tentunya variabel yang digunakan besifat
kategori. Grafik yang dihasilkan dalam analisis korespondensi merupakan grafik mdua dimensi.
Dengan titik-titik merupakan kategori dari masing-masing variabel.
Dalam software R ada beberapa fungsi yang dapat digunakan untuk analisis
korespondensi salah satunya adalah paket ca. Paket yang dibuat oleh Nenadic dan Greenacre ini
menghasilkan nilai-nilai yang diperlukan dalma analisis korespondensi selain itu juga
menghasilkan grafik yang sesuai. Paket ca dapat menganalisis multiple correspondence yaitu
apabila variabel kategorinya lebih dari dua. Tetapi dalam modul ini hanya dibahas untuk analisis
Bertho Tantular - 68
korespondensi sederhana yaitu dua variabel kategori saja.
Ilustrasi berikut merupakan contoh data yang akan digunakan dalam analisis
korespondensi mengunakan software R. Data yang digunakan mengenai situs-situs arkeologi
yang ada di amerika selatan. Ada 7 kategori situs (P0, P1, P2, P3, P4, P5, P6) yang digunakan
dalam penelitian ini dan dibagi dalam 4 tipe pottery (A, B, C, D) yang berbeda. (Johnson &
Wichern 2002, halaman 709).
Untuk menganalisis korespondensi data tersebut menggunakan software R pertama-tama
input data dan simpan dengan format csv kemusian gunakan perintah-perintah berikut ini

> situs<-read.csv(“situs.csv”)

> tabel1<-xtabs(y~Situs+Tipe, data=situs) # Membuat tabel


kontingensi

> tabel1

Tipe

Situs A B C D

P0 30 10 10 39

P1 53 4 16 2

P2 73 1 41 1

P3 20 6 1 4

P4 46 36 37 13

P5 45 6 59 10
P6 16 28 169 5

> prop.table(tabel1, 1) # Menhitung proporsi tiap baris

Tipe

Situs A B C D

P0 0.33707865 0.11235955 0.11235955 0.43820225

P1 0.70666667 0.05333333 0.21333333 0.02666667


P2 0.62931034 0.00862069 0.35344828 0.00862069

P3 0.64516129 0.19354839 0.03225806 0.12903226

P4 0.34848485 0.27272727 0.28030303 0.09848485

P5 0.37500000 0.05000000 0.49166667 0.08333333


P6 0.07339450 0.12844037 0.77522936 0.02293578

> prop.table(tabel1, 2) # Menampilkan proporsi tiap kolom

Tipe

Situs A B C D

P0 0.106007067 0.109890110 0.030030030 0.527027027

P1 0.187279152 0.043956044 0.048048048 0.027027027

P2 0.257950530 0.010989011 0.123123123 0.013513514

P3 0.070671378 0.065934066 0.003003003 0.054054054

P4 0.162544170 0.395604396 0.111111111 0.175675676

P5 0.159010601 0.065934066 0.177177177 0.135135135


P6 0.056537102 0.307692308 0.507507508 0.067567568

> library(ca)

Loading required package: rgl

> fit <- ca(tabel1) # Analisis Korespondensi

> fit # Menampilkan hasil

Principal inertias (eigenvalues):

1 2 3

Value 0.283588 0.170107 0.058786


Percentage 55.34% 33.19% 11.47%

Rows:

P0 P1 P2 P3 P4 P5 P6

Mass 0.113956 0.096031 0.148528 0.039693 0.169014 0.153649 0.279129


ChiDist 1.215782 0.718887 0.622375 0.805202 0.510045 0.223132 0.755982

Inertia 0.168442 0.049628 0.057532 0.025735 0.043968 0.007650 0.159525

Dim. 1 1.726644 0.710109 0.258106 1.314784 0.278019 -0.147142 -1.360869


Dim. 2 -1.823771 1.482365 1.420528 0.535927 -0.327672 0.209840 -0.514610

Columns:

A B C D

Mass 0.362356 0.116517 0.426376 0.094750

ChiDist 0.608270 0.727924 0.578220 1.355601

Inertia 0.134069 0.061739 0.142554 0.174118

Dim. 1 0.789392 -0.014957 -1.059346 1.766557


Dim. 2 1.065840 -0.869081 -0.163493 -2.271664

> summary(fit) # Menampilkan hasil lainnya

Principal inertias (eigenvalues):

dim value % cum% scree plot

1 0.283588 55.3 55.3 *************************

2 0.170107 33.2 88.5 ************

3 0.058786 11.5 100.0

Total: 0.512481 100.0

Rows:

name mass qlt inr k=1 cor ctr k=2 cor ctr

1 | P0 | 114 955 329 | 919 572 340 | -752 383 379 |

2 | P1 | 96 1000 97 | 378 277 48 | 611 723 211 |

3 | P2 | 149 935 112 | 137 49 10 | 586 886 300 |

4 | P3 | 40 831 50 | 700 756 69 | 221 75 11 |


5 | P4 | 169 154 86 | 148 84 13 | -135 70 18 |
6 | P5 | 154 274 15 | -78 123 3 | 87 150 7 |
7 | P6 | 279 998 311 | -725 919 517 | -212 79 74 |

Columns:

name mass qlt inr k=1 cor ctr k=2 cor ctr

1 | A | 362 1000 262 | 420 478 226 | 440 522 412 |

2 | B | 117 243 120 | -8 0 0 | -358 242 88 |

3 | C | 426 965 278 | -564 952 478 | -67 14 11 |


4 | D | 95 959 340 | 941 482 296 | -937 478 489 |

> plot(fit)

Titik-titik baris (berbentuk bulat) pada gambar yang berdekatan memiliki profil kolom
yang mirip begitupun sebaliknya titik-titik kolom (berbentuk segitiga) pada gambar yang
berdekatan memiliki profil baris yang mirip. Tetapi kita tidak dapat menginterpretasikan jarak
antar titik-titik kolom dan baris secara langsung.

# Untuk menggambarkan dengan warna yang berbeda antar kelompok

> plot(fit, mass = TRUE, contrib = "absolute", map ="rowgreen")

6. Analisis Biplot
Analisis Biplot adalah representasi grafis mengenai informasi yang ada dalam matriks
data berdimensi n x p. Dalam Biplot meliputi dua macam informasi yang ada dala matriks data
yaitu informasi mengenai baris yang berarti unit-unit sampling dan informasi mengenai kolom
yang berarti variabel-variabel. Apabila hanya dua variabel saja maka untuk merepresentasikan
kedua informasi ini dapat menggunakan scatter plot. Tetapi untuk variabel lebih dari dua
diperlukan suatu alat yang dapat memberikan informasi mengenai kedua hal tadi yaitu analisis
biplot.
Secara umum Biplot dapat menyajikan posisi relatif n objek pengamatan dengan p
variabel secara simultan dalam grafik dua dimensi. Sehingga dari penggambaran tersebut dapat
diperoleh informasi mengenai hubungan diantara variabel-variabel, kesamaan relatif dari titik-
titik data individu dan posisi relatif antara individu dengan variabel.
Ilustrasi berikut akan memberikan gambaran mengenai penggunaan Biplot. Data yang
digunakan mengenai 25 Universitas di Amerika Serikat. Dari 25 universitas tersebut diukur
variabel-variabel yang mendukung pada ranking universitas. Variabel yang digunakan adalah
sebagai berikut:
X1 : Rata-rata nilai mahasiswa baru
X2 : persentase mahasiswa baru berasal dari SMA favorit (10 besar)
X3 : Persentase pendaftar yang diterima
X4 : rasio mahasiswa-fakultas
X5 : Nilai harapan belanja tahunan
X6 : Tingkat kelulusan (%)
Data ini akan dibakukan karena ukuran dari variabel-variabel berbeda-beda. (Johnson &
Wichern 2002, halaman 722)
Dalam software R penggunaan Biplot bisa menggunakan fungsi biplot() atau fungsi
bpca() yang terdapat pada paket bpca.

Penggunaan Fungsi biplot()


Input data yang digunakan dalam biplot adalah nilai-nilai komponen utama. Sehingga
penggunaan fungsi biplot() untuk data diatas adalah sebagai berikut

> univ<-read.csv("univ.csv") # membaca data


> univ2<-scale(univ) # Membakukan data
> biplot(prcomp(univ), scale=FALSE) # Analisis biplot
Penggunaan Fungsi bpca()
Input data yang digunakan dalam biplot adalah nilai-nilai komponen utama. Sehingga
penggunaan fungsi biplot() untuk data diatas adalah sebagai berikut

> library(bpca)
> plot(bpca(univ3, var.scale=TRUE), var.cex=1,obj.cex=1)
Secara umum hasil dari kedua fungsi ini menghasilkan gambar yang mirip, hanya saja
fungsi bpca() memperlihatkan gambar yang sedikit lebih jelas dibandingkan dengan fungsi
biplot().
DAFTAR PUSTAKA

Johnsom, Richard A, Wichern, Dean W. (2002) Applied Multivariate Statistical Analysis.


Pearson Education International, New Jersey.

Maindonald, John, Barun, W John. (2006) Data Analysis and Graphics Using R – an Example-
Based Approach . Cambridge University Press. UK

http://www.statmethods.net/advstats/

http://cran.r-project.org/packages/

Anda mungkin juga menyukai