I. Pendahuluan

1.1. Latar Belakang Kasus

Parkinson merupakan penyakit neurodegeneratif progresif yang memengaruhi kemampuan motorik dan fungsi bicara. Gangguan pada pita suara, seperti tremor vokal dan ketidakstabilan frekuensi, menjadi salah satu indikator penting yang dapat diamati melalui analisis akustik. Perkembangan teknologi memungkinkan pengukuran karakteristik suara secara kuantitatif sehingga dapat membantu deteksi dini kondisi Parkinson.

Dataset yang digunakan dalam studi ini adalah Parkinson’s Disease Detection Dataset yang dibuat oleh Max Little dari Universitas Oxford yang berkolaborasi dengan National Centre for Voice and Speech, Denverm Colorado. Dataset ini berisi 195 rekaman suara dari 31 individu, yang terdiri dari 23 pasien Parkinson dan 8 individu sehat. Data dikembangkan oleh Max Little dan kolaborator sebagai bagian dari penelitian yang mengevaluasi kelayakan pengukuran suara untuk pemantauan Parkinson. Dataset mencakup 23 variabel.

informasi variabel: 1. name -Nama subjek dalam format ASCII dan nomor rekaman 2. MDVP:Fo(Hz) – Rata-rata frekuensi dasar vokal 3. MDVP:Fhi(Hz) – Frekuensi dasar vokal maksimum 4. MDVP:Flo(Hz) – Frekuensi dasar vokal minimum 5. MDVP:Jitter(%), MDVP:Jitter(Abs), MDVP:RAP, MDVP:PPQ, Jitter:DDP – Berbagai ukuran variasi pada frekuensi dasar 6. MDVP:Shimmer, MDVP:Shimmer(dB), Shimmer:APQ3, Shimmer:APQ5, MDVP:APQ, Shimmer:DDA – Beberapa ukuran variasi amplitudo suara 7. NHR, HNR – Dua ukuran rasio komponen noise terhadap komponen tonal dalam suara 8. status – Status kesehatan subjek (1) = Parkinson (0) = Sehat 9. RPDE, D2 – Dua ukuran kompleksitas dinamika nonlinear 10. DFA – Eksponen penskalaan fraktal sinyal 11. spread1, spread2, PPE – Tiga ukuran nonlinear dari variasi frekuensi dasar

URL: https://www.kaggle.com/datasets/thecansin/parkinsons-data-set

1.2. Cuplikan data

library(readxl)
data<-read_xlsx("D:/ARIF/data parkinson.xlsx")
head(data)
## # A tibble: 6 × 24
##   name           `MDVP:Fo(Hz)` `MDVP:Fhi(Hz)` `MDVP:Flo(Hz)` `MDVP:Jitter(%)`
##   <chr>                  <dbl>          <dbl>          <dbl> <chr>           
## 1 phon_R01_S01_1      11999200       15730200        7499700 0.00784         
## 2 phon_R01_S01_2      12240000       14865000       11381900 0.00968         
## 3 phon_R01_S01_3      11668200       13111100       11155500 0.01050         
## 4 phon_R01_S01_4      11667600       13787100       11136600 0.00997         
## 5 phon_R01_S01_5      11601400       14178100       11065500 0.01284         
## 6 phon_R01_S01_6      12055200       13116200       11378700 0.00968         
## # ℹ 19 more variables: `MDVP:Jitter(Abs)` <chr>, `MDVP:RAP` <chr>,
## #   `MDVP:PPQ` <chr>, `Jitter:DDP` <chr>, `MDVP:Shimmer` <chr>,
## #   `MDVP:Shimmer(dB)` <chr>, `Shimmer:APQ3` <chr>, `Shimmer:APQ5` <chr>,
## #   `MDVP:APQ` <chr>, `Shimmer:DDA` <chr>, NHR <chr>, HNR <dbl>, status <dbl>,
## #   RPDE <chr>, DFA <chr>, spread1 <dbl>, spread2 <chr>, D2 <dbl>, PPE <chr>

1.3. Latar Belakang Metode

