Flower photo created by Racool_studio - www.freepik.com

Analisis Diskriminan

Analisis Diskriminan merupakan salah satu analisis multivariat yang bertujuan untuk memisahkan beberapa objek ke dalam beberapa kelompok atau kategori dengan cara membentuk sebuah fungsi yang memaksimalkan pemisahan antar kelompok tersebut yang biasa disebut sebagai fungsi diskriminan. Fungsi diskrimininan merupakan fungsi yang terdiri atas kombinasi liniear berbagai variabel prediktor. Pada nantinya akan terbentuk fungsi diskrimininan sebanyak jumlah kelas atau kategori dikurangi satu yang dapat memisahkan data.

Lebih lanjut lagi, analisis diskriminan merupakan teknik interdependensi dimana informasi kategori atau kelas data sudah diketahui dan ingin dilihat hubungan kategori atau kelas tersebut dengan variabel prediktor. Analisis diskriminan digunakan pada kasus dimana variabel respons berupa data kategorik dan variabel prediktor berupa data numerik. Secara umum tujuan dari analisis diskriminan adalah :

Analisis Diskriminan vs. PCA

Secara umum metode analisis diskriminan serupa dengan metode PCA namun tak sama. Persamaannya adalah kedua metode merupakan metode yang mereduksi dimensi data menjadi dimensi yang lebih kecil dengan cara membentuk sebuah persamaan yang terdiri atas kombinasi linear dari berbagai variabel. Perbedaanya adalah pada 1] analisis diskriminan berfokus untuk membentuk persamaan yang dapat memaksimalkan pemisahan antar kelompok dan analisis ini membutuhkan informasi variabel respons berupa data ketegorik guna membentuk persamaannya. Persamaan ini biasa dinyatakan dalam sebuah fungsi yang dinamakan sebagai fungsi diskriminan. Di sisi lain, pada 2] PCA berfokus untuk membentuk persamaan yang dapat memaksimalkan & menjelaskan keragaman data dan analisis ini tidak membutuhkan informasi variabel respons saat membentuk persamaannya. Persamaan ini biasa dinyatakan dalam sebuah fungsi yang dinamakan sebagai principal component.

Asumsi pada Analisis Diskriminan

Berbagai asumsi yang diterapkan ketika melakukan analisis diskriminan adalah :

1. Variabel Prediktor berdistribusi Multivariate Normal.

Uji ini dapat dilakukan dengan mengamati grafik Chi-Square QQ Plot. Jika pada grafik terbentuk garis linear X = Y, maka dapat dikatakan variabel prediktor berdistribusi multivariate normal.

2. Matriks Ragam-peragam Variabel Prediktor Antar Kelompok Sama.

Dalam prakteknya terdapat kelonggaran pada asumsi ini. Asumsi ini berlaku jika ingin membuat fungsi diskriminan yang linear, namun jika ia tidak terpenuhi atau matriks ragam-peragamnya tidak sama, maka solusi yang dapat dilakukan adalah dengan model diskriminan yang kuadratik. Hipotesis pada asumsi ini adalah : \[H_{0} : \sum_{1} = \sum_{2} = ... = \sum_{p}\] \[H_{1} : minimal\ terdapat \ satu\ matriks\ ragam-peragam\ yang\ berbeda \]

3. Terdapat Perbedaan Rata-rata Antar Kelompok Data.

Untuk menguji apakah terdapat perbedaan antar kelompok data, dapat menggunakan Uji Manova atau statistik uji Wilk’s Lambda.

Hipotesis pada asumsi ini adalah :

\[H_{0} : \mu_{1} = \mu_{2} = ... = \mu_{p}\]

\[H_{1} : minimal\ terdapat \ satu\ rata-rata \ yang\ berbeda\]

Ukuran Performa Model

