PCOS Early Detection Based On Symptoms and Lab Tests and an Overview of How Treat It Well

By Delvia

Background

Polycystic ovarian syndrome (PCOS) terjadi pada 1 di antara 10 wanita pada usia reproduktif. PCOS adalah suatu gangguan sistem endokrin cukup kompleks yang dapat berdampak pada berbagai masalah serius diantaranya infertilitas, diabetes, anxiety, depresi, penyakit kardiovaskular [3,4, 11]. Dokter tidak mengetahui pasti penyebab PCOS, tetapi pada umumnya terjadi ketika ada ketidakseimbangan hormon, dimana tubuh memproduksi hormon androgen, estrogen, progesteron dan insulin secara tidak seimbang. Studi lain mengatakan bahwa penyebab PCOS adalah faktor genetik dan lingkungan termasuk pola hidup yang tidak sehat [12].

Sebagian besar studi epidemiologi PCOS telah dilakukan di negara maju, namun hanya sedikit informasi mengenai sindrom ini di negara berkembang [6], termasuk Indonesia. Sehingga, sangat sulit mendapatkan data prevalensi PCOS di Indonesia. Berikut adalah studi prevalensi PCOS di rawat inap persalinan rumah sakit Amerika serikat [9].

Dari data di atas, dapat dilihat bahwa prevalensi PCOS di rawat inap persalinan rumah sakit Amerika serikat mengalami peningkatan selama periode 17 tahun. Berdasarkan sumber data, juga dilaporkan bahwa tingkat komplikasi kardiovaskular lebih tinggi di antara wanita dengan PCOS, dibandingkan dengan mereka yang tidak memiliki PCOS [9].

Permasalahannya, PCOS sangat sulit didiagnosis karena setiap wanita memiliki simtom serta hasil lab yang berbeda-beda. Umumnya, PCOS akan didiagnosa ketika telah berkembang menjadi komplikasi yang dapat menurunkan kualitas hidup penderitanya seperti infertilitas, obesitas, penyakit kardiovaskular, liver dan bahkan kanker endometrium. Rotterdam merupakan metode diagnosa PCOS yang paling banyak digunakan di seluruh dunia. Namun, berdasarkan studi literatur, masih terdapat sekitar 70% wanita yang tidak terdiagnosa sebagai PCOS bahkan setelah mengunjungi praktisi medis [6]. Oleh karenanya, penting untuk membentuk model machine learning yang dapat mempelajari karakteristik pasien PCOS berdasarkan simtom dan hasil lab. Project ini akan sangat bermanfaat bagi dunia medis, baik bagi pasien maupun dokter untuk mengurangi kesalahan diagnosa serta mengoptimalkan terapi sedini mungkin.

Sebagai tambahan, mengutip dari sebuah survei di Canada, ditemukan bahwa sebagian besar pasien PCOS mengalami ketidakpuasan dengan informasi yang diberikan ketika diagnosa (65.9%). Sebagian besar pasien tidak menerima informasi tentang manajemen pola hidup (41,9%), dan dari pasien yang menerima informasi manajemen pola hidup, sekitar 33,5% merasa tidak puas atau sangat tidak puas dengan informasi tersebut. Sekitar sepertiga (38,1%) pasien melaporkan tidak puas atau sangat tidak puas dengan informasi yang diberikan tentang terapi medis, dan 28,1% sama sekali tidak menerima informasi tentang terapi medis. Temuan survei ini sangat mirip dengan skor kepuasan dari survei lain yang dilakukan pada populasi PCOS di Australia dan internasional [11]. Dari hasil survei tersebut, saya kemudian tertarik untuk membuat suatu review artikel terkini (up-to-date) tentang manajemen dan perubahan pola hidup pasien PCOS sebagai terapi lini pertama.

Problem Statement

