Notes Theme, silakan gunakan salah satu theme berikut: - cayman (package prettydoc) - architect (package prettydoc) - united (default di RMarkdown)

Library:

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

1 PENDAHULUAN

1.1 Latar Belakang

Kumpulan data ini berasal dari Institut Nasional Diabetes dan Penyakit Pencernaan dan Ginjal. Tujuan dari kumpulan data ini adalah untuk memprediksi secara diagnostik apakah seorang pasien menderita diabetes atau tidak, berdasarkan pengukuran diagnostik tertentu yang disertakan dalam kumpulan data tersebut. Beberapa kendala ditempatkan pada pemilihan contoh-contoh ini dari database yang lebih besar. Secara khusus, semua pasien di sini adalah wanita berusia minimal 21 tahun keturunan Pima Indians.

Kumpulan data terdiri dari beberapa variabel prediktor medis dan satu variabel target, Hasil. Variabel prediktor meliputi jumlah Pregnancies (kehamilan), Glucose (Glukosa), Blood Pressure (Tekanan darah), Skin Thickness (Kekebalan tubuh), Insulin (Kadar insulin), Diabetes Pedigree Function (Fungsi Silsilah Diabetes), Age (usia).

1.2 Tinjauan Pustaka

Tujuan Utama:

Analisis Diskriminan memiliki dua tujuan utama:

  1. Deskripsi (Description): Menentukan variabel independen mana yang paling berkontribusi dalam membedakan kelompok-kelompok yang sudah ada. Hasilnya adalah pembentukan Fungsi Diskriminan (Discriminant Function).

  2. Prediksi/Klasifikasi (Prediction/Classification): Membangun aturan klasifikasi untuk memprediksi keanggotaan kelompok dari observasi atau kasus baru yang belum diklasifikasikan.

Persamaan fungsi Diskriminan dalam bentuk regresi multivariat:

Dk= 0+ 1 X1+ 2 X2+….+ p Xp

Di mana : 

Dk: Skor diskriminan untuk kelompok k

p: Koefisien bobot diskriminan

Xp: Variabel prediktor (independen)

Fungsi ini memaksimalkan perbandingan varians antar-kelompok relatif terhadap varians di dalam kelompok, sehingga mampu menghasilkan pemisahan kelompok yang paling baik.

Dua jenis Analisis Diskriminan

  1. Analisis Diskriminan Linier (LDA) : Dua kelompok

  2. Analisis Diskriminan Berganda (MDA) : Tiga kelompok atau lebih

Digunakan : 

Analisis Diskriminan sangat populer dan sering digunakan dalam berbagai ilmu yang melibatkan klasifikasi berdasarkan kriteria kuantitatif.

  • Ekonomi & Bisnis: Klasifikasi perusahaan menjadi bangkrut atau tidak bangkrut (Model Altman Z-Score adalah contoh penggunaan LDA), segmentasi pasar berdasarkan variabel demografi dan perilaku.

  • Kedokteran: Mendiagnosis pasien ke dalam kelompok risiko tinggi atau rendah berdasarkan hasil tes medis.

  • Ilmu Sosial: Membedakan perilaku konsumen berdasarkan variabel psikografis.

  • Pendidikan: Memprediksi keberhasilan siswa (lulus/gagal) berdasarkan nilai ujian masuk dan variabel latar belakang.

1.3 Data

Data ini di dapatkan di web kaggle, digunakan untuk menentukan prediksi secara diagnostik apakah seorang pasien menderita diabetes atau tidak

Pregnancies Glucose BloodPressure SkinThickness Age Outcome
6 148 72 35 50 1
1 85 66 29 31 0
8 183 64 0 32 1
1 89 66 23 21 0
0 137 40 35 33 1
5 116 74 0 30 0
3 78 50 32 26 1
10 115 0 0 29 0
2 197 70 45 53 1
8 125 96 0 54 1
4 110 92 0 30 0
10 168 74 0 34 1
10 139 80 0 57 0
1 189 60 23 59 1
5 166 72 19 51 1
7 100 0 0 32 1
0 118 84 47 31 1
7 107 74 0 31 1
1 103 30 38 33 0
1 115 70 30 32 1
3 126 88 41 27 0
8 99 84 0 50 0
7 196 90 0 41 1
9 119 80 35 29 1
11 143 94 33 51 1
10 125 70 26 41 1
7 147 76 0 43 1
1 97 66 15 22 0
13 145 82 19 57 0
5 117 92 0 38 0
5 109 75 26 60 0
3 158 76 36 28 1
3 88 58 11 22 0
6 92 92 0 28 0
10 122 78 31 45 0
4 103 60 33 33 0
11 138 76 0 35 0
9 102 76 37 46 1
2 90 68 42 27 1
4 111 72 47 56 1
3 180 64 25 26 0
7 133 84 0 37 0
7 106 92 18 48 0
9 171 110 24 54 1
7 159 64 0 40 0
0 180 66 39 25 1
1 146 56 0 29 0
2 71 70 27 22 0
7 103 66 32 31 1
7 105 0 0 24 0