Data suara pada dataset Parkinson memiliki jumlah variabel yang cukup banyak serta saling berkorelasi. Ketika banyak variabel saling berkaitan, analisis langsung dapat menghasilkan interpretasi yang sulit dan berpotensi redundan. Oleh karena itu, diperlukan metode reduksi dimensi yang tetap mampu mempertahankan informasi penting dalam data.

Principal Component Analysis (PCA) adalah teknik statistik multivariat yang digunakan untuk menyederhanakan struktur data berdimensi tinggi ke dalam beberapa komponen utama. Metode ini mentransformasikan kumpulan variabel asli ke dalam variabel baru yang saling bebas (orthogonal) dan disusun berdasarkan besar variansinya. Komponen pertama (PC1) memuat informasi terbesar terhadap keragaman data, disusul komponen berikutnya.

Dengan PCA, pola dominan dalam data suara pasien Parkinson dapat ditangkap lebih jelas, khususnya variasi yang berasal dari jitter, shimmer, dan faktor nonlinier lain yang berhubungan dengan gangguan vokal.

Klasifikasi dengan Regresi Logistik digunakan pada komponen utama hasil PCA yang didapat. Penggunakan PCA akan mengurangi kompleksitas data serta meringankan dan mempercepat proses komputasi.

II. Source Code

  1. Library
library(readxl)

readxl: digunakan untuk membaca data excel

  1. Import data dan melihat data awal
data<-read_xlsx("D:/ARIF/data parkinson.xlsx")

head(data)
## # A tibble: 6 × 24
##   name           `MDVP:Fo(Hz)` `MDVP:Fhi(Hz)` `MDVP:Flo(Hz)` `MDVP:Jitter(%)`
##   <chr>                  <dbl>          <dbl>          <dbl> <chr>           
## 1 phon_R01_S01_1      11999200       15730200        7499700 0.00784         
## 2 phon_R01_S01_2      12240000       14865000       11381900 0.00968         
## 3 phon_R01_S01_3      11668200       13111100       11155500 0.01050         
## 4 phon_R01_S01_4      11667600       13787100       11136600 0.00997         
## 5 phon_R01_S01_5      11601400       14178100       11065500 0.01284         
## 6 phon_R01_S01_6      12055200       13116200       11378700 0.00968         
## # ℹ 19 more variables: `MDVP:Jitter(Abs)` <chr>, `MDVP:RAP` <chr>,
## #   `MDVP:PPQ` <chr>, `Jitter:DDP` <chr>, `MDVP:Shimmer` <chr>,
## #   `MDVP:Shimmer(dB)` <chr>, `Shimmer:APQ3` <chr>, `Shimmer:APQ5` <chr>,
## #   `MDVP:APQ` <chr>, `Shimmer:DDA` <chr>, NHR <chr>, HNR <dbl>, status <dbl>,
## #   RPDE <chr>, DFA <chr>, spread1 <dbl>, spread2 <chr>, D2 <dbl>, PPE <chr>
  1. Menghilangan kolom yang tidak digunakan
data_pca <- data[, !(names(data) %in% c("name", "status"))]

head(data_pca)
## # A tibble: 6 × 22
##   `MDVP:Fo(Hz)` `MDVP:Fhi(Hz)` `MDVP:Flo(Hz)` `MDVP:Jitter(%)`
##           <dbl>          <dbl>          <dbl> <chr>           
## 1      11999200       15730200        7499700 0.00784         
## 2      12240000       14865000       11381900 0.00968         
## 3      11668200       13111100       11155500 0.01050         
## 4      11667600       13787100       11136600 0.00997         
## 5      11601400       14178100       11065500 0.01284         
## 6      12055200       13116200       11378700 0.00968         
## # ℹ 18 more variables: `MDVP:Jitter(Abs)` <chr>, `MDVP:RAP` <chr>,
## #   `MDVP:PPQ` <chr>, `Jitter:DDP` <chr>, `MDVP:Shimmer` <chr>,
## #   `MDVP:Shimmer(dB)` <chr>, `Shimmer:APQ3` <chr>, `Shimmer:APQ5` <chr>,
## #   `MDVP:APQ` <chr>, `Shimmer:DDA` <chr>, NHR <chr>, HNR <dbl>, RPDE <chr>,
## #   DFA <chr>, spread1 <dbl>, spread2 <chr>, D2 <dbl>, PPE <chr>