Beragamnya simtom serta hasil lab pasien menjadi tantangan bagi dokter dalam mendiagnosa apakah pasien mengalami PCOS atau tidak. Kesalahan diagnosa pasien yang ternyata PCOS namun didiagnosa tidak, akan menyebabkan tertundanya treatment lebih lanjut, mengingat sindrom ini akan bertambah buruk seiring perjalanan waktu dengan pola hidup yang tidak sehat. Sebaliknya, jika pasien ternyata bukan PCOS namun didiagnosa PCOS, mungkin akan menyebabkan kesalahan treatment misalnya saja jika pasien dianjurkan dokter untuk mengonsumsi obat-obatan dalam hal treatment PCOS seperti metformin, oral kontrasepsi, ataupun antidepressan. Bagaimana jika obat-obatan tersebut justru menimbulkan efek samping atau memperburuk status kesehatan pasien.

Project Idea

Kehadiran machine learning dengan model terbaik mungkin dapat menjadi solusi dalam pencegahan kesalahan diagnosa PCOS. Machine learning dibangun dengan mempelajari data aktual pasien PCOS dan yang bukan PCOS. Model kemudian dievaluasi menggunakan data test untuk melihat apakah model dapat membedakan pasien PCOS atau tidak dengan menggunakan parameter ROC dan AUC, serta confusion matrix dengan melihat empat parameter yaitu, accuracy, sensitivity, recall dan precision. Akan dilakukan lima model klasifikasi supervised learning yaitu Logistik Regression, Naive Bayes, Decision Tree, Random Forest dan Xgboost. Harapannya, wanita khususnya remaja akan dapat melakukan deteksi PCOS sedini mungkin untuk kemudian di treatment guna mencegah perkembangan komplikasi yang lebih buruk.

Problem Scope

Pada project ini akan digunakan sebuat dataset dari situs kaggle. Sumber data dikumpulkan dari 10 rumah sakit di India. Dataset ini terdiri dari 541 baris dan 36 kolom, memuat informasi sebagai berikut:
- PCOS : label pcos (yes/no)
- Age : umur pasien
- BMI : indeks massa tubuh
- Blood_group : golongan darah
- Pulse_rate : denyut nadi (byte/minute)
- Resp_rate : laju respirasi (breaths/minute)
- Hb : kadar hemoglobin (g/dL)
- Cycle_RI: keteraturan siklus menstruasi (reguler/irreguler)
- Cycle_length : lama siklus menstruasi (days/week)
- Marriage_length: lama pernikahan (years)
- Pregnant: status kehamilan (yes/no)
- No.of_abortions: jumlah kejadian keguguran
- Beta-HCG: kadar hormon Beta-HCG (mIU/mL)
- FSH/LH : rasio kadar hormon FSH/LH (mIU/mL)
- Waist : lebar lingkar pinggang (inch)
- Waist/Hip : rasio lebar pinggang/panggul
- TSH : kadar hormon TSH (mIU/L)
- AMH : kadar hormon AMH (ng/mL)
- Prolactin : kadar hormon prolactin (ng/mL)
- Vit.D3: kadar vitamin D3 dalam darah (ng/mL)
- Progesteron : kadar hormon progesteron (ng/mL)
- Random_blood_glucose: kadar gula darah acak (mg/dL)
- Weight_gain : kenaikan berat badan (yes/no)
- Hair_growth : hirsutism atau tumbuhnya rambut pada area tertentu seperti wajah (yes/no)
- Skin_darkening : penggelapan area kulit tertentu seperti ketiak, siku, lutut (yes/no)
- Hair_loss : alopecia atau kebotakan (yes/no)
- Pimples : timbulnya jerawat (yes/no)
- Fast_food : kebiasaan mengonsumsi makanan siap saji (yes/no)
- Regular_exercise : olahraga secara teratur (yes/no)
- Systolic_BP : tekanan darah sistolik (mmHg)
- Diastolic_BP : tekanan darah diastolik (mmHg)
- No.left_ventricle : jumlah ventrikel kiri
- No.right_ventricle : jumlah ventrikel kanan
- Avg.size_left_ventricle : ukuran rata-rata ventrikel kiri (mm)
- Avg.size_right_ventricle : ukuran rata-rata ventrikel kanan (mm)
- Diameter_endometrium : diameter of endometrium (mm)

Selanjutnya, pembuatan model machine learning untuk mengidentifikasi apakah pasien PCOS atau tidak, akan digunakan variabel PCOS sebagai variabel target dan variabel-variabel lain akan dijadikan sebagai variabel prediktor untuk dieksplor lebih lanjut dan dianalisis serta digunakan dalam pembuatan model machine learning.

