Identitas Kelompok

Nama Kelompok: 1. Dwi Ferianto Hamzah (24031554019)
2. Faiz Azmin Ahmad (24031554175)
3. Indah Faizah Salsabillah Ramdhany Wadjo (24031554210)

Pendahuluan

Dataset yang digunakan dalam analisis ini adalah Dermatology Dataset yang berasal dari UCI Machine Learning Repository. Dataset dapat diakses melalui tautan berikut:

https://archive.ics.uci.edu/dataset/33/dermatology

Dataset ini berisi data pasien penyakit kulit berdasarkan gejala klinis dan hasil pemeriksaan histopatologis. Tujuan utama dari dataset ini adalah untuk mengklasifikasikan jenis penyakit kulit berdasarkan variabel-variabel yang tersedia.

Pada dataset ini, variabel target adalah jenis penyakit kulit yang terdiri dari enam kelas, yaitu psoriasis, seboreic dermatitis, lichen planus, pityriasis rosea, chronic dermatitis, dan pityriasis rubra pilaris.

Karena terdapat lebih dari dua kelas penyakit, maka analisis ini termasuk dalam klasifikasi multiclass atau multinomial. Metode yang digunakan adalah Linear Discriminant Analysis (LDA).

Tujuan dari analisis ini adalah membangun model LDA untuk memprediksi jenis penyakit kulit berdasarkan data gejala yang tersedia.

1. Persiapan Package

Tahap ini bertujuan untuk memanggil package yang dibutuhkan dalam analisis. Package MASS digunakan untuk membentuk model LDA, caret digunakan untuk membagi data dan mengevaluasi model, ggplot2 digunakan untuk visualisasi, dan dplyr digunakan untuk membantu manipulasi data.

library(MASS)
library(caret)
library(ggplot2)
library(dplyr)

2. Import Dataset

Tahap ini bertujuan untuk membaca file dermatology.data ke dalam R. File tersebut merupakan data utama yang digunakan dalam analisis. Karena dataset tidak memiliki nama kolom, maka digunakan header = FALSE. Selain itu, missing value pada dataset ditandai dengan tanda ?, sehingga digunakan na.strings = "?".

data_derma <- read.csv("dermatology.data",
                       header = FALSE,
                       na.strings = "?")

head(data_derma)
##   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21
## 1  2  2  0  3  0  0  0  0  1   0   0   0   0   0   0   3   2   0   0   0   0
## 2  3  3  3  2  1  0  0  0  1   1   1   0   0   1   0   1   2   0   2   2   2
## 3  2  1  2  3  1  3  0  3  0   0   0   1   0   0   0   1   2   0   2   0   0
## 4  2  2  2  0  0  0  0  0  3   2   0   0   0   3   0   0   2   0   3   2   2
## 5  2  3  2  2  2  2  0  2  0   0   0   1   0   0   0   1   2   0   0   0   0
## 6  2  3  2  0  0  0  0  0  0   0   0   0   2   1   0   2   2   0   2   0   0
##   V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35
## 1   0   0   0   0   0   0   3   0   0   0   1   0  55   2
## 2   2   2   1   0   0   0   0   0   0   0   1   0   8   1
## 3   0   0   0   2   0   2   3   2   0   0   2   3  26   3
## 4   2   2   0   0   3   0   0   0   0   0   3   0  40   1
## 5   0   0   0   2   2   3   2   3   0   0   2   3  45   3
## 6   0   1   0   0   0   0   2   0   0   0   1   0  41   2
dim(data_derma)
## [1] 366  35
str(data_derma)
## 'data.frame':    366 obs. of  35 variables:
##  $ V1 : int  2 3 2 2 2 2 2 2 2 2 ...
##  $ V2 : int  2 3 1 2 3 3 1 2 2 2 ...
##  $ V3 : int  0 3 2 2 2 2 0 3 1 1 ...
##  $ V4 : int  3 2 3 0 2 0 2 3 0 0 ...
##  $ V5 : int  0 1 1 0 2 0 0 3 2 1 ...
##  $ V6 : int  0 0 3 0 2 0 0 3 0 0 ...
##  $ V7 : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ V8 : int  0 0 3 0 2 0 0 2 0 0 ...
##  $ V9 : int  1 1 0 3 0 0 0 0 0 0 ...
##  $ V10: int  0 1 0 2 0 0 0 0 0 0 ...
##  $ V11: int  0 1 0 0 0 0 0 0 0 0 ...
##  $ V12: int  0 0 1 0 1 0 0 2 0 0 ...
##  $ V13: int  0 0 0 0 0 2 0 0 0 0 ...
##  $ V14: int  0 1 0 3 0 1 0 0 0 0 ...
##  $ V15: int  0 0 0 0 0 0 3 0 0 0 ...
##  $ V16: int  3 1 1 0 1 2 1 2 2 3 ...
##  $ V17: int  2 2 2 2 2 2 3 3 1 2 ...
##  $ V18: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ V19: int  0 2 2 3 0 2 0 0 1 2 ...
##  $ V20: int  0 2 0 2 0 0 0 0 0 0 ...
##  $ V21: int  0 2 0 2 0 0 2 0 0 0 ...
##  $ V22: int  0 2 0 2 0 0 0 0 0 0 ...
##  $ V23: int  0 2 0 2 0 1 0 0 0 0 ...
##  $ V24: int  0 1 0 0 0 0 0 0 0 0 ...
##  $ V25: int  0 0 2 0 2 0 0 0 0 0 ...
##  $ V26: int  0 0 0 3 2 0 0 2 0 0 ...
##  $ V27: int  0 0 2 0 3 0 0 2 0 0 ...
##  $ V28: int  3 0 3 0 2 2 0 3 2 2 ...
##  $ V29: int  0 0 2 0 3 0 0 2 0 0 ...
##  $ V30: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ V31: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ V32: int  1 1 2 3 2 1 2 3 2 2 ...
##  $ V33: int  0 0 3 0 3 0 0 3 0 0 ...
##  $ V34: int  55 8 26 40 45 41 18 57 22 30 ...
##  $ V35: int  2 1 3 1 3 2 5 3 4 4 ...

#3. Pemberian Nama Variabel

Tahap ini bertujuan untuk memberi nama pada setiap kolom dataset. Nama variabel diambil berdasarkan informasi pada file dermatology.names. Pemberian nama kolom dilakukan agar data lebih mudah dibaca, dianalisis, dan dijelaskan dalam laporan.

colnames(data_derma) <- c(
  "erythema",
  "scaling",
  "definite_borders",
  "itching",
  "koebner_phenomenon",
  "polygonal_papules",
  "follicular_papules",
  "oral_mucosal_involvement",
  "knee_elbow_involvement",
  "scalp_involvement",
  "family_history",
  "melanin_incontinence",
  "eosinophils_in_infiltrate",
  "PNL_infiltrate",
  "fibrosis_papillary_dermis",
  "exocytosis",
  "acanthosis",
  "hyperkeratosis",
  "parakeratosis",
  "clubbing_rete_ridges",
  "elongation_rete_ridges",
  "thinning_suprapapillary_epidermis",
  "spongiform_pustule",
  "munro_microabcess",
  "focal_hypergranulosis",
  "disappearance_granular_layer",
  "vacuolisation_damage_basal_layer",
  "spongiosis",
  "saw_tooth_appearance_retes",
  "follicular_horn_plug",
  "perifollicular_parakeratosis",
  "inflammatory_mononuclear_infiltrate",
  "band_like_infiltrate",
  "age",
  "class"
)