1.4 Tujuan

Uji deterministik dalam diagnosis diabetes bertujuan memberikan keputusan yang pasti dan konsisten mengenai apakah seorang pasien menderita diabetes atau tidak. Dalam pendekatan ini, diagnosis dibuat berdasarkan aturan atau ambang batas yang telah ditetapkan. Jika nilai pemeriksaan pasien melewati ambang batas tertentu, maka pasien diklasifikasikan sebagai penderita diabetes; jika tidak, maka dianggap tidak diabetes. Pendekatan deterministik ini menghilangkan unsur probabilitas dan menghasilkan keputusan yang objektif, mudah direplikasi, serta membantu tenaga kesehatan menegakkan diagnosis secara cepat dan tepat.

2 SOURCE CODE

2.1 Library

> library(MVN)
> library(biotools) 
> library(MASS) 
> library(candisc)
> library(readxl)
> library(rgl)
> data_lengkap <- read.csv("C:/Users/Lenovo/Downloads/diabetes.csv")
> View(data_lengkap)
> var_respon <- data_lengkap[6]
> datacek<- data_lengkap
> numerik_vars <- c("Pregnancies", "Glucose", "BloodPressure", "SkinThickness", "Age")
> hasildata<-mvn(datacek[numerik_vars], multivariate_outlier_method = "adj", show_new_data = TRUE, mvn_test = "mardia")
> dataterbaru <- hasildata$new_data
> View(dataterbaru)
> dataterbaru <- as.data.frame(dataterbaru)
> 
> #memasukkan data yang tidak hilanh
> data_boostrap <- mvn(dataterbaru, mvn_test = 'mardia',  alpha = 0.05, bootstrap = TRUE)
> data_analisis <- data_boostrap$data
> akhir <- data.frame(data_analisis, Outcome = var_respon[c(1:7, 10:13, 15, 18:20, 
+                                               22, 24:31, 33:40, 42:43, 45, 47:49),])
> akhir$Outcome
 [1] 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1
> akhir
   Pregnancies Glucose BloodPressure SkinThickness Age Outcome
1            6     148            72            35  50       1
2            1      85            66            29  31       0
3            8     183            64             0  32       1
4            1      89            66            23  21       0
5            0     137            40            35  33       1
6            5     116            74             0  30       0
7            3      78            50            32  26       1
10           8     125            96             0  54       1
11           4     110            92             0  30       0
12          10     168            74             0  34       1
13          10     139            80             0  57       0
15           5     166            72            19  51       1
18           7     107            74             0  31       1
19           1     103            30            38  33       0
20           1     115            70            30  32       1
22           8      99            84             0  50       0
24           9     119            80            35  29       1
25          11     143            94            33  51       1
26          10     125            70            26  41       1
27           7     147            76             0  43       1
28           1      97            66            15  22       0
29          13     145            82            19  57       0
30           5     117            92             0  38       0
31           5     109            75            26  60       0
33           3      88            58            11  22       0
34           6      92            92             0  28       0
35          10     122            78            31  45       0
36           4     103            60            33  33       0
37          11     138            76             0  35       0
38           9     102            76            37  46       1
39           2      90            68            42  27       1
40           4     111            72            47  56       1
42           7     133            84             0  37       0
43           7     106            92            18  48       0
45           7     159            64             0  40       0
47           1     146            56             0  29       0
48           2      71            70            27  22       0
49           7     103            66            32  31       1
> var_respon
   Outcome
1        1
2        0
3        1
4        0
5        1
6        0
7        1
8        0
9        1
10       1
11       0
12       1
13       0
14       1
15       1
16       1
17       1
18       1
19       0
20       1
21       0
22       0
23       1
24       1
25       1
26       1
27       1
28       0
29       0
30       0
31       0
32       1
33       0
34       0
35       0
36       0
37       0
38       1
39       1
40       1
41       0
42       0
43       0
44       1
45       0
46       1
47       0
48       0
49       1
50       0
> #UJI ASUMSI HOMOGENITAS RAGAM 
> 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) <- "Khi-squared"
+   names(df) <- "df"
+   return(structure(list(statistic=chisq, parameter=df, p.value=p.value,
+                         method=method, data.name=data.name), class="htest"))}
> uji_bart(dataterbaru)

    Bartlett's test of sphericity