kolom tidak dipakai: 1) name: string 2) status: kategori

4.Memastikan semua variabel numerik

data_pca <- data.frame(lapply(data_pca, as.numeric))
  1. Standarisasi data
data_scaled <- scale(data_pca)
  1. Menjalankan PCA
pca_result <- prcomp(data_scaled, center = TRUE, scale. = TRUE)
  1. Melihat ringkasan PCA
summary(pca_result)
## Importance of components:
##                           PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Standard deviation     3.5053 1.5891 1.25659 1.18431 1.01459 0.88288 0.81231
## Proportion of Variance 0.5585 0.1148 0.07177 0.06375 0.04679 0.03543 0.02999
## Cumulative Proportion  0.5585 0.6733 0.74505 0.80881 0.85560 0.89103 0.92102
##                            PC8     PC9    PC10    PC11    PC12    PC13    PC14
## Standard deviation     0.72730 0.60045 0.52954 0.46702 0.32773 0.29416 0.26258
## Proportion of Variance 0.02404 0.01639 0.01275 0.00991 0.00488 0.00393 0.00313
## Cumulative Proportion  0.94507 0.96145 0.97420 0.98411 0.98900 0.99293 0.99606
##                           PC15    PC16    PC17    PC18    PC19    PC20
## Standard deviation     0.19375 0.14307 0.12615 0.08924 0.05847 0.03612
## Proportion of Variance 0.00171 0.00093 0.00072 0.00036 0.00016 0.00006
## Cumulative Proportion  0.99777 0.99870 0.99942 0.99979 0.99994 1.00000
##                             PC21      PC22
## Standard deviation     0.0005992 0.0001819
## Proportion of Variance 0.0000000 0.0000000
## Cumulative Proportion  1.0000000 1.0000000
  1. Melihat Loadings (Kontribusi variabel dalam PC)