names(data_derma)
##  [1] "erythema"                            "scaling"                            
##  [3] "definite_borders"                    "itching"                            
##  [5] "koebner_phenomenon"                  "polygonal_papules"                  
##  [7] "follicular_papules"                  "oral_mucosal_involvement"           
##  [9] "knee_elbow_involvement"              "scalp_involvement"                  
## [11] "family_history"                      "melanin_incontinence"               
## [13] "eosinophils_in_infiltrate"           "PNL_infiltrate"                     
## [15] "fibrosis_papillary_dermis"           "exocytosis"                         
## [17] "acanthosis"                          "hyperkeratosis"                     
## [19] "parakeratosis"                       "clubbing_rete_ridges"               
## [21] "elongation_rete_ridges"              "thinning_suprapapillary_epidermis"  
## [23] "spongiform_pustule"                  "munro_microabcess"                  
## [25] "focal_hypergranulosis"               "disappearance_granular_layer"       
## [27] "vacuolisation_damage_basal_layer"    "spongiosis"                         
## [29] "saw_tooth_appearance_retes"          "follicular_horn_plug"               
## [31] "perifollicular_parakeratosis"        "inflammatory_mononuclear_infiltrate"
## [33] "band_like_infiltrate"                "age"                                
## [35] "class"

#4. Deskripsi Dataset

Tahap ini bertujuan untuk melihat gambaran umum dataset, seperti jumlah observasi, jumlah variabel, dan ringkasan statistik awal. Dataset Dermatology memiliki variabel prediktor yang menggambarkan kondisi klinis dan histopatologis pasien, serta satu variabel target yaitu class.

dim(data_derma)
## [1] 366  35
summary(data_derma)
##     erythema        scaling      definite_borders    itching     
##  Min.   :0.000   Min.   :0.000   Min.   :0.000    Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000    1st Qu.:0.000  
##  Median :2.000   Median :2.000   Median :2.000    Median :1.000  
##  Mean   :2.068   Mean   :1.795   Mean   :1.549    Mean   :1.366  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000    3rd Qu.:2.000  
##  Max.   :3.000   Max.   :3.000   Max.   :3.000    Max.   :3.000  
##                                                                  
##  koebner_phenomenon polygonal_papules follicular_papules
##  Min.   :0.0000     Min.   :0.0000    Min.   :0.0000    
##  1st Qu.:0.0000     1st Qu.:0.0000    1st Qu.:0.0000    
##  Median :0.0000     Median :0.0000    Median :0.0000    
##  Mean   :0.6339     Mean   :0.4481    Mean   :0.1667    
##  3rd Qu.:1.0000     3rd Qu.:0.0000    3rd Qu.:0.0000    
##  Max.   :3.0000     Max.   :3.0000    Max.   :3.0000    
##                                                         
##  oral_mucosal_involvement knee_elbow_involvement scalp_involvement
##  Min.   :0.000            Min.   :0.0000         Min.   :0.0000   
##  1st Qu.:0.000            1st Qu.:0.0000         1st Qu.:0.0000   
##  Median :0.000            Median :0.0000         Median :0.0000   
##  Mean   :0.377            Mean   :0.6148         Mean   :0.5191   
##  3rd Qu.:0.000            3rd Qu.:1.0000         3rd Qu.:1.0000   
##  Max.   :3.000            Max.   :3.0000         Max.   :3.0000   
##                                                                   
##  family_history   melanin_incontinence eosinophils_in_infiltrate
##  Min.   :0.0000   Min.   :0.0000       Min.   :0.0000           
##  1st Qu.:0.0000   1st Qu.:0.0000       1st Qu.:0.0000           
##  Median :0.0000   Median :0.0000       Median :0.0000           
##  Mean   :0.1257   Mean   :0.4044       Mean   :0.1393           
##  3rd Qu.:0.0000   3rd Qu.:0.0000       3rd Qu.:0.0000           
##  Max.   :1.0000   Max.   :3.0000       Max.   :2.0000           
##                                                                 
##  PNL_infiltrate   fibrosis_papillary_dermis   exocytosis      acanthosis   
##  Min.   :0.0000   Min.   :0.0000            Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.0000   1st Qu.:0.0000            1st Qu.:0.000   1st Qu.:2.000  
##  Median :0.0000   Median :0.0000            Median :2.000   Median :2.000  
##  Mean   :0.5464   Mean   :0.3361            Mean   :1.369   Mean   :1.956  
##  3rd Qu.:1.0000   3rd Qu.:0.0000            3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :3.0000   Max.   :3.0000            Max.   :3.000   Max.   :3.000  
##                                                                            
##  hyperkeratosis   parakeratosis  clubbing_rete_ridges elongation_rete_ridges
##  Min.   :0.0000   Min.   :0.00   Min.   :0.0000       Min.   :0.0000        
##  1st Qu.:0.0000   1st Qu.:1.00   1st Qu.:0.0000       1st Qu.:0.0000        
##  Median :0.0000   Median :1.00   Median :0.0000       Median :0.0000        
##  Mean   :0.5273   Mean   :1.29   Mean   :0.6639       Mean   :0.9918        
##  3rd Qu.:1.0000   3rd Qu.:2.00   3rd Qu.:2.0000       3rd Qu.:2.0000        
##  Max.   :3.0000   Max.   :3.00   Max.   :3.0000       Max.   :3.0000        
##                                                                             
##  thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
##  Min.   :0.0000                    Min.   :0.0000     Min.   :0.0000   
##  1st Qu.:0.0000                    1st Qu.:0.0000     1st Qu.:0.0000   
##  Median :0.0000                    Median :0.0000     Median :0.0000   
##  Mean   :0.6339                    Mean   :0.2951     Mean   :0.3634   
##  3rd Qu.:1.0000                    3rd Qu.:0.0000     3rd Qu.:0.0000   
##  Max.   :3.0000                    Max.   :3.0000     Max.   :3.0000   
##                                                                        
##  focal_hypergranulosis disappearance_granular_layer
##  Min.   :0.0000        Min.   :0.0000              
##  1st Qu.:0.0000        1st Qu.:0.0000              
##  Median :0.0000        Median :0.0000              
##  Mean   :0.3934        Mean   :0.4645              
##  3rd Qu.:0.0000        3rd Qu.:1.0000              
##  Max.   :3.0000        Max.   :3.0000              
##                                                    
##  vacuolisation_damage_basal_layer   spongiosis     saw_tooth_appearance_retes
##  Min.   :0.0000                   Min.   :0.0000   Min.   :0.0000            
##  1st Qu.:0.0000                   1st Qu.:0.0000   1st Qu.:0.0000            
##  Median :0.0000                   Median :0.0000   Median :0.0000            
##  Mean   :0.4563                   Mean   :0.9536   Mean   :0.4536            
##  3rd Qu.:0.0000                   3rd Qu.:2.0000   3rd Qu.:0.0000            
##  Max.   :3.0000                   Max.   :3.0000   Max.   :3.0000            
##                                                                              
##  follicular_horn_plug perifollicular_parakeratosis
##  Min.   :0.0000       Min.   :0.0000              
##  1st Qu.:0.0000       1st Qu.:0.0000              
##  Median :0.0000       Median :0.0000              
##  Mean   :0.1038       Mean   :0.1148              
##  3rd Qu.:0.0000       3rd Qu.:0.0000              
##  Max.   :3.0000       Max.   :3.0000              
##                                                   
##  inflammatory_mononuclear_infiltrate band_like_infiltrate      age       
##  Min.   :0.000                       Min.   :0.0000       Min.   : 0.00  
##  1st Qu.:1.000                       1st Qu.:0.0000       1st Qu.:25.00  
##  Median :2.000                       Median :0.0000       Median :35.00  
##  Mean   :1.866                       Mean   :0.5546       Mean   :36.30  
##  3rd Qu.:2.000                       3rd Qu.:0.0000       3rd Qu.:49.75  
##  Max.   :3.000                       Max.   :3.0000       Max.   :75.00  
##                                                           NA's   :8      
##      class      
##  Min.   :1.000  
##  1st Qu.:1.000  
##  Median :3.000  
##  Mean   :2.803  
##  3rd Qu.:4.000  
##  Max.   :6.000  
## 

