Pengklasifikasian Kejadian Diabetes dengan Analisis Diskriminan Kuadratik

Ayu Ragawati Alam Tyas

06 November 2023

Library:

> # install.packages("knitr")
> # install.packages("rmarkdown")
> # install.packages("prettydoc")
> # install.packages("equatiomatic")

1 PENDAHULUAN

1.1 Latar Belakang Kasus

Menurut pernyataan dari International Diabetes Federation (IDF), diabetes merupakan salah satu penyakit yang sangat umum terjadi di seluruh dunia pada era globalisasi. Diabetes adalah sebuah kondisi kronis di mana tingkat gula dengan molekul sederhana (glukosa) dalam darah meningkat karena tubuh tidak mampu menghasilkan atau menggunakan insulin dengan benar. Penyebab diabetes dapat bervariasi, termasuk faktor genetik, gaya hidup yang tidak sehat, kurangnya aktivitas fisik, kelebihan berat badan (obesitas), dan lain sebagainya. Pada tahun 2015, Indonesia menempati peringkat ke-4 dalam hal jumlah penderita diabetes di dunia setelah India, China, dan Amerika Serikat.

Penderita diabetes umumnya didominasi oleh masyarakat pada usia lanjut. Masyarakat pada usia lanjut harus diberikan edukasi yang bertujuan untuk meminimalisir efek dari penyakit diabetes sehingga tidak menyebabkan komplikasi terhadap organ tubuh lainnya, selain kadar gula darah yang semakin meningkat. Apabila seseorang memiliki kadar gula darah dimana kadarnya sedikit melebihi batas normal maka belum dapat didagnosis sebagai penderita diabetes. Pada keadaan tersebut dapat dikatakan sebagai penderita pradiabetes. Penyebab kadar gula darah semakin meningkat bervariasi, seperti makanan tinggi lemak, pemanis buatan, dsb. (Bety, 2017)

1.2 Data yang Digunakan

Data yang digunakan berasal dari skripsi Bety Suryani Putri Mahasiswa Prodi Matematika UNJ yang teridiri dari 149 pasien Puskesmas Kecamatan Pesanggrahan Kota Jakarta Selatan namun dalam analisis kali ini diambil 60 responden yang 50% diantaranya merupakan pasien pradiabetes dan 50% lainnya adalah pasien diabetes. Dalam analisis diskriminan untuk mengklasifikasikan pradiabetes dan diabetes berdasarkan faktor-faktor penyebabnya, yaitu:

X1: Usia

X2: Berat Badan

X3: Tingkat Kolesterol

X4: Tekanan Darah Sistolik

Y: 0 (pra diabetes) dan 1 (diabetes)

1.3 Latar Belakang Metode

Pentingnya mengklasifikasikan antara individu yang mengalami pradiabetes dan diabetes menjadi fokus yang perlu diperhatian, karena hal ini dapat digunakan untuk upaya pencegahan dini sebelum timbulnya komplikasi, serta untuk mengidentifikasi faktor-faktor yang signifikan dalam mengubah kadar gula darah seseorang. Ada berbagai metode statistik yang dapat digunakan untuk mengkaji klasifikasi kejadian diabetes, seperti analisis komponen utama, analisis regresi berganda, dan analisis diskriminan. Pendekatan pengklasifikasian yang menggunakan metode diskriminan dipilih karena diabetes terjadi dalam dua kategori, yaitu pradiabetes dan diabetes. Selain itu, metode ini dipilih karena variabel terikat (y) adalah variabel kualitatif/nonmetrik, sementara variabel bebas (x) adalah variabel kuantitatif/metrik. Analisis diskriminan merupakan salah satu metode pada analisis multivariat yang bertujuan untuk mengevaluasi ketepatan klasifikasi dan juga dapat menentukan variabel bebas yang memberikan sumbangan terbesar terhadap terbentuknya pengklasifikasian. Pada analisis kasus ini, digunakan analisis diskriminan kuadratik karena data memiliki variabel bebas berdistribusi normal multivariat tetapi matriks varian kovariannya setelah diuji mengasilkan kesimpulan tidak sama.

1.4 Tinjauan Pustaka Metode

1.4.1 Diabetes