pca_result$rotation
##                           PC1         PC2          PC3         PC4          PC5
## MDVP.Fo.Hz.       0.055193894  0.54550190 -0.148439876  0.15655071 -0.073683981
## MDVP.Fhi.Hz.     -0.006741024  0.33688014 -0.286421382 -0.24748712 -0.156467141
## MDVP.Flo.Hz.      0.065162920  0.40324488  0.226449639  0.25775376 -0.199712937
## MDVP.Jitter...   -0.263503344  0.09093980  0.143138670 -0.23604382 -0.048601349
## MDVP.Jitter.Abs. -0.249701235 -0.07191208  0.169879960 -0.30671213  0.040546953
## MDVP.RAP         -0.258535975  0.12356304  0.154697710 -0.24401603  0.003712619
## MDVP.PPQ         -0.265610161  0.08155519  0.182030127 -0.13393317 -0.120349756
## Jitter.DDP       -0.258532761  0.12357964  0.154743563 -0.24404607  0.003675938
## MDVP.Shimmer     -0.264097172  0.04305064 -0.005404655  0.24760979  0.183467958
## MDVP.Shimmer.dB. -0.134498736  0.17495853  0.209952768  0.07487037 -0.402070546
## Shimmer.APQ3     -0.256804412  0.04567060  0.004169220  0.23926896  0.266858745
## Shimmer.APQ5     -0.256398518  0.04321312  0.011952631  0.31617683  0.117635050
## MDVP.APQ         -0.259290421  0.04948832 -0.014561716  0.25423749  0.010966855
## Shimmer.DDA      -0.256805983  0.04567220  0.004183458  0.23925816  0.266858019
## NHR              -0.241776023  0.17201342  0.023176145 -0.26728456  0.097944405
## HNR               0.247115088 -0.02390552  0.181324619 -0.09577135 -0.178264707
## RPDE             -0.151075947 -0.25486151 -0.335489821 -0.07189083  0.185117900
## DFA              -0.041630179 -0.29421464  0.484538835  0.30182763 -0.240872879
## spread1          -0.231241134 -0.23497274 -0.125439930 -0.06691348 -0.238846095
## spread2          -0.155767098 -0.20111597 -0.299194144  0.13292835 -0.486507274
## D2               -0.158619074  0.11886714 -0.423622262  0.12533935 -0.256255222
## PPE              -0.238678268 -0.20804470 -0.065839217 -0.01490291 -0.258681928
##                           PC6          PC7          PC8          PC9
## MDVP.Fo.Hz.       0.032949138 -0.135997099  0.024771832 -0.218683208
## MDVP.Fhi.Hz.     -0.523485149  0.549165155  0.299612851 -0.036216648
## MDVP.Flo.Hz.      0.181030838 -0.349509834  0.577634102  0.030790524
## MDVP.Jitter...   -0.019692365 -0.070642870 -0.005431340  0.031004213
## MDVP.Jitter.Abs. -0.055559290 -0.128774774  0.078857049  0.100432015
## MDVP.RAP         -0.002009666 -0.112892220 -0.011915660  0.037311442
## MDVP.PPQ         -0.030132128  0.008233202  0.033756818 -0.094553111
## Jitter.DDP       -0.001906260 -0.112841061 -0.011988148  0.037305938
## MDVP.Shimmer     -0.067237423  0.092015016 -0.004271147  0.063187571
## MDVP.Shimmer.dB.  0.532282021  0.517591690 -0.300914887 -0.031734852
## Shimmer.APQ3     -0.097849797  0.073812178  0.009092578  0.099747344
## Shimmer.APQ5     -0.077567899  0.107141660 -0.001738424 -0.029043193
## MDVP.APQ          0.060642685  0.156432384 -0.044669249 -0.006308414
## Shimmer.DDA      -0.097857356  0.073818449  0.009103269  0.099706906
## NHR               0.066107375 -0.089342000 -0.071505535  0.300584697
## HNR              -0.052049519  0.096241719 -0.027218899  0.237794720
## RPDE              0.449337963  0.125512128  0.450922960 -0.014580327
## DFA              -0.375906925  0.026066208  0.087365296 -0.015016463
## spread1          -0.006382722 -0.083813884  0.088809791 -0.412264976
## spread2          -0.007237022 -0.048777280  0.173968145  0.624564666
## D2               -0.135931425 -0.374579230 -0.454588958  0.001793464
## PPE              -0.046527870 -0.063559866  0.118029358 -0.440442553
##                          PC10         PC11         PC12         PC13
## MDVP.Fo.Hz.       0.018637948 -0.667689772  0.227151320 -0.079122837
## MDVP.Fhi.Hz.     -0.124917342  0.180837059 -0.015008152 -0.027934882
## MDVP.Flo.Hz.      0.008916963  0.417291737 -0.085721054 -0.039128701
## MDVP.Jitter...   -0.025450619 -0.100348071  0.065408965  0.079605448
## MDVP.Jitter.Abs.  0.067842012  0.072280047  0.052774993 -0.185469851
## MDVP.RAP         -0.057987435 -0.080732476  0.130710954  0.002765981
## MDVP.PPQ          0.005581776 -0.115668522 -0.023518194  0.183826033
## Jitter.DDP       -0.057749768 -0.080569478  0.130404312  0.002574747
## MDVP.Shimmer      0.127794700  0.053258809  0.078047992  0.002900912
## MDVP.Shimmer.dB. -0.096847898  0.086610945 -0.078075578 -0.254046379
## Shimmer.APQ3      0.112083897  0.007886074  0.020145115 -0.362934140
## Shimmer.APQ5      0.143639676  0.031331409  0.005881038  0.128613437
## MDVP.APQ          0.085240614  0.113120343  0.168578117  0.710406489
## Shimmer.DDA       0.112065314  0.007967885  0.020084129 -0.362923445
## NHR              -0.081356002  0.080395043 -0.168503661  0.078640026
## HNR               0.466904705  0.123671099  0.714128755 -0.054309564
## RPDE             -0.377647443 -0.031917005  0.421030414 -0.037642793
## DFA              -0.518816979 -0.151495987  0.167791625 -0.052459594
## spread1           0.281429161  0.077509566 -0.011306548 -0.210378022
## spread2           0.149118547 -0.308305794 -0.191518516  0.009152371
## D2               -0.310263103  0.366719504  0.271143836 -0.093596397
## PPE               0.243207018 -0.012684068 -0.059597368  0.035758279
##                          PC14        PC15         PC16        PC17         PC18
## MDVP.Fo.Hz.       0.145831813  0.04701491  0.016886614  0.22195800  0.005563885
## MDVP.Fhi.Hz.     -0.008303181 -0.02318333  0.020025359  0.01896713  0.035555372
## MDVP.Flo.Hz.     -0.026287331 -0.02359417  0.015408443 -0.02462180 -0.019662211
## MDVP.Jitter...   -0.156596124 -0.07364183  0.062770041  0.02714824 -0.482044275
## MDVP.Jitter.Abs. -0.217195300  0.30837350  0.138580952  0.71889453  0.113796059
## MDVP.RAP         -0.126315290 -0.24816866  0.057604575 -0.25301554  0.381655714
## MDVP.PPQ         -0.230483140  0.29453014 -0.377734110 -0.28103748 -0.446889267
## Jitter.DDP       -0.126049427 -0.24799851  0.057899112 -0.25336436  0.381855762
## MDVP.Shimmer     -0.018311236 -0.05287456  0.036009304  0.05574292 -0.036479764
## MDVP.Shimmer.dB. -0.016152794  0.02729597  0.048200769  0.05958357  0.047005539
## Shimmer.APQ3      0.015501450 -0.05106373  0.150469409 -0.12696240 -0.154418560
## Shimmer.APQ5     -0.060395179  0.33720577 -0.561568283  0.02978593  0.421012462
## MDVP.APQ          0.033003621 -0.25021065  0.269614861  0.23517366 -0.056710414
## Shimmer.DDA       0.015501897 -0.05088163  0.150624166 -0.12677861 -0.154577319
## NHR               0.804068201  0.10582631 -0.120276371  0.01549100 -0.037708061
## HNR               0.156605988  0.08937357 -0.062893283 -0.10072023 -0.047040883
## RPDE              0.029388038  0.09248263 -0.066763375 -0.04189078 -0.030713671
## DFA               0.218569841 -0.03850674 -0.009502261  0.07408702  0.005722473
## spread1           0.186751168 -0.52171276 -0.375143185  0.20573214 -0.078043118
## spread2          -0.100202216 -0.04294746  0.011507374 -0.02525745  0.042506607
## D2               -0.080593414  0.10644506 -0.015620629 -0.01953248 -0.049702892
## PPE               0.210707207  0.43209599  0.474868167 -0.26270293  0.122846540
##                          PC19          PC20          PC21          PC22
## MDVP.Fo.Hz.      -0.048059877 -0.0029829593 -1.571075e-04  1.480671e-05
## MDVP.Fhi.Hz.      0.005550506  0.0049548512 -8.545254e-06 -1.858964e-05
## MDVP.Flo.Hz.      0.020930850 -0.0001957014  6.118598e-05 -2.869144e-05
## MDVP.Jitter...    0.739546466  0.0459172462  2.517180e-04 -5.815667e-05
## MDVP.Jitter.Abs. -0.179768205  0.0369881172 -8.204234e-05 -1.408277e-04
## MDVP.RAP         -0.050067385 -0.0105942656  7.067034e-01 -2.362253e-02
## MDVP.PPQ         -0.486136566 -0.0292803091 -3.558809e-04 -5.387732e-07
## Jitter.DDP       -0.049552027 -0.0069790417 -7.067085e-01  2.384187e-02
## MDVP.Shimmer      0.018349489 -0.8842651978 -2.271323e-03  1.962275e-04
## MDVP.Shimmer.dB.  0.017466500 -0.0161408464  1.022959e-04 -2.019198e-05
## Shimmer.APQ3     -0.087364252  0.2460453392 -2.305201e-02 -7.067690e-01
## Shimmer.APQ5      0.344471887  0.1799916171  5.491560e-04  2.061450e-05
## MDVP.APQ         -0.171700652  0.2400368073  4.156352e-04 -8.525095e-05
## Shimmer.DDA      -0.087376787  0.2462428157  2.441305e-02  7.066477e-01
## NHR              -0.029279476 -0.0140615686  1.135693e-04 -1.546414e-05
## HNR               0.006373017  0.0135702746  4.164761e-05  3.405695e-05
## RPDE              0.011690622 -0.0007352295 -1.448270e-04  1.884873e-05
## DFA              -0.001011968 -0.0081745481 -1.570011e-04  7.302942e-06
## spread1          -0.053066657  0.0227646681 -4.580370e-05  5.942704e-05
## spread2          -0.010858440  0.0017530014  6.187360e-06  4.385183e-05
## D2               -0.020887294  0.0072874764 -6.234847e-05 -1.782057e-05
## PPE               0.090708353 -0.0327736366  2.589426e-04 -7.507013e-05
  1. Visualisasi Scree Plot