#5. Mengubah Variabel Target Menjadi Faktor

Tahap ini bertujuan untuk mengubah variabel class menjadi variabel faktor atau kategori. Hal ini penting karena LDA digunakan untuk klasifikasi, sehingga variabel target harus berbentuk kategorik. Kode kelas 1 sampai 6 diubah menjadi nama penyakit agar hasil analisis lebih mudah dipahami.

data_derma$class <- factor(data_derma$class,
                           levels = c(1, 2, 3, 4, 5, 6),
                           labels = c("Psoriasis",
                                      "Seboreic dermatitis",
                                      "Lichen planus",
                                      "Pityriasis rosea",
                                      "Chronic dermatitis",
                                      "Pityriasis rubra pilaris"))

table(data_derma$class)
## 
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##                      112                       61                       72 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##                       49                       52                       20

#6. Kelas Diagnosis Penyakit

Tahap ini bertujuan untuk menjelaskan enam kelas diagnosis penyakit kulit yang terdapat pada dataset. Karena terdapat enam kelas, maka analisis ini termasuk klasifikasi multiclass atau multinomial.

Kode Kelas | Jenis Penyakit
1 | Psoriasis |
2 | Seboreic dermatitis |
3 | Lichen planus |
4 | Pityriasis rosea |
5 | Chronic dermatitis |
6 | Pityriasis rubra pilaris |

#7. Gambaran Visual Jenis Penyakit

Tahap ini bertujuan untuk memberikan gambaran visual mengenai enam jenis penyakit kulit yang menjadi kelas target pada dataset. Gambar ini digunakan sebagai ilustrasi pendukung agar pembaca dapat memahami konteks dataset, bukan sebagai bagian dari proses analisis LDA.
Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

Ilustrasi enam jenis penyakit kulit pada dataset Dermatology.

8. Sumber gambar:

  1. Psoriasis: https://www-drankireddy-com.translate.goog/psoriasis-symptoms-causes-treatment/?_x_tr_sl=en&_x_tr_tl=id&_x_tr_hl=id&_x_tr_pto=imgs
  2. Seboreic dermatitis: https://harlanmd.com/blogs/smartlotion-blog/seborrheic-dermatitis-causes-symptoms-treatments
  3. Lichen planus: https://hellosehat.com/penyakit-kulit/kulit-lainnya/lichen-planus/
  4. Pityriasis rosea: https://www.theclinicindonesia.com/artikel-details/pityriasis-rosea
  5. Chronic dermatitis: https://bmidoctors.com/chronic-dermatitis-and-semaglutide-exploring-a-curious-connection-in-modern-medicine/
  6. Pityriasis rubra pilaris: https://myacare.com/blog/pityriasis-rubra-pilaris-prp-symptoms-complications-diagnosis-and-treatment

#9. Pemeriksaan Missing Value

Tahap ini bertujuan untuk mengetahui apakah terdapat data yang hilang atau missing value. Missing value perlu diperiksa karena dapat memengaruhi proses pembentukan model LDA. Pada dataset Dermatology, missing value biasanya terdapat pada variabel age.

colSums(is.na(data_derma))
##                            erythema                             scaling 
##                                   0                                   0 
##                    definite_borders                             itching 
##                                   0                                   0 
##                  koebner_phenomenon                   polygonal_papules 
##                                   0                                   0 
##                  follicular_papules            oral_mucosal_involvement 
##                                   0                                   0 
##              knee_elbow_involvement                   scalp_involvement 
##                                   0                                   0 
##                      family_history                melanin_incontinence 
##                                   0                                   0 
##           eosinophils_in_infiltrate                      PNL_infiltrate 
##                                   0                                   0 
##           fibrosis_papillary_dermis                          exocytosis 
##                                   0                                   0 
##                          acanthosis                      hyperkeratosis 
##                                   0                                   0 
##                       parakeratosis                clubbing_rete_ridges 
##                                   0                                   0 
##              elongation_rete_ridges   thinning_suprapapillary_epidermis 
##                                   0                                   0 
##                  spongiform_pustule                   munro_microabcess 
##                                   0                                   0 
##               focal_hypergranulosis        disappearance_granular_layer 
##                                   0                                   0 
##    vacuolisation_damage_basal_layer                          spongiosis 
##                                   0                                   0 
##          saw_tooth_appearance_retes                follicular_horn_plug 
##                                   0                                   0 
##        perifollicular_parakeratosis inflammatory_mononuclear_infiltrate 
##                                   0                                   0 
##                band_like_infiltrate                                 age 
##                                   0                                   8 
##                               class 
##                                   0
data_derma[!complete.cases(data_derma), ]
##     erythema scaling definite_borders itching koebner_phenomenon
## 34         2       2                1       0                  0
## 35         2       1                0       0                  2
## 36         2       2                1       2                  0
## 37         2       1                2       3                  2
## 263        2       1                0       2                  0
## 264        1       1                1       3                  0
## 265        1       1                0       2                  0
## 266        1       1                0       3                  0
##     polygonal_papules follicular_papules oral_mucosal_involvement
## 34                  0                  0                        0
## 35                  0                  0                        0
## 36                  0                  0                        0
## 37                  3                  0                        2
## 263                 0                  0                        0
## 264                 0                  0                        0
## 265                 0                  0                        0
## 266                 0                  0                        0
##     knee_elbow_involvement scalp_involvement family_history
## 34                       1                 0              1
## 35                       0                 0              0
## 36                       0                 0              0
## 37                       0                 0              1
## 263                      0                 0              0
## 264                      0                 0              0
## 265                      1                 0              0
## 266                      0                 0              0
##     melanin_incontinence eosinophils_in_infiltrate PNL_infiltrate
## 34                     0                         0              2
## 35                     0                         0              0
## 36                     0                         0              2
## 37                     1                         0              0
## 263                    0                         0              0
## 264                    0                         0              0
## 265                    0                         0              0
## 266                    0                         0              0
##     fibrosis_papillary_dermis exocytosis acanthosis hyperkeratosis
## 34                          0          0          2              1
## 35                          0          2          1              1
## 36                          0          1          0              1
## 37                          0          2          1              1
## 263                         2          1          3              2
## 264                         3          2          3              1
## 265                         3          2          3              2
## 266                         2          1          3              1
##     parakeratosis clubbing_rete_ridges elongation_rete_ridges
## 34              2                    2                      1
## 35              1                    0                      0
## 36              0                    0                      0
## 37              2                    0                      0
## 263             2                    1                      3
## 264             2                    2                      2
## 265             1                    1                      3
## 266             1                    0                      2
##     thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
## 34                                  2                  0                 1
## 35                                  0                  0                 0
## 36                                  0                  0                 0
## 37                                  0                  0                 0
## 263                                 0                  0                 0
## 264                                 0                  0                 0
## 265                                 0                  0                 0
## 266                                 0                  1                 0
##     focal_hypergranulosis disappearance_granular_layer
## 34                      0                            0
## 35                      0                            0
## 36                      0                            0
## 37                      1                            0
## 263                     0                            0
## 264                     0                            0
## 265                     0                            0
## 266                     0                            0
##     vacuolisation_damage_basal_layer spongiosis saw_tooth_appearance_retes
## 34                                 0          0                          0
## 35                                 0          0                          0
## 36                                 0          0                          0
## 37                                 2          0                          2
## 263                                0          2                          0
## 264                                0          3                          0
## 265                                0          2                          0
## 266                                0          2                          0
##     follicular_horn_plug perifollicular_parakeratosis
## 34                     0                            0
## 35                     0                            0
## 36                     0                            0
## 37                     0                            0
## 263                    0                            0
## 264                    0                            0
## 265                    0                            0
## 266                    0                            0
##     inflammatory_mononuclear_infiltrate band_like_infiltrate age
## 34                                    0                    0  NA
## 35                                    0                    0  NA
## 36                                    0                    0  NA
## 37                                    0                    3  NA
## 263                                   3                    0  NA
## 264                                   2                    0  NA
## 265                                   3                    0  NA
## 266                                   3                    0  NA
##                   class
## 34            Psoriasis
## 35     Pityriasis rosea
## 36  Seboreic dermatitis
## 37        Lichen planus
## 263  Chronic dermatitis
## 264  Chronic dermatitis
## 265  Chronic dermatitis
## 266  Chronic dermatitis