Diabetes atau penyakit kencing manis adalah kondisi kronis yang terjadi ketika pankreas tidak mampu menghasilkan cukup insulin atau menggunakan insulin secara efektif. Insulin adalah hormon yang penting untuk mengatur kadar gula dalam darah. Ketika tubuh kekurangan insulin, gula dalam darah dapat meningkat yang mengakibatkan diabetes. Pada umumnya, diabetes dapat dikelompokkan ke dalam tiga tipe utama, yanng pertama adalah Diabetes Tipe I. Pada jenis ini, pankreas tidak dapat menghasilkan insulin. Diabetes tipe I biasanya terjadi pada individu yang berusia di bawah 30 tahun. Kemudian, ada Diabetes Tipe II. Berbeda dari tipe I, pada diabetes tipe II, tubuh menghasilkan insulin, tetapi tidak cukup efektif dalam menggunakannya. Diabetes tipe II merupakan jenis yang paling umum dan dialami oleh sebagian besar populasi manusia. Sekitar 90% hingga 95% penderita diabetes menderita tipe II. Biasanya terjadi pada orang dewasa yang berusia di atas 30 tahun dan dapat memburuk seiring berjalannya waktu. Yang ketiga adalah diabetes Gestasional. Diabetes gestasional adalah jenis diabetes yang muncul selama kehamilan dan umumnya bersifat sementara. Namun, keberadaannya dapat menjadi faktor risiko untuk mengembangkan diabetes tipe II di kemudian hari. Sekitar 4-5% wanita hamil mengalami diabetes gestasional, dan seringkali terdeteksi selama atau setelah trimester kedua kehamilan. Menurut IDF (International Diabetes Federation), jumlah penderita diabetes di Indonesia adalah yang ketujuh terbesar di dunia, dengan jumlah mencapai 8,5 juta penduduk pada tahun 2013. WHO (Organisasi Kesehatan Dunia) juga memproyeksikan bahwa jumlah penderita diabetes di Indonesia diperkirakan akan meningkat menjadi 21,3 juta penduduk pada tahun 2030. Beberapa faktor penyebab diabetes antara lain yaitu Faktor Keturunan, Berat Badan, Usia, Kurangnya Aktivitas Fisik,Tingkat Kolesterol,Tekanan Darah,Asam Urat, dan yang terakhir adalah Kadar Gula dalam Darah. Kadar gula darah yang tinggi atau hiperglikemia dapat disebabkan oleh konsumsi makanan/minuman tinggi gula yang berlebihan dan gangguan pada hormon insulin. Klasifikasi diabetes dapat dilakukan berdasarkan parameter seperti Gula Darah Puasa (GDP), Gula Darah 2 jam Post Prandial (G2PP), dan Glukosa Darah Sewaktu (GDS).

Kategori Gula Darah:

GDP normal: 70-100 mg/dL, GDP terganggu: 100-126 mg/dL, Diabetes: > 126 mg/dL.

G2PP normal: < 140 mg/dL, Toleransi Glukosa Terganggu: 140-200 mg/dL, Diabetes: > 200 mg/dL.

GDS normal: ≤ 180 mg/dL, Diabetes: > 180 mg/dL.

  1. Jika seseorang memiliki kadar GDP sekitar 100-126 mg/dL dan G2PP sekitar 140-200 mg/dL, maka seseorang tersebut dapat diklasifikasikan ke dalam kelompok pradiabetes.

  2. Jika seseorang memiliki kadar GDP sekitar > 126 mg/dL dan G2PP sekitar > 200 mg/dL, maka seseorang tersebut dapat diklasifikasikan ke dalam kelompok diabetes.

Berdasarkan kriteria ini, individu dapat diklasifikasikan sebagai pradiabetes atau diabetes tergantung pada kadar gula darah mereka.

1.4.2 Analisis Diskriminan

Analisis diskriminan adalah suatu metode statistik yang digunakan untuk membedakan atau memisahkan dua atau lebih kelompok atau kategori berdasarkan variabel-variabel prediktif. Tujuan utama dari analisis diskriminan adalah untuk mengukur sejauh mana variabel-variabel prediktif dapat membedakan kelompok-kelompok tersebut. Metode ini sering digunakan dalam analisis statistik untuk memahami faktor-faktor yang berkontribusi pada perbedaan antara kelompok-kelompok tersebut. Analisis diskriminan linear merupakan salah satu jenis analisis diskriminan yang berfokus pada pemisahan observasi (pengamatan) dimana setiap populasi berdistribusi normal multivariat dan mempunyai kesamaan matriks varian kovarian (homogenitas). Analisis diskriminan kuadratik digunakan jika data memiliki variabel bebas berdistribusi normal multivariat tetapi matriks varian kovarian tidak sama antar kelompoknya. Analisis diskriminan fisher digunakan jika data memiliki variabel bebas tidak berdistribusi normal multivariat tetapi antar kelompoknya memiliki matriks varian kovarian yang sama. Analisis diskriminan nonparametrik digunakan jika data memiliki variabel bebas tidak berdistribusi normal multivariat dan matriks varian kovarian tidak sama antar kelompoknya.

1.4.3 Asumsi Analisis Diskriminan

1.4.3.1 Uji Normalitas

Salah satu metode dalam uji normalitas adalah dengan menghitung jarak Mahalanobis untuk setiap observasi/ pengamatan. Hipotesis yang akan digunakan adalah sebagai berikut.

H0 : Data berdistribusi normal multivariat

H1 : Data tidak berdistribusi normal multivariat

Statistik Uji : \(D_{i}^{2}\) = \((\)x_{i}\(-\){x}\()^T\)\(S^{-1}\)(\(x_{i}\)-\(\bar{x}\)), Masing-masing \(D_{i}^{2}\) akan mengikuti sebaran Chi-kuadrat \(\chi_{h}^{2}\)(\(\frac{i-0.5}{n}\)) dengan h adalah banyaknya variabel bebas. Kemudian membuat plot dengan titik koordinat ( \(D_{i}^{2}\),\(\chi_{h}^{2}\)(\(\frac{i-0.5}{n}\))) yang sudah dirutkan