Digunakan untuk mengetahui seberapa besar keakurasian model dalam mengklasifikasi suatu objek. Ukuran yang digunakan adalah Hit Ratio atau Apparent Error Rate (APER). &Hit Ratio merupakan proporsi objek yang diklasifikasikan benar oleh model, sedangkan APER kebalikannya, yaitu proporsi objek yang diklasifikan salah oleh model. Untuk memudahkan dalam pengitungannya, perlu dibuat sebuah Confusion Matrix, yaitu matriks tabulasi silang antara kategori sebenarnya dengan kategori yang diprediksi oleh model.

Predicted Predicted
Group 1 Group 2
Actual Group 1 \[n_{C1}\] \[n_{M1}\]
Actual Group 2 \[n_{M2}\] \[n_{C2}\]

Nilai Hit Ratio dapat dihitung dengan rumus :

\[Hit \ Ratio \ = \frac{n_{C1}+n_{C2}}{n_{C1}+n_{M1}+n_{M2}+n_{C2}}\]

Sedangkan APER dapat dihitung dengan rumus :

\[APER \ = 1 - Hit \ Ratio\]

Contoh Kasus : Pengelompokkan Species Bunga pada Dataset Iris.

Data yang digunakan adalah data Iris yang sudah termuat di dalam R. Data Iris terdiri atas 150 pengamatan bunga Iris dengan variabel : 1] Sepal Length, 2] Sepal Width, 3] Petal Length, 4] Petal Width, dan 5] Species dari bunga Iris tersebut. Tujuan dilakukan analisis adalah untuk mengelompokkan spesies bunga Iris berdasarkan informasi yang tertera dengan metode Analisis Diskriminan.

syntax yang ada di artikel ini dapat diunduh disini

Load Library dan Dataset

library(DT)     #Menampilkan tabel agar mudah dilihat di browser
library(MVN)    #Uji multivariate normal
library(MASS)   #Fungsi diskriminan analisis
library(biotools) #Melakukan uji Box-M
## ---
## biotools version 3.1
data("iris")
datatable(iris)

Pengujian Asumsi

Multivariate Normal

Ketika menguji apakah variabel prediktor berdistribusi multivariate normal, di R dapat menggunakan fungsi mvn. Pengujian dilakukan hanya pada variabel prediktor (berskala numerik).

mvn(data = iris[, c(1:4)], multivariatePlot = 'qq') #hanya mengambil kolom variabel prediktor

Dari grafik Chi-Square QQ Plot diatas, dapat dilihat bahwasanya secara umum terbentuk garis linear X = Y, maka dapat dikatakan bahwa data berdistribusi multivariate normal.

Matriks Ragam-peragam antar Kategori Spesies Sama

Untuk menguji apakah matriks ragam-peragam antar kategori spesies sama, digunakan statistik uji Box’s M. untuk melakukan uji statistik Box’s M di R dapat menggunakan fungsi boxM.

boxM(data = iris[, c(1:4)], grouping = iris[,5])
## 
##  Box's M-test for Homogeneity of Covariance Matrices
## 
## data:  iris[, c(1:4)]
## Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16

Output diatas menunjukkan bahwa dengan tingkat signifikansi 5%, didapat keputusan untuk menolak hipotesis nol atau dengan kata lain terdapat perbedaan matriks ragam-peragam antar kategori spesies. Solusinya adalah menggunakan model diskriminan kuadratik, namun pada contoh ini mengabaikan asumsi ini sehingga tetap menggunakan model diskriminan linear.

Terdapat perbedaan rata-rata antar kategori spesies

Untuk menguji apakah terdapat perbedaan rata-rata (nilai variabel prediktor) antar kategori spesies, digunakan Uji Manova dengan statistik uji Wilk’s Lambda . Untuk melakukan uji tersebut di R dapat menggunakan fungsi manova dan mengisikan Wilks pada parameter test.

m <- manova(formula = cbind(iris$Sepal.Length, iris$Sepal.Width, iris$Petal.Length,
                            iris$Petal.Width) ~ iris$Species)