#10. Penanganan Missing Value

Tahap ini bertujuan untuk menangani missing value agar data dapat digunakan dalam analisis. Missing value pada variabel age diganti menggunakan nilai median. Median dipilih karena lebih tahan terhadap nilai ekstrem dibandingkan rata-rata.

median_age <- median(data_derma$age, na.rm = TRUE)

data_derma$age[is.na(data_derma$age)] <- median_age

colSums(is.na(data_derma))
##                            erythema                             scaling 
##                                   0                                   0 
##                    definite_borders                             itching 
##                                   0                                   0 
##                  koebner_phenomenon                   polygonal_papules 
##                                   0                                   0 
##                  follicular_papules            oral_mucosal_involvement 
##                                   0                                   0 
##              knee_elbow_involvement                   scalp_involvement 
##                                   0                                   0 
##                      family_history                melanin_incontinence 
##                                   0                                   0 
##           eosinophils_in_infiltrate                      PNL_infiltrate 
##                                   0                                   0 
##           fibrosis_papillary_dermis                          exocytosis 
##                                   0                                   0 
##                          acanthosis                      hyperkeratosis 
##                                   0                                   0 
##                       parakeratosis                clubbing_rete_ridges 
##                                   0                                   0 
##              elongation_rete_ridges   thinning_suprapapillary_epidermis 
##                                   0                                   0 
##                  spongiform_pustule                   munro_microabcess 
##                                   0                                   0 
##               focal_hypergranulosis        disappearance_granular_layer 
##                                   0                                   0 
##    vacuolisation_damage_basal_layer                          spongiosis 
##                                   0                                   0 
##          saw_tooth_appearance_retes                follicular_horn_plug 
##                                   0                                   0 
##        perifollicular_parakeratosis inflammatory_mononuclear_infiltrate 
##                                   0                                   0 
##                band_like_infiltrate                                 age 
##                                   0                                   0 
##                               class 
##                                   0

#11. Statistik Deskriptif

Tahap ini bertujuan untuk melihat gambaran umum data setelah missing value ditangani. Statistik deskriptif digunakan untuk mengetahui nilai minimum, maksimum, median, mean, serta distribusi kelas diagnosis.