Output

Selain mencari model machine learning terbaik, project ini juga akan dilengkapi dengan review artikel mengenai treatment lini pertama yaitu perubahan pola hidup, sehingga harapannya pasien akan lebih mengutamakan cara mentreatment sindrom ini dengan mengubah pola hidup yang lebih sehat dan tentunya treatment ini dikhususkan pada pasien PCOS saja. Untuk pasien yang bukan PCOS juga akan diberikan edukasi dan awareness untuk tetap menjaga pola hidup sehat mengingat bahwa pola hidup yang tidak sehat menjadi salah satu penyebab sindrom ini. Selain review artikel, project ini juga akan dilengkapi dengan poster dan beberapa rekomendasi rujukan lembaga/komunitas nasional maupun internasional terkait PCOS yang dapat digunakan sebagai wadah untuk saling sharing pengalaman antar pasien PCOS.

Project ini akan ditampilkan dalam bentuk web dashboard, dengan rincian sebagai berikut:
- Overview project dan overview data
- Architecture model machine learning
- Input data simtom dan hasil lab pasien yang akan dihubungkan dengan model machine learning serta hasil evaluasi model (accuracy, sensitivity, recall, precision, ROC & AUC)
- Halaman artikel dan poster tentang PCOS
- Halaman rekomendasi komunitas online PCOS nasional dan internasional
- Halaman profil data diri.

Business Impact

Project ini dapat diaplikasikan di pelayanan kesehatan seperti rumah sakit maupun klinik yang memfasilitasi tes lab pcos, khususnya tes lab yang digunakan sebagai prediktor pada model machine learning project ini. Sehingga, harapannya pasien akan mendapatkan jawaban lebih cepat dan akurat terkait apakah dirinya mengalami pcos atau tidak, serta mendapatkan informasi lebih dari artikel kesehatan terkait pcos dan treatment serta rekomendasi rujukan lembaga/komunitas nasional maupun internasional terkait PCOS yang dapat digunakan sebagai wadah untuk saling sharing pengalaman antar pasien PCOS.

Target user yang utama adalah fasilitas kesehatan seperti rumah sakit maupun klinik yang memfasilitasi tes lab PCOS. Nantinya, wanita remaja maupun dewasa yang dicurigai mengalami PCOS ditandai dengan sedikit/banyaknya simtom PCOS yang mereka miliki akan datang ke rumah sakit/klinik untuk melakukan tes lab. Kemudian, hasil tes tersebut akan di input ke dalam model machine learning. Selanjutnya, jika pasien dinyatakan positif, maka pasien akan diedukasi terapi lini pertama PCOS yaitu melakukan perubahan pola hidup. Edukasi tersebut akan disampaikan oleh dokter dengan merujuk pada satu review artikel yang ditulis oleh saya sendiri dengan cara merangkum puluhan jurnal/artikel kesehatan up-to-date mengenai PCOS serta dikombinasikan dengan pengetahuan medis yang dimiliki oleh dokter tersebut. Agar lebih mudah diingat, poin-poin penting review artikel tersebut akan disajikan dalam bentuk poster. Jika dibutuhkan, pasien juga akan mendapatkan rujukan lembaga/komunitas nasional maupun internasional terkait PCOS sebagai wadah sharing pengalaman antar pasien PCOS. Keuntungan yang didapatkan oleh rumah sakit adalah dapat meminimalisir kesalahan diagnosa, mempercepat penegakan diagnosa serta mengoptimalkan terapi lini pertama pasien PCOS.

Project ini juga dapat dikembangkan lebih lanjut untuk pembuatan aplikasi (apps) misalnya, sehingga dapat digunakan oleh umum namun pasien tetap harus melakukan tes lab terlebih dahulu.

Exploratory Data Analysis (EDA)

Import Library dan Read Data

# Import library
library(readxl)
library(dplyr)
library(rmdformats)
library(GGally)
library(psych)
library(inspectdf)
library(caret) # to pre-process data
library(caretEnsemble)
library(naivebayes)
library(tidyr)
library(e1071) # model naive bayes
library(haven)
library(nnet)
library(class)
library(pracma)
library(ROCR)
library(randomForest)
library(remotes)
library(ggplot2) # to visualize data
library(gridExtra) # to display multiple graph
library(tidymodels) # to build tidy models
library(car)
library(graphics)