summary(object = m, test = 'Wilks')
##               Df    Wilks approx F num Df den Df    Pr(>F)    
## iris$Species   2 0.023439   199.15      8    288 < 2.2e-16 ***
## Residuals    147                                              
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Output diatas menunjukkan bahwa dengan tingkat signifikansi 5%, didapat keputusan untuk menolak hipotesis nol atau dengan kata lain terdapat perbedaan rata-rata (nilai variabel prediktor) antar kategori spesies.

Memulai Analisis Diskriminan

Membagi dataset ke dalam Training dan Test.

Training Data digunakan untuk membuat model diskriminan sedangkan Testing Data digunakan untuk mengevaluasi performa model diskriminan yang terbentuk. Pada contoh ini, dataset Iris akan dibagi menjadi 75% sebagai Training Data dan 25% sebagai Test Data.

set.seed(123)
train_index <- sample(seq(nrow(iris)), size = floor(0.75 * nrow(iris)), replace = F)
training_data <- iris[train_index, ] 
test_data <- iris[-train_index, ]

Membentuk fungsi diskriminan

Di dalam R, untuk melakukan analisis diskriminan dapat menggunakan fungsi lda yang terdapat pada library MASS. Model yang dibentuk berdasarkan data yang terdapat pada Training Data.

linearDA <- lda(formula = Species ~., data = training_data)
linearDA
## Call:
## lda(Species ~ ., data = training_data)
## 
## Prior probabilities of groups:
##     setosa versicolor  virginica 
##  0.3482143  0.3303571  0.3214286 
## 
## Group means:
##            Sepal.Length Sepal.Width Petal.Length Petal.Width
## setosa         4.997436    3.482051     1.448718   0.2487179
## versicolor     5.956757    2.770270     4.308108   1.3405405
## virginica      6.600000    2.997222     5.541667   2.0027778
## 
## Coefficients of linear discriminants:
##                     LD1          LD2
## Sepal.Length  0.5867651  0.004753014
## Sepal.Width   1.6320591  2.388948706
## Petal.Length -1.9853968 -0.666265458
## Petal.Width  -2.7922397  2.419828272
## 
## Proportion of trace:
##    LD1    LD2 
## 0.9898 0.0102

Beberapa output dari fungsi lda adalah sebagai berikut =

  • means = rata-rata nilai variabel prediktor pada tiap grup
  • priors = peluang yang digunakan (jika tidak disebutkan, maka menggunakan proposi tiap grup)
  • scalling = matriks yang berisikan fungsi diskriminan yang dinormalkan

Untuk mengetahui variabel mana yang berpengaruh terhadap perbedaan spesies bunga, salah satu caranya adalah dengan melihat plot antara fungsi diskriminan.

plot(linearDA, col = as.integer(training_data$Species))

Dilihat dari plot diatas, dapat dikatakan secara umum model mampu mengelompokkan data dengan baik walaupun terdapat sedikit overlap pada kategori Versicolor dan Virginica. Dapat dilihat pula fungsi diskriminan LD1 berperan besar dalam membedakan antara kategori bunga, sedangkan fungsi diskriminan LD2 tidak berperan besar dalam membedakan kategori bunga.

Melakukan prediksi di Test Data dan Menguji Performa Model yang dibuat

Untuk melakukan prediksi menggunakan fungsi predict dari model yang diterapkan kepada Test Data.

predicted <- predict(object = linearDA, newdata = test_data)
table(actual = test_data$Species, predicted = predicted$class)
##             predicted
## actual       setosa versicolor virginica
##   setosa         11          0         0
##   versicolor      0         13         0
##   virginica       0          0        14

Secara keseluruhan model cocok diterapkan, karena model dapat mengklasifikasikan dengan benar seluruh objek yang berada pada Test Data. Nilai Hit Ratio yang diperoleh adalah 1.

Referensi