summary(data_derma)
##     erythema        scaling      definite_borders    itching     
##  Min.   :0.000   Min.   :0.000   Min.   :0.000    Min.   :0.000  
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000    1st Qu.:0.000  
##  Median :2.000   Median :2.000   Median :2.000    Median :1.000  
##  Mean   :2.068   Mean   :1.795   Mean   :1.549    Mean   :1.366  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000    3rd Qu.:2.000  
##  Max.   :3.000   Max.   :3.000   Max.   :3.000    Max.   :3.000  
##  koebner_phenomenon polygonal_papules follicular_papules
##  Min.   :0.0000     Min.   :0.0000    Min.   :0.0000    
##  1st Qu.:0.0000     1st Qu.:0.0000    1st Qu.:0.0000    
##  Median :0.0000     Median :0.0000    Median :0.0000    
##  Mean   :0.6339     Mean   :0.4481    Mean   :0.1667    
##  3rd Qu.:1.0000     3rd Qu.:0.0000    3rd Qu.:0.0000    
##  Max.   :3.0000     Max.   :3.0000    Max.   :3.0000    
##  oral_mucosal_involvement knee_elbow_involvement scalp_involvement
##  Min.   :0.000            Min.   :0.0000         Min.   :0.0000   
##  1st Qu.:0.000            1st Qu.:0.0000         1st Qu.:0.0000   
##  Median :0.000            Median :0.0000         Median :0.0000   
##  Mean   :0.377            Mean   :0.6148         Mean   :0.5191   
##  3rd Qu.:0.000            3rd Qu.:1.0000         3rd Qu.:1.0000   
##  Max.   :3.000            Max.   :3.0000         Max.   :3.0000   
##  family_history   melanin_incontinence eosinophils_in_infiltrate
##  Min.   :0.0000   Min.   :0.0000       Min.   :0.0000           
##  1st Qu.:0.0000   1st Qu.:0.0000       1st Qu.:0.0000           
##  Median :0.0000   Median :0.0000       Median :0.0000           
##  Mean   :0.1257   Mean   :0.4044       Mean   :0.1393           
##  3rd Qu.:0.0000   3rd Qu.:0.0000       3rd Qu.:0.0000           
##  Max.   :1.0000   Max.   :3.0000       Max.   :2.0000           
##  PNL_infiltrate   fibrosis_papillary_dermis   exocytosis      acanthosis   
##  Min.   :0.0000   Min.   :0.0000            Min.   :0.000   Min.   :0.000  
##  1st Qu.:0.0000   1st Qu.:0.0000            1st Qu.:0.000   1st Qu.:2.000  
##  Median :0.0000   Median :0.0000            Median :2.000   Median :2.000  
##  Mean   :0.5464   Mean   :0.3361            Mean   :1.369   Mean   :1.956  
##  3rd Qu.:1.0000   3rd Qu.:0.0000            3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :3.0000   Max.   :3.0000            Max.   :3.000   Max.   :3.000  
##  hyperkeratosis   parakeratosis  clubbing_rete_ridges elongation_rete_ridges
##  Min.   :0.0000   Min.   :0.00   Min.   :0.0000       Min.   :0.0000        
##  1st Qu.:0.0000   1st Qu.:1.00   1st Qu.:0.0000       1st Qu.:0.0000        
##  Median :0.0000   Median :1.00   Median :0.0000       Median :0.0000        
##  Mean   :0.5273   Mean   :1.29   Mean   :0.6639       Mean   :0.9918        
##  3rd Qu.:1.0000   3rd Qu.:2.00   3rd Qu.:2.0000       3rd Qu.:2.0000        
##  Max.   :3.0000   Max.   :3.00   Max.   :3.0000       Max.   :3.0000        
##  thinning_suprapapillary_epidermis spongiform_pustule munro_microabcess
##  Min.   :0.0000                    Min.   :0.0000     Min.   :0.0000   
##  1st Qu.:0.0000                    1st Qu.:0.0000     1st Qu.:0.0000   
##  Median :0.0000                    Median :0.0000     Median :0.0000   
##  Mean   :0.6339                    Mean   :0.2951     Mean   :0.3634   
##  3rd Qu.:1.0000                    3rd Qu.:0.0000     3rd Qu.:0.0000   
##  Max.   :3.0000                    Max.   :3.0000     Max.   :3.0000   
##  focal_hypergranulosis disappearance_granular_layer
##  Min.   :0.0000        Min.   :0.0000              
##  1st Qu.:0.0000        1st Qu.:0.0000              
##  Median :0.0000        Median :0.0000              
##  Mean   :0.3934        Mean   :0.4645              
##  3rd Qu.:0.0000        3rd Qu.:1.0000              
##  Max.   :3.0000        Max.   :3.0000              
##  vacuolisation_damage_basal_layer   spongiosis     saw_tooth_appearance_retes
##  Min.   :0.0000                   Min.   :0.0000   Min.   :0.0000            
##  1st Qu.:0.0000                   1st Qu.:0.0000   1st Qu.:0.0000            
##  Median :0.0000                   Median :0.0000   Median :0.0000            
##  Mean   :0.4563                   Mean   :0.9536   Mean   :0.4536            
##  3rd Qu.:0.0000                   3rd Qu.:2.0000   3rd Qu.:0.0000            
##  Max.   :3.0000                   Max.   :3.0000   Max.   :3.0000            
##  follicular_horn_plug perifollicular_parakeratosis
##  Min.   :0.0000       Min.   :0.0000              
##  1st Qu.:0.0000       1st Qu.:0.0000              
##  Median :0.0000       Median :0.0000              
##  Mean   :0.1038       Mean   :0.1148              
##  3rd Qu.:0.0000       3rd Qu.:0.0000              
##  Max.   :3.0000       Max.   :3.0000              
##  inflammatory_mononuclear_infiltrate band_like_infiltrate      age       
##  Min.   :0.000                       Min.   :0.0000       Min.   : 0.00  
##  1st Qu.:1.000                       1st Qu.:0.0000       1st Qu.:25.00  
##  Median :2.000                       Median :0.0000       Median :35.00  
##  Mean   :1.866                       Mean   :0.5546       Mean   :36.27  
##  3rd Qu.:2.000                       3rd Qu.:0.0000       3rd Qu.:48.00  
##  Max.   :3.000                       Max.   :3.0000       Max.   :75.00  
##                       class    
##  Psoriasis               :112  
##  Seboreic dermatitis     : 61  
##  Lichen planus           : 72  
##  Pityriasis rosea        : 49  
##  Chronic dermatitis      : 52  
##  Pityriasis rubra pilaris: 20
table(data_derma$class)
## 
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##                      112                       61                       72 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##                       49                       52                       20
prop.table(table(data_derma$class))
## 
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##               0.30601093               0.16666667               0.19672131 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##               0.13387978               0.14207650               0.05464481

#12. Visualisasi Distribusi Kelas

Tahap ini bertujuan untuk melihat sebaran jumlah data pada masing-masing kelas penyakit. Visualisasi ini membantu mengetahui apakah distribusi kelas relatif seimbang atau terdapat kelas tertentu yang jumlah datanya jauh lebih sedikit.

ggplot(data_derma, aes(x = class)) +
  geom_bar() +
  labs(title = "Distribusi Kelas Diagnosis Dermatology",
       x = "Jenis Penyakit",
       y = "Jumlah Data") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

#13. Pembagian Data Training dan Testing

Tahap ini bertujuan untuk membagi data menjadi data training dan data testing. Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk menguji kemampuan model pada data baru. Pada analisis ini digunakan proporsi 80% data training dan 20% data testing.

set.seed(123)

index_train <- createDataPartition(data_derma$class,
                                   p = 0.8,
                                   list = FALSE)

data_train <- data_derma[index_train, ]

data_test <- data_derma[-index_train, ]

dim(data_train)
## [1] 295  35
dim(data_test)
## [1] 71 35
table(data_train$class)
## 
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##                       90                       49                       58 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##                       40                       42                       16
table(data_test$class)
## 
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##                       22                       12                       14 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##                        9                       10                        4

#14. Pembentukan Model LDA

Tahap ini bertujuan untuk membentuk model Linear Discriminant Analysis. Model LDA digunakan untuk mencari kombinasi linear dari variabel-variabel prediktor yang paling mampu membedakan enam kelas diagnosis penyakit kulit.

model_lda <- lda(class ~ ., data = data_train)