plot(pca_result, type = "l", main = "Scree Plot PCA")

  1. Menentukan banyak komponen PC

Berdasarkan Scree Plot, direkomendasikan menggunakan PC 1 & PC 2, karena penurunan variance pada PC 3 dan seterusnya tidak signifikan.

Berdasarkan Cummulative Proportion dengan standar >70%, direkomendasikan menggunakan PC 1, PC 2, & PC 3. Akumulasi PC 1, PC 2, PC 3 adalah 74.5% sudah cukup untuk memenuhi standar.

Pada penelitian ini akan digunakan 3 komponen PC, yaitu PC 1, PC 2, & PC 3.

  1. Menyiapkan data untuk Regresi Logistik
# Membuat dataframe PC
pc_scores <- as.data.frame(pca_result$x)

# Ambil 3 PC pertama 
pc_data <- pc_scores[, 1:3]

# Tambahkan status (y)
pc_data$status <- as.factor(data$status)
  1. Membuat model Regresi Logistik
# Regresi Logistik

model_logit <- glm(status ~ PC1 + PC2 + PC3,
                   data = pc_data,
                   family = binomial)

summary(model_logit)
## 
## Call:
## glm(formula = status ~ PC1 + PC2 + PC3, family = binomial, data = pc_data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.9285     0.3300   5.844 5.11e-09 ***
## PC1          -0.5688     0.1539  -3.696 0.000219 ***
## PC2          -0.5670     0.1720  -3.296 0.000980 ***
## PC3          -0.2055     0.2167  -0.948 0.342948    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 217.65  on 194  degrees of freedom
## Residual deviance: 139.14  on 191  degrees of freedom
## AIC: 147.14
## 
## Number of Fisher Scoring iterations: 6