data:  dataterbaru
Khi-squared = 57.957, df = 10, p-value = 8.809e-09
> X<-as.matrix(dataterbaru[, 1:5])
> X.manova<-manova(X ~ akhir$Outcome, data=akhir)
> X.wilks<-summary(X.manova, test="Wilks")
> cc<-candisc(X.manova)
> modellda<-lda(akhir$Outcome~., data = akhir )
> 
> pred_LDA1<- predict(modellda,as.vector(akhir))
> table(actual=akhir$Outcome, predicted=pred_LDA1$class)
      predicted
actual  0  1
     0 18  3
     1  4 13

2.2 HASIL DAN PEMBAHASAN

> uji_bart(dataterbaru)

    Bartlett's test of sphericity

data:  dataterbaru
Khi-squared = 57.957, df = 10, p-value = 8.809e-09

\[ \alpha,\beta,\gamma,\mu,\sigma,\phi,\theta,\epsilon,\varepsilon, \Gamma, \Sigma,\Phi,\Theta \]

2.3 Uji Asumsi

> uji_bart(dataterbaru)

    Bartlett's test of sphericity

data:  dataterbaru
Khi-squared = 57.957, df = 10, p-value = 8.809e-09
> modellda<-lda(akhir$Outcome~., data = akhir )
> X<-as.matrix(dataterbaru[, 1:5])
> data_boostrap <- mvn(dataterbaru, mvn_test = 'mardia',  alpha = 0.05, bootstrap = TRUE)
> data_analisis <- data_boostrap$data
> akhir <- data.frame(data_analisis, Outcome = var_respon[c(1:7, 10:13, 15, 18:20, 
+                                               22, 24:31, 33:40, 42:43, 45, 47:49),])
> akhir$Outcome
 [1] 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1
> akhir
   Pregnancies Glucose BloodPressure SkinThickness Age Outcome
1            6     148            72            35  50       1
2            1      85            66            29  31       0
3            8     183            64             0  32       1
4            1      89            66            23  21       0
5            0     137            40            35  33       1
6            5     116            74             0  30       0
7            3      78            50            32  26       1
10           8     125            96             0  54       1
11           4     110            92             0  30       0
12          10     168            74             0  34       1
13          10     139            80             0  57       0
15           5     166            72            19  51       1
18           7     107            74             0  31       1
19           1     103            30            38  33       0
20           1     115            70            30  32       1
22           8      99            84             0  50       0
24           9     119            80            35  29       1
25          11     143            94            33  51       1
26          10     125            70            26  41       1
27           7     147            76             0  43       1
28           1      97            66            15  22       0
29          13     145            82            19  57       0
30           5     117            92             0  38       0
31           5     109            75            26  60       0
33           3      88            58            11  22       0
34           6      92            92             0  28       0
35          10     122            78            31  45       0
36           4     103            60            33  33       0
37          11     138            76             0  35       0
38           9     102            76            37  46       1
39           2      90            68            42  27       1
40           4     111            72            47  56       1
42           7     133            84             0  37       0
43           7     106            92            18  48       0
45           7     159            64             0  40       0
47           1     146            56             0  29       0
48           2      71            70            27  22       0
49           7     103            66            32  31       1
> var_respon
   Outcome
1        1
2        0
3        1
4        0
5        1
6        0
7        1
8        0
9        1
10       1
11       0
12       1
13       0
14       1
15       1
16       1
17       1
18       1
19       0
20       1
21       0
22       0
23       1
24       1
25       1
26       1
27       1
28       0
29       0
30       0
31       0
32       1
33       0
34       0
35       0
36       0
37       0
38       1
39       1
40       1
41       0
42       0
43       0
44       1
45       0
46       1
47       0
48       0
49       1
50       0

3 KESIMPULAN

Berdasarkan hasil analisis, dapat disimpulkan bahwa Analisis Diskriminan Linier (LDA) berhasil digunakan untuk memprediksi secara diagnostik apakah pasien wanita keturunan Pima Indians menderita diabetes atau tidak berdasarkan variabel medis yang tersedia. Pengujian awal mengonfirmasi bahwa data variabel prediktor berkorelasi dan cocok untuk analisis, sebagaimana ditunjukkan oleh hasil Uji Bartlett’s test of sphericity yang signifikan P-Value = 8.809e-09. Hasil MANOVA (Uji Wilks’ Lambda) menunjukkan adanya perbedaan rata-rata vektor variabel prediktor yang signifikan secara statistik antara kelompok Outcome (diabetes vs. non-diabetes) Pr>F = 0.01576. Variabel yang paling berkontribusi dalam membedakan kedua kelompok adalah SkinThickness dan Glucose, di mana kelompok pasien dengan diabetes memiliki rata-rata yang lebih tinggi pada kedua variabel ini. Fungsi Diskriminan Linier yang dihasilkan memiliki kinerja klasifikasi yang kuat, mampu mengklasifikasikan observasi dengan tingkat akurasi sebesar 81.6%.