model_lda
## Call:
## lda(class ~ ., data = data_train)
## 
## Prior probabilities of groups:
##                Psoriasis      Seboreic dermatitis            Lichen planus 
##               0.30508475               0.16610169               0.19661017 
##         Pityriasis rosea       Chronic dermatitis Pityriasis rubra pilaris 
##               0.13559322               0.14237288               0.05423729 
## 
## Group means:
##                          erythema  scaling definite_borders   itching
## Psoriasis                2.233333 2.177778        2.0777778 0.9222222
## Seboreic dermatitis      2.326531 2.040816        1.0000000 1.6122449
## Lichen planus            2.086207 1.655172        2.1206897 2.2931034
## Pityriasis rosea         1.950000 1.550000        1.2500000 0.4500000
## Chronic dermatitis       1.452381 1.119048        0.8571429 1.9047619
## Pityriasis rubra pilaris 2.000000 1.750000        1.0000000 0.6250000
##                          koebner_phenomenon polygonal_papules
## Psoriasis                        0.66666667          0.000000
## Seboreic dermatitis              0.04081633          0.000000
## Lichen planus                    1.34482759          2.327586
## Pityriasis rosea                 1.17500000          0.000000
## Chronic dermatitis               0.00000000          0.000000
## Pityriasis rubra pilaris         0.00000000          0.000000
##                          follicular_papules oral_mucosal_involvement
## Psoriasis                        0.04444444                 0.000000
## Seboreic dermatitis              0.02040816                 0.000000
## Lichen planus                    0.00000000                 2.086207
## Pityriasis rosea                 0.00000000                 0.000000
## Chronic dermatitis               0.26190476                 0.000000
## Pityriasis rubra pilaris         2.18750000                 0.000000
##                          knee_elbow_involvement scalp_involvement
## Psoriasis                            1.54444444        1.58888889
## Seboreic dermatitis                  0.06122449        0.10204082
## Lichen planus                        0.00000000        0.01724138
## Pityriasis rosea                     0.00000000        0.00000000
## Chronic dermatitis                   0.04761905        0.00000000
## Pityriasis rubra pilaris             1.56250000        0.50000000
##                          family_history melanin_incontinence
## Psoriasis                    0.28888889             0.000000
## Seboreic dermatitis          0.06122449             0.000000
## Lichen planus                0.01724138             2.068966
## Pityriasis rosea             0.00000000             0.000000
## Chronic dermatitis           0.00000000             0.000000
## Pityriasis rubra pilaris     0.62500000             0.000000
##                          eosinophils_in_infiltrate PNL_infiltrate
## Psoriasis                               0.03333333       1.000000
## Seboreic dermatitis                     0.44897959       1.142857
## Lichen planus                           0.18965517       0.000000
## Pityriasis rosea                        0.07500000       0.125000
## Chronic dermatitis                      0.09523810       0.000000
## Pityriasis rubra pilaris                0.00000000       0.187500
##                          fibrosis_papillary_dermis exocytosis acanthosis
## Psoriasis                               0.00000000  0.2888889   2.100000
## Seboreic dermatitis                     0.00000000  2.1428571   1.673469
## Lichen planus                           0.06896552  2.2586207   2.137931
## Pityriasis rosea                        0.00000000  2.0500000   1.525000
## Chronic dermatitis                      2.19047619  0.8333333   2.238095
## Pityriasis rubra pilaris                0.00000000  1.3125000   1.625000
##                          hyperkeratosis parakeratosis clubbing_rete_ridges
## Psoriasis                     0.8000000     2.0111111           2.14444444
## Seboreic dermatitis           0.2448980     1.0204082           0.00000000
## Lichen planus                 0.3275862     1.2068966           0.00000000
## Pityriasis rosea              0.3000000     0.7250000           0.00000000
## Chronic dermatitis            0.7142857     0.8095238           0.07142857
## Pityriasis rubra pilaris      0.8125000     1.1250000           0.12500000
##                          elongation_rete_ridges
## Psoriasis                             2.3111111
## Seboreic dermatitis                   0.1836735
## Lichen planus                         0.0000000
## Pityriasis rosea                      0.0000000
## Chronic dermatitis                    1.8571429
## Pityriasis rubra pilaris              0.1250000
##                          thinning_suprapapillary_epidermis spongiform_pustule
## Psoriasis                                       2.13333333          0.8000000
## Seboreic dermatitis                             0.02040816          0.1836735
## Lichen planus                                   0.00000000          0.0000000
## Pityriasis rosea                                0.00000000          0.0000000
## Chronic dermatitis                              0.02380952          0.0000000
## Pityriasis rubra pilaris                        0.00000000          0.0625000
##                          munro_microabcess focal_hypergranulosis
## Psoriasis                       1.20000000              0.000000
## Seboreic dermatitis             0.00000000              0.000000
## Lichen planus                   0.05172414              1.982759
## Pityriasis rosea                0.02500000              0.000000
## Chronic dermatitis              0.00000000              0.000000
## Pityriasis rubra pilaris        0.00000000              0.062500
##                          disappearance_granular_layer
## Psoriasis                                   1.1777778
## Seboreic dermatitis                         0.0000000
## Lichen planus                               0.2931034
## Pityriasis rosea                            0.4000000
## Chronic dermatitis                          0.0000000
## Pityriasis rubra pilaris                    0.0000000
##                          vacuolisation_damage_basal_layer spongiosis
## Psoriasis                                      0.01111111  0.0000000
## Seboreic dermatitis                            0.00000000  2.1428571
## Lichen planus                                  2.31034483  1.1896552
## Pityriasis rosea                               0.00000000  1.9500000
## Chronic dermatitis                             0.00000000  0.3095238
## Pityriasis rubra pilaris                       0.00000000  1.3125000
##                          saw_tooth_appearance_retes follicular_horn_plug
## Psoriasis                                  0.000000           0.00000000
## Seboreic dermatitis                        0.000000           0.02040816
## Lichen planus                              2.241379           0.01724138
## Pityriasis rosea                           0.025000           0.00000000
## Chronic dermatitis                         0.000000           0.02380952
## Pityriasis rubra pilaris                   0.000000           1.62500000
##                          perifollicular_parakeratosis
## Psoriasis                                  0.00000000
## Seboreic dermatitis                        0.02040816
## Lichen planus                              0.00000000
## Pityriasis rosea                           0.00000000
## Chronic dermatitis                         0.00000000
## Pityriasis rubra pilaris                   1.87500000
##                          inflammatory_mononuclear_infiltrate
## Psoriasis                                           1.888889
## Seboreic dermatitis                                 1.591837
## Lichen planus                                       2.258621
## Pityriasis rosea                                    1.775000
## Chronic dermatitis                                  1.738095
## Pityriasis rubra pilaris                            1.625000
##                          band_like_infiltrate      age
## Psoriasis                          0.03333333 39.71111
## Seboreic dermatitis                0.04081633 35.71429
## Lichen planus                      2.70689655 40.10345
## Pityriasis rosea                   0.00000000 35.72500
## Chronic dermatitis                 0.02380952 34.52381
## Pityriasis rubra pilaris           0.06250000 10.00000
## 
## Coefficients of linear discriminants:
##                                               LD1          LD2           LD3
## erythema                             0.2300064512 -0.007314195  0.0803364916
## scaling                             -0.2200027166  0.169794667  0.2804737349
## definite_borders                    -0.0593608914  0.122107467  0.0959260933
## itching                              0.0314226836  0.013903589  0.0102172731
## koebner_phenomenon                  -0.1458675666  0.093594648  0.0275047461
## polygonal_papules                    2.3502027980  0.073365540  0.3245142826
## follicular_papules                  -0.0872828212 -0.950332927 -0.0149653052
## oral_mucosal_involvement             0.9528493097  0.151528945  0.5428477205
## knee_elbow_involvement              -0.0893384043 -0.251651034  0.1861665041
## scalp_involvement                   -0.1997141124 -0.133823057  0.0963084032
## family_history                      -0.0420674916 -0.232952578  0.5228132459
## melanin_incontinence                 0.4905516978 -0.112192761 -0.0752075206
## eosinophils_in_infiltrate           -0.1214208669 -0.014244651  0.0737122288
## PNL_infiltrate                      -0.2070751428  0.438654259  0.3368219211
## fibrosis_papillary_dermis            0.5939124306 -0.493137223 -1.4329749562
## exocytosis                           0.0992734255  0.060818280 -0.1061011891
## acanthosis                           0.0328103387  0.055081313 -0.1700689050
## hyperkeratosis                       0.0847579936  0.297152897  0.0912145995
## parakeratosis                        0.1228489965  0.092221795 -0.0662671941
## clubbing_rete_ridges                -0.1996045799  0.577984077  0.7649034270
## elongation_rete_ridges              -0.1787090037  0.241390513  0.2011405396
## thinning_suprapapillary_epidermis   -0.1131364777  0.705828943  0.8573111568
## spongiform_pustule                   0.1723821049  0.108948583  0.0900616183
## munro_microabcess                    0.1057104186  0.281401057  0.1652254796
## focal_hypergranulosis                0.8109378830 -0.058713431 -0.0694562375
## disappearance_granular_layer         0.1081606058  0.134803720  0.0664307198
## vacuolisation_damage_basal_layer     0.3895089012  0.246359738  0.1820393368
## spongiosis                          -0.0735172944 -0.107674166 -0.2051745628
## saw_tooth_appearance_retes           1.2341362320 -0.101402541  0.1434345503
## follicular_horn_plug                -0.0284379067  0.410523921 -0.8701059831
## perifollicular_parakeratosis        -0.3581213500 -6.113171109  5.0700386017
## inflammatory_mononuclear_infiltrate  0.2203776266  0.139317798 -0.0147392368
## band_like_infiltrate                 2.2743123246 -0.016881156  0.3299728997
## age                                  0.0002518861  0.008031839 -0.0005158778
##                                              LD4          LD5
## erythema                             0.050529298  0.150498592
## scaling                              0.083171934  0.427183458
## definite_borders                    -0.124770819 -0.143126369
## itching                              0.085148653  0.718221635
## koebner_phenomenon                  -0.228000584 -0.978502808
## polygonal_papules                    0.190363428 -0.076930221
## follicular_papules                   0.444253971  0.320114333
## oral_mucosal_involvement             0.096316148  0.343380982
## knee_elbow_involvement               0.008314768  0.086061420
## scalp_involvement                   -0.015347761 -0.050604104
## family_history                       0.311512327  0.067798417
## melanin_incontinence                 0.374710866 -0.083821996
## eosinophils_in_infiltrate           -0.273934094  0.720106036
## PNL_infiltrate                      -0.123394543  0.744482155
## fibrosis_papillary_dermis            2.223894391  0.031811034
## exocytosis                          -0.333023615  0.077940868
## acanthosis                           0.004858607  0.014196196
## hyperkeratosis                       0.123734416 -0.122367771
## parakeratosis                       -0.090986101 -0.054429942
## clubbing_rete_ridges                 0.217303332  0.067044139
## elongation_rete_ridges               0.777653157  0.133169695
## thinning_suprapapillary_epidermis    0.224612653  0.178582395
## spongiform_pustule                  -0.003850653 -0.127660062
## munro_microabcess                   -0.047445099  0.199333093
## focal_hypergranulosis                0.283328190 -0.003811191
## disappearance_granular_layer        -0.047593903 -0.241845699
## vacuolisation_damage_basal_layer    -0.017401680  0.100855095
## spongiosis                          -0.619359290  0.246076509
## saw_tooth_appearance_retes           0.039935220 -0.159924160
## follicular_horn_plug                 0.295875755  0.386648888
## perifollicular_parakeratosis         0.716814459 -0.398303466
## inflammatory_mononuclear_infiltrate  0.181211196 -0.229218175
## band_like_infiltrate                 0.270692008  0.282618943
## age                                 -0.002864715  0.007077142
## 
## Proportion of trace:
##    LD1    LD2    LD3    LD4    LD5 
## 0.6622 0.1485 0.1096 0.0707 0.0090