# Read data
pcos <- read_excel("PCOS DATASET/PCOS_data_without_infertility.xlsx", sheet = "Full_new", na=c("NA", "N/A", " ", "-"))
pcos <- as.data.frame(pcos)
rmarkdown::paged_table(pcos)

Cek missing value

# cek missing value
is.na(pcos) %>% colSums()
#>                 Sl. No       Patient File No.             PCOS (Y/N) 
#>                      0                      0                      0 
#>              Age (yrs)            Weight (Kg)             Height(Cm) 
#>                      0                      0                      0 
#>                    BMI            Blood Group        Pulse rate(bpm) 
#>                      0                      0                      0 
#>       RR (breaths/min)               Hb(g/dl)             Cycle(R/I) 
#>                      0                      0                      0 
#>     Cycle length(days)  Marraige Status (Yrs)          Pregnant(Y/N) 
#>                      0                      1                      0 
#>      No. of aborptions   I   beta-HCG(mIU/mL) II    beta-HCG(mIU/mL) 
#>                      0                      0                      0 
#>            FSH(mIU/mL)             LH(mIU/mL)                 FSH/LH 
#>                      0                      0                      0 
#>              Hip(inch)            Waist(inch)        Waist:Hip Ratio 
#>                      0                      0                      0 
#>            TSH (mIU/L)             AMH(ng/mL)             PRL(ng/mL) 
#>                      0                      0                      0 
#>         Vit D3 (ng/mL)             PRG(ng/mL)             RBS(mg/dl) 
#>                      0                      0                      0 
#>       Weight gain(Y/N)       hair growth(Y/N)   Skin darkening (Y/N) 
#>                      0                      0                      0 
#>         Hair loss(Y/N)           Pimples(Y/N)        Fast food (Y/N) 
#>                      0                      0                      1 
#>      Reg.Exercise(Y/N)    BP _Systolic (mmHg)   BP _Diastolic (mmHg) 
#>                      0                      0                      0 
#>       Follicle No. (L)       Follicle No. (R)   Avg. F size (L) (mm) 
#>                      0                      0                      0 
#>   Avg. F size (R) (mm)       Endometrium (mm) 
#>                      0                      0

Handling missing value

# replace missing value with 0
pcos <- replace(pcos, is.na(pcos), 0)

# check again missing value
anyNA(pcos)
#> [1] FALSE

Drop and Rename column

# drop column
pcos_clean <- pcos[,-c(1,2,5,6,18,19,20,22)]

# rename column
colnames(pcos_clean) <- c("PCOS", "Age", "BMI", "Blood_group", "Pulse_rate", "Resp_rate", "Hb", "Cycle_RI", "Cycle_length", "Marriage_length", "Pregnant", "No.of_abortions", "Beta-HCG", "FSH/LH", "Waist", "Waist/Hip", "TSH", "AMH", "Prolactin", "Vit.D3", "Progesteron", "Random_blood_glucose", "Weight_gain", "Hair_growth", "Skin_darkening", "Hair_loss", "Pimples", "Fast_food", "Regular_exercise", "Systolic_BP", "Diastolic_BP", "No.left_ventricle", "No.right_ventricle", "Avg.size_left_ventricle", "Avg.size_right_ventricle", "Diameter_endometrium")

Finalizing data preparation

pcos_clean$Blood_group <- factor(case_when(
  pcos_clean$Blood_group == 11 ~ "A+",
  pcos_clean$Blood_group == 12 ~ "A-",
  pcos_clean$Blood_group == 13 ~ "B+",
  pcos_clean$Blood_group == 14 ~ "B-",
  pcos_clean$Blood_group == 15 ~ "O+",
  pcos_clean$Blood_group == 16 ~ "O-",
  pcos_clean$Blood_group == 17 ~ "AB+",
  pcos_clean$Blood_group == 18 ~ "AB-",
  TRUE ~ "Unknown"
))