Kriteria Uji: titik-titik yang menyebar membentuk garis lurus dan akan terima H0 jika lebih dari 50% nilai \(D_{i}^{2}\)\(\leq\)\(\chi_{h}^{2}\)(\(\frac{i-0.5}{n}\)).

Metode lain yang dapat digunakan adalah Uji Royston. Uji Royston adalah uji normalitas yang dapat digunakan untuk menguji normalitas data. Uji Royston dapat dilakukan pada sampel dengan ukuran kurang dari 2000. Uji Royston dapat dilakukan pada data univariat maupun multivariat. Cara menggunakannya tergantung pada software yang digunakan. Uji Royston dapat dilakukan pada Stata dan R software. Pada R software, uji Royston dapat dilakukan dengan menggunakan Royston approach.

1.4.3.2 Uji Kesamaan Matriks Varian Kovarian (Homogenitas)

Pengujian kesamaan matriks varian kovarian antar kelompok akan menggunakan statistik uji Barlett. Apabila terdapat dua kelompok, maka hipotesisnya adalah sebagai berikut.

H0 : Varians dari semua populasi sama H1 : Varians dari setidaknya satu populasi berbeda

Statistik Uji: \(B\)=\(\frac{(N-k)ln(S^2)-\Sigma_i^n(n_i-1)ln(S_i^2)}{1+(1/(3k-3))\Sigma_i^k(1/(n_i-1))\Sigma_j^ni(Z_ij-\bar{Z_i})^2}\)

\(B\) adalah statistik uji Bartlett

\(N\) adalah jumlah total sampel

\(k\) adalah jumlah sampel

\(n\) adalah ukuran sampel

\(S^2\) adalah varians gabungan

\(S_i^2\) adalah varians sampel ke-i

\(Z_ij\) adalah skor z dari data ke-j pada sampel ke-i

\(\bar{Z_i}\) adalah rata-rata skor z dari sampel ke-i

Kesimpulan:

Jika nilai p-value < α, maka H0 ditolak dan dapat disimpulkan bahwa setidaknya satu populasi memiliki varians yang berbeda

Jika nilai p-value > α, maka H0 diterima dan dapat disimpulkan bahwa semua populasi memiliki varians yang sama

1.4.4 Pengujian Perbedaan Rata-Rata Variabel Dependen

Wilks’ Lambda adalah statistik uji yang digunakan dalam analisis diskriminan untuk menguji perbedaan rata-rata variabel dependen antar kelompok. Statistik uji ini digunakan untuk menguji apakah terdapat perbedaan yang signifikan antar kelompok pada variabel dependen. Statistik uji Wilks’ Lambda menghasilkan nilai antara 0 dan 1, dimana semakin mendekati 0 maka semakin besar perbedaan antar kelompok.

H0: tidak ada perbedaan dalam kelompok

H1: ada perbedaan dalam kelompok

Statistik Uji

\(\Lambda\) = \(\frac {|W|}{|W+S|}\)

dimana:

\(W\) adalah matriks dalam kelompok

\(S\) adalah matriks antar kelompok

\(|W|\) dan \(|W+S|\) adalah determinan dari matriks \(W\) dan \(W+S\)

Keputusan hipotesis dengan nilai signifikansi: jika signifikansi p-value >\(\alpha\) maka terima H0, sedangkan jika signifikansi < \(\alpha\) tolak H0

1.4.5 Kontribusi Variabel Prediktor terhadap Variabel Respon (Canonical Correlation)

Uji Canonical Correlation adalah metode statistik yang digunakan untuk mengukur hubungan antara dua set variabel yang ada dalam analisis multivariat. Uji ini mengukur tingkat korelasi antara dua set variabel secara bersamaan.

1.5 Tujuan Analisis

Tujuan dari pengklasifikasian diabetes ini adalah untuk mengelompokkan pra diabetes dan diabetes untuk menghindari atau mengurangi kemungkinan timbulnya kompilasi yang terjadi pada pasien.

2 Source Code

2.1 Library yang Dibutuhkan

> library(MVN)
> library(biotools) 
> library(candisc)
> library(MASS) 
> library(caret)
> library(readxl)