model regresi logistik: log(p/(1-p))=1.9285−0.5688PC1−0.5670PC2−0.2055PC3

dengan

𝑝=𝑃(status = 1 | PC1, PC2, PC3)

yaitu peluang seseorang mengidap Parkinson.

  1. Prediksi Probabilitas
prob_pred <- predict(model_logit, type = "response")
pred_class <- ifelse(prob_pred > 0.5, 1, 0)
  1. Membuat Confussion Matrix
cm<-table(Prediksi = pred_class, Asli = data$status)
cm
##         Asli
## Prediksi   0   1
##        0  23   9
##        1  25 138

True Positive (TP) = 138 True Negative (TN) = 23 False Positive (FP) = 25 False Negative (FN) = 9

  1. Menghitung Accuracy, Precision, Recall, F1-score
# True Positive, False Positive, False Negative
TP <- cm[2,2]
FP <- cm[1,2]
FN <- cm[2,1]

# Accuracy
accuracy <- mean(pred_class == data$status)

# Precision
precision <- TP / (TP + FP)

# Recall (Sensitivity)
recall <- TP / (TP + FN)

# F1 Score
F1 <- 2 * precision * recall / (precision + recall)

cat(" Accuracy: ", accuracy, "\n", "Precision: ", precision, "\n","Recall: ", recall,"\n","F1-Score: ",F1,"\n")
##  Accuracy:  0.825641 
##  Precision:  0.9387755 
##  Recall:  0.8466258 
##  F1-Score:  0.8903226