# replace 0 to be no and 1 to be yes
pcos_clean <- as.data.frame(pcos_clean %>%
  mutate(across(c(1,11,23,24,25,26,27,28,29), ~ ifelse(. == 0, "no", "yes")),
         across(8, ~ ifelse(. == 4, "irregular", "regular")),
         across(c(1,8,11,23,24,25,26,27,28,29), as.factor),
         `Beta-HCG`=as.numeric(`Beta-HCG`),
         AMH=as.numeric(AMH)))


# drop missing value
pcos_clean <- pcos_clean %>% drop_na()
rmarkdown::paged_table(pcos_clean)

Deskripsi:
- PCOS : label pcos (yes/no)
- Age : umur pasien
- BMI : indeks massa tubuh
- Blood_group : golongan darah
- Pulse_rate : denyut nadi (byte/minute)
- Resp_rate : laju respirasi (breaths/minute)
- Hb : kadar hemoglobin (g/dL)
- Cycle_RI: keteraturan siklus menstruasi (reguler/irreguler)
- Cycle_length : lama siklus menstruasi (days/week)
- Marriage_length: lama pernikahan (years)
- Pregnant: status kehamilan (yes/no)
- No.of_abortions: jumlah kejadian keguguran
- Beta-HCG: kadar hormon Beta-HCG (mIU/mL)
- FSH/LH : rasio kadar hormon FSH/LH (mIU/mL)
- Waist : lebar lingkar pinggang (inch)
- Waist/Hip : rasio lebar pinggang/panggul
- TSH : kadar hormon TSH (mIU/L)
- AMH : kadar hormon AMH (ng/mL)
- Prolactin : kadar hormon prolactin (ng/mL)
- Vit.D3: kadar vitamin D3 dalam darah (ng/mL)
- Progesteron : kadar hormon progesteron (ng/mL)
- Random_blood_glucose: kadar gula darah acak (mg/dL)
- Weight_gain : kenaikan berat badan (yes/no)
- Hair_growth : hirsutism atau tumbuhnya rambut pada area tertentu seperti wajah (yes/no)
- Skin_darkening : penggelapan area kulit tertentu seperti ketiak, siku, lutut (yes/no)
- Hair_loss : alopecia atau kebotakan (yes/no)
- Pimples : timbulnya jerawat (yes/no)
- Fast_food : kebiasaan mengonsumsi makanan siap saji (yes/no)
- Regular_exercise : olahraga secara teratur (yes/no)
- Systolic_BP : tekanan darah sistolik (mmHg)
- Diastolic_BP : tekanan darah diastolik (mmHg)
- No.left_ventricle : jumlah ventrikel kiri
- No.right_ventricle : jumlah ventrikel kanan
- Avg.size_left_ventricle : ukuran rata-rata ventrikel kiri (mm)
- Avg.size_right_ventricle : ukuran rata-rata ventrikel kanan (mm)
- Diameter_endometrium : diameter of endometrium (mm)

Cek Proporsi Data

# cek proporsi kolom target
prop.table(table(pcos$`PCOS (Y/N)`))
#> 
#>         0         1 
#> 0.6728281 0.3271719

Proporsi kelas positif PCOS 67% dan bukan PCOS sebanyak 32%

Visualisasi EDA

hist(pcos_clean$Age)

💡 Insight:
Range umur wanita yang menjadi objek penelitian data berkisar antara 20-50 tahun, dimana range umur 25-35 tahun adalah yang menjadi dominan.

plot(pcos_clean$PCOS, pcos_clean$Age, horizontal=T)

summary(pcos_clean$Age)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   20.00   27.75   31.00   31.42   35.00   48.00

💡 Insight:
- Pasien PCOS pada data umumnya memiliki range usia 27-33 tahun.

hist(pcos_clean$BMI)

💡 Insight:
Range BMI objek penelitian yang digunakan pada data ini berkisar antara 12-40 yang berarti objek penelitian memiliki berat badan underweight, normal, overweight hingga obesitas. Namun objek penelitian yang mendominasi data ini memiliki BMI di range 20-30 yang berarti berat badan normal dan overweight.

pcos_yes <- pcos_clean[pcos_clean$PCOS=="yes",]
pcos_no <- pcos_clean[pcos_clean$PCOS=="no",]