langkah awal yang harus dilakukan adalah mengaktifkan packages yang dibutuhkan agar dapat melakukan proses analisis diskriminan dengan tepat. MVN digunakan untuk analisis distribusi normal multivariat dan pengujian normalitas multivariat. Berisi alat untuk menguji apakah data multivariat mengikuti distribusi normal, yang penting dalam analisis diskriminan. Memungkinkan penilaian apakah asumsi normalitas multivariat terpenuhi sebelum melakukan analisis diskriminan. biotools berisi alat dan fungsi yang berkaitan dengan analisis biostatistik dalam konteks ilmu biologi dan ilmu kehidupan. Dapat digunakan untuk analisis statistik khusus yang diperlukan dalam penelitian biologi, seperti uji hipotesis dan analisis data eksperimen biologis. candisc digunakan untuk melakukan analisis diskriminan kanonik (canonical discriminant analysis, CDA). CDA adalah teknik multivariat yang digunakan untuk mengklasifikasikan observasi ke dalam kelompok berdasarkan variabel-variabel prediktor, dengan tujuan memaksimalkan pemisahan antar kelompok. MASS berisi berbagai fungsi statistik dan dataset yang dapat digunakan dalam berbagai analisis, termasuk analisis diskriminan dan analisis statistik lainnya. caret digunakan untuk melatih dan mengevaluasi model klasifikasi dan regresi. Memungkinkan penggunaan berbagai algoritme pembelajaran mesin untuk analisis diskriminan dan mengelola kumpulan data pelatihan dan validasi. readxl digunakan untuk membaca file Excel ke dalam R.

2.2 Memanggil Data

> library(readxl)
> datakolesterol<- read_excel("C:/Users/USER/Downloads/Data Kolesterol Diskriminan.xlsx")
> View(datakolesterol)
> head(datakolesterol)
# A tibble: 6 × 5
      i     y  Usia BeratBadan Kolesterol
  <dbl> <dbl> <dbl>      <dbl>      <dbl>
1     1     0    67         56        167
2     2     0    59         49        203
3     3     0    68         64        171
4     4     0    61         91        198
5     5     0    72         52        158
6     6     0    62         56        170

Menggunakan fungsi ‘read_excel’ untuk membaca data dari file excel yang telah dibuat.

2.3 Analisis Deskriminan

2.3.1 Cek Outlier

> cek<- datakolesterol
> hasildata<-mvn(cek[,3:5], multivariateOutlierMethod = "adj", showNewData = TRUE)

> hasildata
$multivariateNormality
           Test       HZ     p value MVN
1 Henze-Zirkler 1.144329 0.005368754  NO

$univariateNormality
              Test   Variable Statistic   p value Normality
1 Anderson-Darling    Usia       0.4532    0.2624    YES   
2 Anderson-Darling BeratBadan    0.6371    0.0922    YES   
3 Anderson-Darling Kolesterol    0.5044    0.1961    YES   

$Descriptives
            n      Mean   Std.Dev Median Min Max 25th  75th       Skew
Usia       60  59.28333  8.378932     61  39  74   54  66.0 -0.4146504
BeratBadan 60  61.81667 10.830734     60  40  91   56  66.5  0.5616425
Kolesterol 60 198.06667 30.077226    197 142 295  173 218.5  0.5944623
             Kurtosis
Usia       -0.5108501
BeratBadan  0.2598432
Kolesterol  0.5945380

$newData
# A tibble: 53 × 3
    Usia BeratBadan Kolesterol
   <dbl>      <dbl>      <dbl>
 1    58         57        184
 2    64         60        171
 3    63         80        204
 4    56         50        209
 5    58         65        198
 6    66         59        173
 7    62         62        173
 8    55         61        223
 9    71         59        264
10    71         56        142
# ℹ 43 more rows
> databaru <- hasildata$newData
> View(databaru)

Kemudian, pengecekan outlier di lakukan dengan fungsi mvn pada kolom 3 hingga 5 yang merupakan variabel X. Pada syntax tersebut, ‘hasildata’ akan meampilkan Adjusted Chi-Squared Q-Q Plot yang terdapat keterangan jumlah data outlier dan data bukan outlier (non-outlier). Setelah itu databaru dibentuk dari hasil data dan newData.

2.3.2 Uji Asumsi Multivariate Normality

> hasil<- mvn(databaru, mvnTest = 'royston',  alpha = 0.05)
> hasil
$multivariateNormality
     Test        H   p value MVN
1 Royston 6.134641 0.1051655 YES

$univariateNormality
              Test   Variable Statistic   p value Normality
1 Anderson-Darling    Usia       0.4654    0.2438    YES   
2 Anderson-Darling BeratBadan    0.4091    0.3338    YES   
3 Anderson-Darling Kolesterol    0.5135    0.1850    YES   

$Descriptives
            n      Mean   Std.Dev Median Min Max 25th 75th       Skew
Usia       53  58.37736  8.290927     58  39  71   53   65 -0.3731579
BeratBadan 53  62.07547 10.392026     61  40  91   57   68  0.3076373
Kolesterol 53 201.37736 29.662996    198 142 295  177  220  0.5843181
              Kurtosis
Usia       -0.62326535
BeratBadan  0.06183757
Kolesterol  0.64507594

Untuk menguji asumsi yang pertama yaitu asumsi normalitas multivariate digunakan function mvn dengan metode royston untuk mengetahui distribusi dari databaru yang telah dibentuk dengan tingkat signifikansi 5%.

2.3.3 Uji Asumsi Homogenitas Ragam Peragam