#15. Prediksi pada Data Testing

Tahap ini bertujuan untuk menguji model LDA pada data testing. Model yang telah dibentuk dari data training digunakan untuk memprediksi kelas diagnosis pada data testing.

prediksi_lda <- predict(model_lda, newdata = data_test)

head(prediksi_lda$class)
## [1] Seboreic dermatitis Psoriasis           Psoriasis          
## [4] Chronic dermatitis  Lichen planus       Psoriasis          
## 6 Levels: Psoriasis Seboreic dermatitis Lichen planus ... Pityriasis rubra pilaris
head(prediksi_lda$posterior)
##        Psoriasis Seboreic dermatitis Lichen planus Pityriasis rosea
## 1   1.046687e-19        9.996295e-01  5.233333e-97     3.705464e-04
## 2   1.000000e+00        2.540547e-13 1.363119e-103     4.120352e-17
## 4   1.000000e+00        3.378069e-15 3.799115e-104     4.067057e-18
## 7   2.740183e-36        1.961073e-28  2.092048e-95     1.909482e-28
## 19 9.533464e-124       4.746927e-114  1.000000e+00    1.911105e-110
## 40  1.000000e+00        3.451287e-12 2.740451e-103     1.129244e-15
##    Chronic dermatitis Pityriasis rubra pilaris
## 1        1.622408e-19             1.452148e-61
## 2        8.623889e-27             7.062272e-67
## 4        4.566263e-29             1.823849e-72
## 7        1.000000e+00             3.548731e-78
## 19      4.395275e-106            2.979871e-162
## 40       1.084782e-23             4.647692e-65
head(prediksi_lda$x)
##          LD1        LD2        LD3        LD4         LD5
## 1  -3.860446 -1.2416071 -2.9064325 -3.8870037  2.26575547
## 2  -4.931233  2.9968039  3.4268840  0.5927923  0.84501903
## 4  -4.858165  3.7540181  3.5695945  0.5019979  0.20599872
## 7  -1.892335 -2.0716779 -6.6179284  6.9795398  0.02507395
## 19 18.469691 -0.8731568  0.2444307  0.4620846 -2.61249598
## 40 -5.001157  2.6564146  2.8959444  0.8845241  0.73355813

#16. Evaluasi Model dengan Confusion Matrix

Tahap ini bertujuan untuk mengevaluasi hasil klasifikasi model. Confusion matrix membandingkan kelas aktual dengan kelas hasil prediksi, sehingga dapat diketahui jumlah prediksi yang benar dan salah pada masing-masing kelas.

conf_matrix <- confusionMatrix(prediksi_lda$class, data_test$class)

conf_matrix
## Confusion Matrix and Statistics
## 
##                           Reference
## Prediction                 Psoriasis Seboreic dermatitis Lichen planus
##   Psoriasis                       22                   0             0
##   Seboreic dermatitis              0                  11             0
##   Lichen planus                    0                   0            14
##   Pityriasis rosea                 0                   1             0
##   Chronic dermatitis               0                   0             0
##   Pityriasis rubra pilaris         0                   0             0
##                           Reference
## Prediction                 Pityriasis rosea Chronic dermatitis
##   Psoriasis                               0                  0
##   Seboreic dermatitis                     0                  0
##   Lichen planus                           0                  0
##   Pityriasis rosea                        9                  0
##   Chronic dermatitis                      0                 10
##   Pityriasis rubra pilaris                0                  0
##                           Reference
## Prediction                 Pityriasis rubra pilaris
##   Psoriasis                                       0
##   Seboreic dermatitis                             0
##   Lichen planus                                   0
##   Pityriasis rosea                                0
##   Chronic dermatitis                              0
##   Pityriasis rubra pilaris                        4
## 
## Overall Statistics
##                                          
##                Accuracy : 0.9859         
##                  95% CI : (0.924, 0.9996)
##     No Information Rate : 0.3099         
##     P-Value [Acc > NIR] : < 2.2e-16      
##                                          
##                   Kappa : 0.9824         
##                                          
##  Mcnemar's Test P-Value : NA             
## 
## Statistics by Class:
## 
##                      Class: Psoriasis Class: Seboreic dermatitis
## Sensitivity                    1.0000                     0.9167
## Specificity                    1.0000                     1.0000
## Pos Pred Value                 1.0000                     1.0000
## Neg Pred Value                 1.0000                     0.9833
## Prevalence                     0.3099                     0.1690
## Detection Rate                 0.3099                     0.1549
## Detection Prevalence           0.3099                     0.1549
## Balanced Accuracy              1.0000                     0.9583
##                      Class: Lichen planus Class: Pityriasis rosea
## Sensitivity                        1.0000                  1.0000
## Specificity                        1.0000                  0.9839
## Pos Pred Value                     1.0000                  0.9000
## Neg Pred Value                     1.0000                  1.0000
## Prevalence                         0.1972                  0.1268
## Detection Rate                     0.1972                  0.1268
## Detection Prevalence               0.1972                  0.1408
## Balanced Accuracy                  1.0000                  0.9919
##                      Class: Chronic dermatitis Class: Pityriasis rubra pilaris
## Sensitivity                             1.0000                         1.00000
## Specificity                             1.0000                         1.00000
## Pos Pred Value                          1.0000                         1.00000
## Neg Pred Value                          1.0000                         1.00000
## Prevalence                              0.1408                         0.05634
## Detection Rate                          0.1408                         0.05634
## Detection Prevalence                    0.1408                         0.05634
## Balanced Accuracy                       1.0000                         1.00000