x3 <- inspect_cat(pcos_yes) 
show_plot(x3)

💡 Insight:
Dari inspeksi simtom dan kondisi pasien PCOS pada data secara garis besar, diperoleh informasi bahwa:
- pasien PCOS cenderung memiliki sedentary lifestyle habits seperti, mengonsumsi fast food dan tidak olahraga secara teratur
- pasien PCOS memiliki simtom, seperti menstruasi yang tidak teratur, hair growth (pertumbuhan rambut secara berlebih terutama di area wajah), hair loss (kerontokan rambut bahkan mengalami alopecia atau kebotakan), acne (tumbuhnya jerawat secara berlebih dan sulit disembuhkan), skin_darkening (penggelapan area kulit tertentu seperti di lipatan siku, selangkangan) dan weight_gain (pertambahan berat badan hingga mengalami overweight bahkan obesitas)
- pasien PCOS didominasi oleh golongan darah O

hist(pcos_clean$Random_blood_glucose)

par(mfrow=c(1,2))
hist(pcos_yes$Random_blood_glucose)
hist(pcos_no$Random_blood_glucose)

💡 Insight:
- Pasien yang diobservasi pada data ini umumnya memiliki glukosa darah acak 80-120 mg/dL, pasien PCOS berada pada range 50-150 mg/dL, sementara pasien bukan PCOS 80-120 mg/dL. Range tersebut masih berada di kisaran normal. Dimana seseorang akan dikatakan diabetes jika glukosa darah acak nya > 200 mg/dL.

ggcorr(pcos_clean %>% 
         select_if(is.numeric), label = T, label_round = 3, label_size=2)

Terdapat korelasi yang kuat positif antara:
1. variabel Age dengan Cycle_length
2. Variabel FSH/LH dengan BMI

Mari kita lihat scatter plot antar variabel di atas

plot(pcos_clean$Age, pcos_clean$Cycle_length)
abline(lm(pcos_clean$Cycle_length ~ pcos_clean$Age), # garis linear `lm` 
       col = 'red')

💡 Insight:
Meskipun grafik tidak terlalu menunjukkan garis korelasi positif, namun nilai korelasi antara age dengan cycle_length 0.65 yang berarti seiring bertambahnya usia, lama siklus menstruasi juga bertambah.

plot(pcos_clean$BMI, pcos_clean$`FSH/LH`)
abline(lm(pcos_clean$`FSH/LH` ~ pcos_clean$BMI), # garis linear `lm` 
       col = 'red')

💡 Insight:
Meskipun grafik tidak terlalu menunjukkan garis korelasi positif, namun nilai korelasi antara BMI dengan FSH/LH 0.6 yang berarti semakin tinggi nilai BMI, maka rasio FSH/LH cenderung semakin tinggi.

data1 <- pcos_clean[,c(1,8)]
count1 <- table(data1)

# Convert the counts to a data frame
count_df1 <- data.frame(count1)
count_df1
#>   PCOS  Cycle_RI Freq
#> 1   no irregular   56
#> 2  yes irregular   94
#> 3   no   regular  307
#> 4  yes   regular   83
# Create a stacked bar plot
ggplot(count_df1, aes(x=Freq, y=PCOS, fill=Cycle_RI)) + 
  geom_bar(stat="identity") +
  labs(x="Count", y="PCOS", fill="Cycle_RI") +
  ggtitle("PCOS by regular/irregular of menses")

💡 Insight:
Jumlah pasien PCOS yang memiliki simtom menstruasi tidak teratur lebih banyak (53%) dibandingkan mereka yang memiliki siklus menstruasi teratur (47%). Selain itu, terdapat sekitar 15% pasien bukan PCOS yang mengalami ketidakteraturan siklus menstruasi. Meskipun tidak dapat dijadikan sebagai diagnosa tunggal dalam menentukan PCOS karena prevalensinya hampir sama, namun sebaiknya simtom ini tidak diabaikan dan segera melakukan pemeriksaan ke dokter gynecology untuk ditangani lebih lanjut.

plot(pcos_clean$`Cycle_RI`, pcos_clean$BMI, horizontal = T)