> uji_bart <- function(x){
+   method <- "Bartlett's test of sphericity"
+   data.name <- deparse(substitute(x))
+   x <- subset(x, complete.cases(x))
+   n <- nrow(x)
+   p <- ncol(x)
+   chisq <- (1-n+(2*p+5)/6)*log(det(cor(x)))
+   df <- p*(p-1)/2
+   p.value <- pchisq(chisq, df, lower.tail=FALSE)
+   names(chisq) <- "Chi-squared"
+   names(df) <- "df"
+   return(structure(list(statistic=chisq, parameter=df, p.value=p.value,
+                         method=method, data.name=data.name), class="htest"))}
> library(biotools)
> dataakhir<-datakolesterol[c(8:60),2:5]
> attach(dataakhir)
> View(dataakhir)
> uji_bart(dataakhir)

    Bartlett's test of sphericity

data:  dataakhir
Chi-squared = 29.777, df = 6, p-value = 4.334e-05

Membuat function uji bart (barlett) untuk menguji homogenitas ragam peragam dengan metode uji barlett dari data kolesterol. Setelah function dibentuk kemudian mengaktifkan library biotools untuk melakukan analisis berikutnya dengan membuat dataset yang baru yang dinamai dengan dataakhir. Data yang digunakan (dataakhir) adalah data kolesterol tanpa outlier dari baris 8 hingga 60 dengan kolom 2 sampai 5 yang merupakan variabel y dan x1, x2, x3.

2.3.4 Pengujian Perbedaan Rata-Rata Variabel Dependen

> library(candisc)
> X<-as.matrix(dataakhir[2:4])
> X.manova<-manova(X~dataakhir$y, data=dataakhir)
> X.wilks<-summary(X.manova, test="Wilks")
> X.wilks
            Df  Wilks approx F num Df den Df    Pr(>F)    
dataakhir$y  1 0.5827   11.697      3     49 6.739e-06 ***
Residuals   51                                            
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

library candisc dan manova untuk melakukan analisis MANOVA (Multivariate Analysis of Variance). Tujuan dari sintaks ini adalah untuk menguji apakah ada perbedaan yang signifikan antara kelompok yang berbeda dalam variabel respons multivariat yang terdiri dari dataakhir[2:4], dengan mempertimbangkan variabel prediktor dataakhir dan y. X.wilks menampilkan hasil MANOVA dengan uji Wilks Lambda, yang akan berisi statistik uji, derajat kebebasan, nilai p-value, dan informasi lain yang diperlukan untuk mengevaluasi apakah ada perbedaan yang signifikan antara kelompok dalam variabel respons multivariat berdasarkan variabel prediktor. analisis MANOVA dilakukan untuk mengevaluasi apakah ada perbedaan signifikan antara kelompok berdasarkan variabel respons multivariat, dengan mempertimbangkan variabel prediktor tertentu, dalam hal ini, variabel prediktor adalah dataakhir dan y.

2.3.5 Kontribusi Variabel Prediktor terhadap Variabel Respon

> cc<-candisc(X.manova)
> cc

Canonical Discriminant Analysis for dataakhir$y:

  CanRsq Eigenvalue Difference Percent Cumulative
1 0.4173    0.71616                100        100

Test of H0: The canonical correlations in the 
current row and all that follow are zero

  LR test stat approx F numDF denDF   Pr(> F)    
1       0.5827   11.697     3    49 6.739e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Variabel cc dalam sintaks cc <- candisc(X.manova) mengacu pada objek yang dibuat dengan menggunakan fungsi candisc untuk menganalisis hasil MANOVA yang sebelumnya dihasilkan dalam X.manova. Secara umum, dalam konteks analisis MANOVA, cc adalah singkatan dari “Canonical Discriminant Functions” atau “Canonical Correlations.”

2.3.6 Membuat Fungsi Diskriminan Kuadratik

> library(MASS)
> library(caret)
> modelqda <- qda(y ~., data = dataakhir)
> modelqda
Call:
qda(y ~ ., data = dataakhir)

Prior probabilities of groups:
        0         1 
0.4339623 0.5660377 

Group means:
      Usia BeratBadan Kolesterol