#17. Menghitung Akurasi Model

Tahap ini bertujuan untuk menghitung persentase prediksi yang benar dari seluruh data testing. Akurasi digunakan sebagai salah satu ukuran kinerja model klasifikasi.

akurasi <- mean(prediksi_lda$class == data_test$class)

akurasi
## [1] 0.9859155
cat("Akurasi model LDA pada data testing adalah:",
    round(akurasi * 100, 2), "%")
## Akurasi model LDA pada data testing adalah: 98.59 %

#18. Tabel Perbandingan Aktual dan Prediksi

Tahap ini bertujuan untuk menampilkan perbandingan antara kelas aktual dan kelas prediksi secara lebih jelas. Tabel ini membantu melihat hasil klasifikasi model pada data testing.

hasil_prediksi <- data.frame(
  Aktual = data_test$class,
  Prediksi = prediksi_lda$class
)

head(hasil_prediksi)
##                Aktual            Prediksi
## 1 Seboreic dermatitis Seboreic dermatitis
## 2           Psoriasis           Psoriasis
## 3           Psoriasis           Psoriasis
## 4  Chronic dermatitis  Chronic dermatitis
## 5       Lichen planus       Lichen planus
## 6           Psoriasis           Psoriasis
table(hasil_prediksi$Aktual, hasil_prediksi$Prediksi)
##                           
##                            Psoriasis Seboreic dermatitis Lichen planus
##   Psoriasis                       22                   0             0
##   Seboreic dermatitis              0                  11             0
##   Lichen planus                    0                   0            14
##   Pityriasis rosea                 0                   0             0
##   Chronic dermatitis               0                   0             0
##   Pityriasis rubra pilaris         0                   0             0
##                           
##                            Pityriasis rosea Chronic dermatitis
##   Psoriasis                               0                  0
##   Seboreic dermatitis                     1                  0
##   Lichen planus                           0                  0
##   Pityriasis rosea                        9                  0
##   Chronic dermatitis                      0                 10
##   Pityriasis rubra pilaris                0                  0
##                           
##                            Pityriasis rubra pilaris
##   Psoriasis                                       0
##   Seboreic dermatitis                             0
##   Lichen planus                                   0
##   Pityriasis rosea                                0
##   Chronic dermatitis                              0
##   Pityriasis rubra pilaris                        4

#19 Visualisasi Hasil LDA

Tahap ini bertujuan untuk memvisualisasikan hasil pemisahan kelas berdasarkan dua fungsi diskriminan pertama, yaitu LD1 dan LD2. Jika titik-titik dari kelas yang berbeda terlihat terpisah, maka model LDA dapat dikatakan mampu membedakan kelas dengan baik.

lda_plot <- data.frame(
  LD1 = prediksi_lda$x[, 1],
  LD2 = prediksi_lda$x[, 2],
  class = data_test$class
)

ggplot(lda_plot, aes(x = LD1, y = LD2, color = class)) +
  geom_point(size = 2) +
  labs(title = "Visualisasi Hasil LDA",
       x = "Linear Discriminant 1",
       y = "Linear Discriminant 2",
       color = "Kelas") +
  theme_minimal()

#20. Prediksi pada Seluruh Data

Tahap ini bertujuan untuk melihat hasil prediksi model pada seluruh dataset. Kolom baru prediksi_class ditambahkan untuk membandingkan kelas asli dengan kelas hasil prediksi.

prediksi_semua <- predict(model_lda, newdata = data_derma)

data_derma$prediksi_class <- prediksi_semua$class

head(data_derma[, c("class", "prediksi_class")])
##                 class      prediksi_class
## 1 Seboreic dermatitis Seboreic dermatitis
## 2           Psoriasis           Psoriasis
## 3       Lichen planus       Lichen planus
## 4           Psoriasis           Psoriasis
## 5       Lichen planus       Lichen planus
## 6 Seboreic dermatitis Seboreic dermatitis

#21. Evaluasi Sederhana pada Seluruh Data

Tahap ini bertujuan untuk melihat kecocokan antara kelas aktual dan kelas prediksi pada seluruh dataset. Namun, hasil utama yang sebaiknya dilaporkan tetap berdasarkan data testing, karena data testing lebih menggambarkan kemampuan model terhadap data baru.

table(data_derma$class, data_derma$prediksi_class)
##                           
##                            Psoriasis Seboreic dermatitis Lichen planus
##   Psoriasis                      112                   0             0
##   Seboreic dermatitis              0                  57             0
##   Lichen planus                    0                   0            72
##   Pityriasis rosea                 0                   3             0
##   Chronic dermatitis               0                   0             0
##   Pityriasis rubra pilaris         0                   0             0
##                           
##                            Pityriasis rosea Chronic dermatitis
##   Psoriasis                               0                  0
##   Seboreic dermatitis                     4                  0
##   Lichen planus                           0                  0
##   Pityriasis rosea                       46                  0
##   Chronic dermatitis                      0                 52
##   Pityriasis rubra pilaris                0                  0
##                           
##                            Pityriasis rubra pilaris
##   Psoriasis                                       0
##   Seboreic dermatitis                             0
##   Lichen planus                                   0
##   Pityriasis rosea                                0
##   Chronic dermatitis                              0
##   Pityriasis rubra pilaris                       20
mean(data_derma$class == data_derma$prediksi_class)
## [1] 0.9808743

Kesimpulan

Berdasarkan hasil analisis menggunakan metode Linear Discriminant Analysis, model LDA mampu mengklasifikasikan jenis penyakit kulit pada dataset Dermatology. Dataset ini memiliki enam kelas diagnosis, yaitu psoriasis, seboreic dermatitis, lichen planus, pityriasis rosea, chronic dermatitis, dan pityriasis rubra pilaris.

## Berdasarkan hasil pengujian pada data testing, model LDA menghasilkan akurasi sebesar 98.59 %. Hal ini menunjukkan bahwa model LDA memiliki kemampuan klasifikasi yang baik dalam membedakan enam jenis penyakit kulit pada dataset Dermatology.