💡 Insight:
Wanita yang siklus menstruasinya tidak teratur cenderung memiliki BMI >25 yang berarti wanita tersebut mengalami overweight hingga obesitas. Sebaliknya, siklus menstruasi teratur cenderung dimiliki oleh wanita yang memiliki BMI <25.

plot(pcos_clean$PCOS, pcos_clean$`Waist/Hip`, horizontal=T)

💡 Insight:
Pasien PCOS cenderung memiliki rasio lingkar pinggang/panggul Waist/Hip yang lebih tinggi (>0.9) dibandingkan pasien bukan PCOS (<0.9). Rasio ini merupakan indikator central obesity atau penimbunan lemak pada perut. Sebuah studi menunjukkan bahwa pasien PCOS cenderung memiliki rasio waist/hip > 0.87. Beberapa studi lebih menggunakan lingkar pinggang Waist sebagai indikator central obesity daripada rasio Waist/Hip. Berikut adalah hasil plotnya.

plot(pcos_clean$PCOS, pcos_clean$Waist, horizontal=T)

💡 Insight:
Jika dibandingkan dengan rasio Waist/Hip, variabel Waist lebih menunjukkan perbedaan antara pasien PCOS dan bukan PCOS, dimana pasien PCOS cenderung memiliki lebar pinggang >35 inch, sementara pasien bukan PCOS memiliki lebar pinggang <35 inch.

plot(pcos_clean$PCOS, pcos_clean$BMI, horizontal=T)

💡 Insight:
Pasien PCOS cenderung memiliki BMI lebih tinggi yaitu >25 yang berarti pasien mengalami overweight dan obesitas. Meskipun terdapat juga beberapa pasien PCOS yang memiliki BMI <25 yang berarti memiliki berat badan normal ataupun underweight.

plot(pcos_clean$BMI, pcos_clean$Waist)
abline(lm(pcos_clean$Waist ~ pcos_clean$BMI), # garis linear `lm` 
       col = 'red')

💡 Insight:
Semakin tinggi BMI wanita, maka lebar lingkar pinggang nya juga akan semakin meningkat, Hal ini menandakan bahwa wanita tersebut cenderung mengalami central obesity.

plot(pcos_clean$PCOS, pcos_clean$Pulse_rate, horizontal=T)

summary(pcos_clean$Pulse_rate)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   13.00   72.00   72.00   73.25   74.00   82.00

💡 Insight:
Tidak terdapat perbedaan signifikan antara denyut nadi pasien PCOS dan bukan PCOS. Untuk menganalisis lebih lanjut, kita akan coba membandingkan hasilnya dengan plot laju respirasi pasien.

plot(pcos_clean$PCOS, pcos_clean$Resp_rate, horizontal=T)

summary(pcos_clean$Resp_rate)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   16.00   18.00   18.00   19.24   20.00   28.00

💡 Insight:
Pasien PCOS cenderung memiliki laju respirasi yang lebih tinggi dibandingkan pasien bukan PCOS, hal ini dapat dilihat dari nilai median keduanya, dimana pasien PCOS dominan memiliki laju respirasi dominan 20 breaths/min, sedangkan pasien bukan PCOS memiliki laju respirasi dominan 18 breaths/min.

plot(pcos_clean$PCOS, pcos_clean$Hb, horizontal=T)

summary(pcos_clean$Hb)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    8.50   10.50   11.00   11.16   11.72   14.80

💡 Insight:
Pasien PCOS cenderung memiliki nilai Hb yang lebih tinggi >11, sedangkan pasien bukan PCOS cenderung memiliki nilai Hb <11.

plot(pcos_clean$PCOS, pcos_clean$Cycle_length, horizontal=T)

summary(pcos_clean$Cycle_length)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.000   4.000   5.000   4.941   5.000  12.000

💡 Insight:
Pasien PCOS cenderung memiliki siklus menstruasi yang lebih sedikit < 5 hari, jika dibandingkan dengan pasien bukan PCOS.

plot(pcos_clean$PCOS, pcos_clean$TSH, horizontal=T)

summary(pcos_clean$TSH)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.040   1.480   2.250   2.957   3.570  65.000

💡 Insight:
Tidak terdapat perbedaan signifikan kadar TSH pada pasien PCOS dan bukan PCOS