0 63.73913   58.78261   198.3043
1 54.26667   64.60000   203.7333
> library(ggplot2)
> 
> ggplot(dataakhir, aes(x = Usia, y = BeratBadan, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA", x = "Usia", y = "Berat Badan") +
+   scale_color_manual(values = c("0" = "yellow", "1" = "blue"))

> ggplot(dataakhir, aes(x = Usia, y = Kolesterol, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA: Usia vs Kolesterol", x = "Usia", y = "Kolesterol") +
+   scale_color_manual(values = c("0" = "yellow", "1" = "red"))

> ggplot(dataakhir, aes(x = BeratBadan, y = Kolesterol, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA: Berat Badan vs Kolesterol", x = "Berat Badan", y = "Kolesterol") +
+   scale_color_manual(values = c("0" = "blue", "1" = "red"))

Membuat model QDA (Quadratic Discriminant Analysis). qda(y ~ ., data = dataakhir) yang mengacu pada sintaks yang digunakan untuk menggambarkan model QDA. Pada model ini mengambil variabel respons y dan semua variabel prediktor yang ada dalam data dataakhir. Model QDA adalah alat statistik yang digunakan untuk membedakan atau mengklasifikasikan observasi ke dalam kelompok berdasarkan kombinasi kuadratik dari variabel prediktor. Dalam QDA, output yang dihasilkan berbeda dengan LDA yang mempunyai koefisien LDA. Oleh karena itu, dibuat plot untuk mempermudah interpretasi.

2.3.7 Membuat tabel klasifikasi dan menguji ketepatan model

> pred_QDA <- predict(modelqda, dataakhir)
> length(dataakhir$y)
[1] 53
> length(pred_QDA$class)
[1] 53
> table(actual = dataakhir$y, predicted = pred_QDA$class)
      predicted
actual  0  1
     0 17  6
     1  6 24
> library(caret)
> # Membagi data menjadi data pelatihan (70%) dan data pengujian (30%)
> set.seed(123)  # Untuk hasil yang dapat direproduksi
> trainIndex <- createDataPartition(dataakhir$y, p = 0.7, 
+                                    list = FALSE, 
+                                    times = 1)
> data_pelatihan <- dataakhir[trainIndex,]
> data_pengujian <- dataakhir[-trainIndex,]
> # Melatih model QDA
> model_qda <- qda(y ~ ., data = data_pelatihan)
> # Menguji model pada data pengujian
> prediksi <- predict(model_qda, newdata = data_pengujian)
> # Mengonversi kolom `y` menjadi faktor dengan level yang sesuai
> data_pengujian$y <- as.factor(data_pengujian$y)
> levels(data_pengujian$y) <- levels(prediksi$class)
> # Menghitung matriks konfusi
> confusion <- confusionMatrix(prediksi$class, data_pengujian$y)
> # Menghitung akurasi
> akurasi <- confusion$overall["Accuracy"]
> # Menghitung akurasi
> akurasi <- confusionMatrix(prediksi$class, data_pengujian$y)$overall["Accuracy"]
> # Menghitung sensitivitas dan spesifisitas
> true_positive <- sum(data_pengujian$y == 1 & prediksi$class == 1)
> false_negative <- sum(data_pengujian$y == 1 & prediksi$class == 0)
> sensitivitas<- true_positive / (true_positive + false_negative)
> true_negative <- sum(data_pengujian$y == 0 & prediksi$class == 0)
> false_positive <- sum(data_pengujian$y == 0 & prediksi$class == 1)
> spesifisitas<- true_negative / (true_negative + false_positive)
> cat("Akurasi:", akurasi, "\n")
Akurasi: 0.7333333 
> cat("Sensitivitas:", sensitivitas, "\n")
Sensitivitas: 1 
> cat("Spesifisitas:", spesifisitas, "\n")
Spesifisitas: 0.5 

Membuat tabel klasifikasi untuk menguji ketepatan model QDA (Quadratic Discriminant Analysis). Tabel ini membantu memahami sejauh mana model QDA dapat mengklasifikasikan data dengan benar berdasarkan variabel prediktor. Hasil tabel klasifikasi akan memberikan informasi tentang ketepatan model QDA dalam mengklasifikasikan data ke dalam kelas yang benar. Banyak observasi yang diklasifikasikan dengan benar (true positives) dan berapa yang diklasifikasikan dengan salah (false positives, false negatives) untuk setiap kelas akan dapat diidentifikasi. Tabel ini dapat digunakan untuk mengevaluasi kinerja model dan mengidentifikasi di mana model dapat diperbaiki.

3 Hasil dan Pembahasan

3.1 Cek Outlier

> hasildata<-mvn(cek[,3:5], multivariateOutlierMethod = "adj", showNewData = TRUE)

Plot tersebut merupakan Q-Q Plot analisis multivariat yang berguna untuk mendetekteksi adanya outlier dari data. Q-Q Plot tersebut dibentuk dengan function mvn yang memanggil packages MVN dengan data yang digunakan adalah kolom ke 3 hingga kolom ke 5 atau variabel X dari data kolesterol. Berdasarkan gambar di atas, dapat diketahui bahwa pada data yang digunakan masih terdapat data outlier dengan total outliers sebanyak 7 data yaitu data ke-1,2,3,4,5,6,dan 7. Kemudian data yang merupakan outliers dibuang dengan cara membuang baris yang mengandung outlier. Sehingga akan disimpan menjadi data baru.

3.2 Hasil Uji Asumsi Multivariate Normality

> hasil$multivariateNormality
     Test        H   p value MVN
1 Royston 6.134641 0.1051655 YES

Kemudian data baru atau data yang telah dibuang outliernya di uji dengan menggunakan uji Royston dengan tingkat signifikansi 5% atau kepercayaan 95%. Dengan function MVN kemudian didapatkan output tersebut.

Hipotesis :

H0 : Variabel prediktor berdistribusi normal multivariat, versus

H1 : Variabel prediktor tidak berdistribusi normal multivariat

Keputusan: Berdasarkan Uji Royston dengan p-value 0,1051655 > 0,05, maka terima H0.

Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa data telah berdistribusi normal multivariat

3.3 Hasil Uji Asumsi Homogenitas Ragam Peragam

> uji_bart(dataakhir)

    Bartlett's test of sphericity

data:  dataakhir
Chi-squared = 29.777, df = 6, p-value = 4.334e-05

data akhir merupakan baris ke 8 hingga 60 dengan kolom 2 hingga 5 yang merupakan gabungan dari variabel X dan Y. Dengan function yang telah dibentuk didapatkan output tersebut.

Hipotesis:

H0 : Variabel respon memiliki matriks ragam peragam yang sama, versus

H1 : Variabel respon memiliki matriks ragam peragam yang berbeda

Keputusan:

Berdasarkan Uji Barlettt dapat diketahui p-value bernilai 4.334e-05 < 0,05 maka tolak H0.

Kesimpulan: Dengan tingkat kepercayaan 95%, dapat disimpulkan bahwa variable respon memiliki matriks ragam peragam yang tidak sama.

3.4 Hasil Uji Vektor Nilai Rata-Rata Kedua Kelompok (Wilks Lambda)

> X.wilks
            Df  Wilks approx F num Df den Df    Pr(>F)    
dataakhir$y  1 0.5827   11.697      3     49 6.739e-06 ***
Residuals   51                                            
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Untuk menguji perbedaan rata-rata dari kejadian pradiabetes dan diabetes digunakan uji Wilks Lambda dengan output seperti di atas.

Hipotesis:

H0 : 𝜇1 = 𝜇2 (tidak terdapat perbedaan rata-rata dari kejadian pradiabetes dan diabetes), versus

H1 : 𝜇1 \(\neq\) 𝜇2 (terdapat perbedaan rata-rata dari kejadian pradiabetes dan diabetes)

Keputusan: Berdasarkan Uji Wilks lambda dapat diketahui p-value 6.739e-06 <0,05, maka tolak H0.

Kesimpulan: Dapat disimpulkan bahwa terdapat perbedaan rata-rata dari kejadian pradiabetes dan diabetes.

3.5 Pengujian Kontribusi Variabel Prediktor Terhadap Respon

> cc

Canonical Discriminant Analysis for dataakhir$y:

  CanRsq Eigenvalue Difference Percent Cumulative
1 0.4173    0.71616                100        100

Test of H0: The canonical correlations in the 
current row and all that follow are zero

  LR test stat approx F numDF denDF   Pr(> F)    
1       0.5827   11.697     3    49 6.739e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hasil dari output yang didapat menunjukkan bahwa nilai Canonical Correlation sebesar 0.4173, artinya variabel usia, berat badan, dan kolesterol dapat mempengaruhi kejadian diabetes (Kategori pra diabetes dan diabetes) sebesar 41.73%, sedangkan 58,27% lainnya dipengaruhi oleh variabel lain di luar penelitian.

3.6 Fungsi Diskriminan Kuadratik dan Plotnya

> modelqda <- qda(y ~ ., data = dataakhir)
> modelqda
Call:
qda(y ~ ., data = dataakhir)

Prior probabilities of groups:
        0         1 
0.4339623 0.5660377 

Group means:
      Usia BeratBadan Kolesterol
0 63.73913   58.78261   198.3043
1 54.26667   64.60000   203.7333
> library(ggplot2)

Kelompok 0 (pra diabetes) memiliki probabilitas sebelumnya sekitar 43.40%, sedangkan kelompok 1 (diabetes) memiliki probabilitas sebelumnya sekitar 56.60%. Group means adalah rata-rata (mean) dari variabel prediktor (Usia, Berat Badan, dan Kolesterol) untuk setiap kelompok (0 dan 1). Untuk kelompok 0 (pra diabetes), rata-rata Usia adalah sekitar 63.74, Berat Badan adalah sekitar 58.78, dan Kolesterol adalah sekitar 198.30. Untuk kelompok 1 (diabetes), rata-rata Usia adalah sekitar 54.27, Berat Badan adalah sekitar 64.60, dan Kolesterol adalah sekitar 203.73.

> ggplot(dataakhir, aes(x = Usia, y = BeratBadan, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA: Usia vs Berat Badan", x = "Usia", y = "Berat Badan") +
+   scale_color_manual(values = c("0" = "yellow", "1" = "blue"))

Pada Scatter Plot untuk Berat Badan dan Usia dapat dilihat bahwa QDA berhasil membedakan antara Usia dan Berat Badan. Plot antara Berat Badan dan Usia akan memberikan pemahaman tentang perbedaan distribusi antara kategori pra diabetes dan diabetes dalam konteks Berat Badan dan Usia.

> ggplot(dataakhir, aes(x = Usia, y = Kolesterol, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA: Usia vs Kolesterol", x = "Usia", y = "Kolesterol") +
+   scale_color_manual(values = c("0" = "yellow", "1" = "red"))

Pada Scatter Plot untuk Kolesterol dan Usia dapat dilihat bahwa QDA berhasil membedakan antara Kolesterol dan Usia. Plot antara Berat Badan dan Usia akan memberikan pemahaman tentang perbedaan distribusi antara kategori pra diabetes dan diabetes dalam konteks Kolesterol dan Usia.

> ggplot(dataakhir, aes(x = BeratBadan, y = Kolesterol, color = as.factor(y))) +
+   geom_point() +
+   labs(title = "Plot Scatter QDA: Berat Badan vs Kolesterol", x = "Berat Badan", y = "Kolesterol") +
+   scale_color_manual(values = c("0" = "blue", "1" = "red"))

Pada Scatter Plot untuk Berat Badan dan Kolesterol dapat dilihat bahwa QDA belum berhasil membedakan antara Berat Badan dan Kolesterol. Plot antara Berat Badan dan Kolesterol akan memberikan pemahaman tentang perbedaan distribusi antara kategori pra diabetes dan diabetes dalam konteks Berat Badan dan Kolesterol.

3.7 Membuat Tabel Klasifikasi dan Menguji Ketepatan Model

> table(actual = dataakhir$y, predicted = pred_QDA$class)
      predicted
actual  0  1
     0 17  6
     1  6 24
> cat("Akurasi:", akurasi, "\n")
Akurasi: 0.7333333 
> cat("Sensitivitas:", sensitivitas, "\n")
Sensitivitas: 1 
> cat("Spesifisitas:", spesifisitas, "\n")
Spesifisitas: 0.5 

Matriks Kontingensi:

Dalam tabel kontingensi yang Anda berikan, terdapat 17 observasi yang seharusnya masuk ke kategori 0 (pra diabetes) dan diprediksi sebagai kategori 0 oleh model (True Negatives). Ada 6 observasi yang seharusnya masuk ke kategori 0 (pra diabetes) tetapi diprediksi sebagai kategori 1 oleh model (False Positives). Terdapat 24 observasi yang seharusnya masuk ke kategori 1 (diabetes) dan diprediksi sebagai kategori 1 oleh model (True Positives). Terdapat 6 observasi yang seharusnya masuk ke kategori 1 (diabetes) tetapi diprediksi sebagai kategori 0 oleh model (False Negatives).

Akurasi: Akurasi adalah ukuran sejauh mana model QDA dapat mengklasifikasikan data dengan benar. Dalam kasus ini, nilai akurasi adalah sekitar 73.33%, yang berarti model benar dalam memprediksi sekitar 73.33% dari seluruh data pengujian.

Sensitivitas (Recall): Sensitivitas adalah ukuran sejauh mana model mampu mendeteksi positif sejati (diabetes) dari keseluruhan data yang sebenarnya positif. Dalam kasus ini, nilai sensitivitas adalah 100%, yang berarti model QDA dapat mendeteksi sekitar 100% dari kasus diabetes dengan benar.

Spesifisitas: Spesifisitas adalah ukuran sejauh mana model mampu mendeteksi negatif sejati (pra diabetes) dari keseluruhan data yang sebenarnya negatif. Dalam kasus ini, nilai spesifisitas adalah sekitar 50%, yang berarti model QDA dapat mendeteksi sekitar 50% dari kasus pra diabetes dengan benar.

4 Penutup

4.1 Kesimpulan atas Hasil yang Diperoleh

Berdasarkan Analisis yang telah dilakukan, dapat diperoleh hasil bahwa data berdistribusi normal multivariat, memiliki matriks ragam peragam yang tidak homogen, dan terdapat perbedaan rata-rata dari kejadian pradiabetes dan diabetes. Kemudian karena asumsi ragam peragam tersebut tidak homogen, digunakan analisis diskriminan kuadratik. Hasil analisis ditunjukkan dengan plot yang memberikan pandangan visual awal tentang sejauh mana model QDA dapat membedakan kelompok-kelompok tersebut. Pada model prediksi diperoleh hasil akurasi sebesar 73.33%, yang berarti model benar dalam memprediksi sekitar 73.33% dari seluruh data pengujian. Oleh karena itu dapat disimpulkan bahwa Quadratic Linear Discriminant dapat membantu mengklasifikasikan kejadian diabetes dan pra diabetes dengan baik sesuai dengan tujuan.

4.2 Saran

Saran dibutuhkan untuk membuat sebuah penelitian menjadi lebih baik dari penelitian sebelumnya. Saran yang dapat dipertimbangkan untuk penelitian selanjutnya adalah:

  1. Menguji lebih lanjut perbedaan antar kelompok pada uji wilks lambda.

  2. Menambah variabel penelitian karena diperoleh hasil canonical correlations hanya sebesar 41.73 % untuk menjelaskan variabel respon.

4.3 Daftar Pustaka

Putri, Bety Suryani. (2017). Pengklasifikasian Kejadian Diabetes dengan Analisis Diskriminan Kuadratik. Skripsi: Program Studi Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam UNiversitas Negeri Jakarta.

Damayanti, Erra Claudia. (2022). Analisis Diskriminan Untuk Klasifikasi Kabupaten/Kota di Jawa Timur Berdasarkan Indeks Pembangunan Manusia. RPubs.