III. Hasil dan Pembahasan

3.1. PCA

Analisis PCA dilakukan untuk mereduksi dimensi dari sekumpulan variabel numerik pada data Parkinson. PCA bertujuan menghasilkan sejumlah komponen utama (Principal Components) yang mampu mewakili variasi terbesar dalam data, sehingga model menjadi lebih sederhana, bebas multikolinearitas, namun tetap informatif.

Berdasarkan hasil PCA, diperoleh beberapa temuan penting:

Komponen utama pertama (PC1) memiliki kontribusi variasi terbesar dibanding komponen lainnya. PC1 menangkap pola umum dari fitur suara pasien Parkinson, sehingga menjadi komponen paling informatif.

Komponen utama kedua (PC2) juga memberikan kontribusi signifikan terhadap variasi data. PC2 banyak dipengaruhi oleh kelompok variabel tertentu (misalnya jitter, shimmer, atau fitur harmonik) yang berbeda dari PC1.

Komponen ketiga (PC3) masih menangkap variasi data, namun kontribusinya lebih rendah dibanding PC1 dan PC2.

Secara keseluruhan, PC1–PC3 telah menjelaskan proporsi variasi yang cukup besar dalam dataset sehingga layak digunakan sebagai variabel input model prediksi.

Dengan demikian, PCA berhasil:

Mengurangi kompleksitas data,

Memperbaiki struktur data,

Menghilangkan multikolinearitas antar variabel asli,

Menyediakan variabel yang lebih stabil untuk model regresi logistik.

3.2. Regresi Logistik

3.2.1. Estimasi Model

Setelah memperoleh komponen PC1, PC2, dan PC3, dilakukan pemodelan regresi logistik biner dengan variabel dependen:

status (0 = sehat, 1 = Parkinson)

model logit: log(P(Parkinson)/(1-P(Parkinson))) = 1.9285-0.5688 PC1-0.5670 PC2-).2055 PC3

3.2.2. Evaluasi Model

Accuracy: 0.825641 Precision: 0.9387755 Recall: 0.8466258 F1-Score: 0.8903226

Interpretasi:

  1. Akurasi 82.56% menunjukkan bahwa model secara keseluruhan cukup baik dalam mengklasifikasi kondisi pasien.

  2. Precision tinggi (93.88%) berarti sebagian besar prediksi “Parkinson” adalah benar. Model sangat sedikit menghasilkan false positive.

  3. Recall 84.66% menunjukkan model cukup mampu mendeteksi pasien Parkinson, meskipun masih ada sebagian kasus (sekitar 15%) yang terlewat.

  4. F1-score 89.03% menegaskan bahwa model seimbang dalam hal precision dan recall.

Secara umum, model memiliki performa yang baik untuk tujuan klasifikasi awal kondisi Parkinson.

IV. Kesimpulan

4.1. Kesimpulan

Secara keseluruhan, hasil analisis menunjukkan bahwa PCA berhasil mereduksi dimensi data dan menghasilkan komponen yang mewakili sebagian besar informasi penting dari fitur suara. Regresi logistik berdasarkan PC1, PC2, PC3 mampu memprediksi status Parkinson dengan akurasi yang cukup tinggi (82.56%). Model yang terbentuk memiliki tingkat kesalahan yang rendah, terutama dalam memprediksi kasus positif, menjadikannya model prediksi awal yang cukup baik untuk mendeteksi Parkinson. Komponen PC1 dan PC2 terbukti paling dominan dalam mengklasifikasi kondisi kesehatan, sehingga dapat menjadi fitur utama pada model prediksi berbasis machine learning selanjutnya.

4.2. Saran

Regresi logistik merupakan model yang sederhana dan interpretable. Penelitian selanjutnya dapat mempertimbangkan algoritma machine learning lain untuk meningkatkan akurasi, seperti Random Forest, Support Vector Machine (SVM), Gradient Boosting.