plot(pcos_clean$PCOS, pcos_clean$AMH, horizontal=T)

summary(pcos_clean$AMH)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.100   2.010   3.700   5.624   6.925  66.000

💡 Insight:
Kadar hormon AMH pada pasien PCOS cenderung lebih tinggi (>5 ng/mL) dibandingkan pasien bukan PCOS (>3 ng/mL)

plot(pcos_clean$PCOS, pcos_clean$Prolactin, horizontal=T)

table(pcos_yes$Prolactin<=25)
#> 
#> FALSE  TRUE 
#>    77   100
summary(pcos_clean$Prolactin)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    0.40   14.52   21.92   24.36   29.91  128.24

💡 Insight:
Kadar hormon proklatin pada pasien PCOS sedikit lebih tinggi dibanding pasien bukan PCOS. Jika diteliti lebih lanjut, maka dari 541 keseluruhan pasien, 177 diantaranya merupakan pasien PCOS dimana sekitar 56.4% memiliki kadar hormon prolaktin normal (<=25 ng/mL) dan 43.5% diantaranya mengalami hiperprolaktinemia (>25 ng/mL).

plot(pcos_clean$PCOS, pcos_clean$Vit.D3, horizontal=T)

summary(pcos_clean$Vit.D3)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    0.00   20.77   25.90   49.94   34.42 6014.66

💡 Insight:
Tidak terdapat perbedaan signifikan kadar vitamin D3 dalam darah antara pasien PCOS dan bukan PCOS. Umumnya, pasien PCOS mengalami defisiensi vitamin D3.

plot(pcos_clean$PCOS, pcos_clean$Progesteron, horizontal=T)

summary(pcos_clean$Progesteron)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>  0.0470  0.2500  0.3200  0.6115  0.4525 85.0000

💡 Insight:
Tidak terdapat perbedaan signifikan kadar hormon progesteron pada pasien PCOS dan bukan PCOS.

plot(pcos_clean$PCOS, pcos_clean$No.left_ventricle, horizontal=T)

summary(pcos_clean$No.left_ventricle)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.000   3.000   5.000   6.133   9.000  22.000

💡 Insight:
Jumlah ventrikel kiri pada pasien PCOS lebih tinggi dibandingkan pasien bukan PCOS.

plot(pcos_clean$PCOS, pcos_clean$No.right_ventricle, horizontal=T)

summary(pcos_clean$No.right_ventricle)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.000   3.000   6.000   6.644  10.000  20.000

💡 Insight:
Jumlah ventrikel kanan pada pasien PCOS lebih tinggi dibandingkan pasien bukan PCOS.

plot(pcos_clean$PCOS, pcos_clean$Avg.size_left_ventricle, horizontal=T)

summary(pcos_clean$Avg.size_left_ventricle)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    0.00   13.00   15.00   15.01   18.00   24.00

💡 Insight:
Rata-rata ukuran ventrikel kiri pasien PCOS sedikit lebih tinggi (>16 mm) dibandingkan pasien bukan PCOS (>15 mm)

plot(pcos_clean$PCOS, pcos_clean$Avg.size_right_ventricle, horizontal=T)

summary(pcos_clean$Avg.size_right_ventricle)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>    0.00   13.00   16.00   15.45   18.00   24.00

💡 Insight:
Rata-rata ukuran ventrikel kanan pasien PCOS sedikit lebih tinggi (>16 mm) dibandingkan pasien bukan PCOS (>15 mm)

plot(pcos_clean$PCOS, pcos_clean$Diameter_endometrium, horizontal=T)

summary(pcos_clean$Diameter_endometrium)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   0.000   7.000   8.500   8.481   9.800  18.000

💡 Insight:
Diameter endometrium pasien PCOS sedikit lebih tinggi (>9 mm) dibandingkan pasien bukan PCOS (>8 mm)

Cross validation

RNGkind(sample.kind = "Rounding")
set.seed(123) # mengunci seed agar hasil split sama di tiap komputer

split <- sample(nrow(pcos_clean), nrow(pcos_clean)*0.80)
pcos_train <- pcos_clean[split, ] 
pcos_test <- pcos_clean[-split, ]