Nama : Muthi’ah Iffa Karimah

NIM : G1401231091

Input Data :

library(readxl)
library (dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data_diabetes = read.csv("C:/Users/MUTHI'AH IFFA/Downloads/Semester 4/AED/diabetes_dataset.csv")
LemakDarah = data_diabetes %>% select(Triglycerides,Outcome)
LemakDarah_diabetes = subset(LemakDarah, Outcome!=0)
# Hitung frekuensi berdasarkan Outcome
frekuensi_lemak_darah <- table(LemakDarah$Outcome)

# Membuat Bar Chart
barplot(frekuensi_lemak_darah,
        col = c("red", "blue"),  
        main = "Bar Chart Kadar Lemak dalam Darah",
        xlab = "Status Diabetes",
        ylab = "Frekuensi",
        names.arg = c("Tidak Diabetes", "Diabetes"),
        border = "black") 

Histogram Kadar Lemak Darah Pada Penderita Diabetes

# Membuat histogram 
hist(LemakDarah_diabetes$Triglycerides,
     main = "Histogram Kadar Lemak Darah pada Penderita Diabetes",
     xlab = "BMI",
     ylab = "Frekuensi",
     col = "salmon",
     border = "black")

Boxplot Kadar Lemak Darah pada Penderita Diabetes

# Membuat Boxplot 
boxplot(LemakDarah_diabetes$Triglycerides,
        main = "Boxplot Kadar Lemak Darah pada Penderita Diabetes",
        xlab = "Skor BMI",
        horizontal = TRUE,
        col = "lightblue",
        pars = list(outcol = "red", outpch = 16)) # outcol = warna untuk titik outlier, outpch = bentuk outlier

deteksi pencilan

# Hitung Q1, Q2,Q3, dan IQR
Q1_LemakDarahdiabet = quantile(LemakDarah_diabetes$Triglycerides, 0.25)
Q2_LemakDarahdiabet = quantile(LemakDarah_diabetes$Triglycerides, 0.50)
Q3_LemakDarahdiabet = quantile(LemakDarah_diabetes$Triglycerides, 0.75)
IQR_LemakDarahdiabet <- Q3_LemakDarahdiabet - Q1_LemakDarahdiabet

# Batas bawah dan batas atas
PDB_LemakDarahdiabet = Q1_LemakDarahdiabet - 1.5 * IQR_LemakDarahdiabet
PDA_LemakDarahdiabet = Q3_LemakDarahdiabet + 1.5 * IQR_LemakDarahdiabet
PDA_LemakDarahdiabet
##   75% 
## 285.6
PDB_LemakDarahdiabet
##  25% 
## 15.2
# Menemukan outlier
outliers = LemakDarah_diabetes$Triglycerides[LemakDarah_diabetes$Triglycerides < PDB_LemakDarahdiabet| LemakDarah_diabetes$Triglycerides > PDA_LemakDarahdiabet]
cat("Outlier:", outliers, "\n")
## Outlier: 304.7 292.4 295.1 294.1 294.5 292.3 293.9 295.2 292.2 321.4 299.5 286.8 294.3
summary(LemakDarah_diabetes$Triglycerides)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    50.0   116.6   150.8   150.6   184.2   321.4
sd_BMI <- sd(LemakDarah_diabetes$Triglycerides)
cat("Standar Deviasi:", sd_BMI, "\n")
## Standar Deviasi: 49.18942

QQ-plot Kadar Lemak Darah pada Penderita Diabetes

qqnorm(LemakDarah_diabetes$Triglycerides,
       main = "QQ-plot Kadar Lemak Darah Penderita Diabetes")
qqline(LemakDarah_diabetes$Triglycerides, col = "green", lwd = 2)

distribusi data amatan kadar lemak darah pada penderita diabetes adalah cenderung mengikuti distribusi normal, karena titik-titik amatan mengikuti garis vertikal hijau

# Hitung frekuensi berdasarkan Outcome
frekuensi_lemak_darah <- table(LemakDarah$Outcome)

# Membuat Bar Chart
barplot(frekuensi_lemak_darah,
        col = c("red", "blue"),  
        main = "Bar Chart Kadar Lemak dalam Darah",
        xlab = "Status Diabetes",
        ylab = "Frekuensi",
        names.arg = c("Tidak Diabetes", "Diabetes"),
        border = "black")

Kadar kolesterol Jahat pada Penderita Diabetes

# Mengambil kolom
data_LDL = data_diabetes %>% select(LDL, Outcome)
LDL_diabet = subset(data_LDL, Outcome!=0)

Barchart Kolestrol Jahat Penderita dan Bukan Penderita Diabetes

hist(LDL_diabet$LDL,
     main = "Kadar Kolestrol Jahat pada Penderita Diabetes",
     xlab = "Lipoprotein (mg/dL)",
     ylab = "Frekuensi",
     col = "red",
     border = "black")

Boxplot Kadar Kolesterol Jahat pada Penderita Diabetes

# Membuat Boxplot 
boxplot(LDL_diabet$LDL,
        main = "Boxplot Kolestrol Jahat pada Penderita Diabetes",
        xlab = "Skor BMI",
        horizontal = TRUE,
        col = "salmon",
        pars = list(outcol = "purple", outpch = 16)) # outcol = warna untuk titik outlier, outpch = bentuk outlier

deteksi outlier

# Hitung Q1, Q2,Q3, dan IQR
Q1_KJdiabet = quantile(LDL_diabet$LDL, 0.25)
Q2_KJdiabet = quantile(LDL_diabet$LDL, 0.50)
Q3_KJdiabet = quantile(LDL_diabet$LDL, 0.75)
IQR_KJdiabet <- Q3_KJdiabet - Q1_KJdiabet

# Batas bawah dan batas atas
PDB_KJdiabet = Q1_KJdiabet - 1.5 * IQR_KJdiabet 
PDA_KJdiabet = Q3_KJdiabet + 1.5 * IQR_KJdiabet 
PDA_KJdiabet
##      75% 
## 182.0375
PDB_KJdiabet
##     25% 
## 19.7375
# Menemukan outlier
outliers = LDL_diabet$LDL[LDL_diabet$LDL < PDB_KJdiabet | LDL_diabet$LDL >PDA_KJdiabet]
cat("Outlier:", outliers, "\n")
## Outlier: 185.9 -1.8 2 198.8 -7.4 15.2 17.4 9.7 6.2 3.4 17 17.7 194.7 182.7 2 187.2 17.1 10.7 185.4 202.2

Ringkasan Statistik

summary(LDL_diabet$LDL)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    -7.4    80.6   100.8   100.9   121.2   202.2
sd_BMI <- sd(LDL_diabet$LDL)
cat("Standar Deviasi:", sd_BMI, "\n")
## Standar Deviasi: 29.79028

QQ-plot kadar Kolestrol Jahat pada Penderita Diabetes

qqnorm(LDL_diabet$LDL,
       main = "QQ-plot BMI Penderita Diabetes")
qqline(LDL_diabet$LDL, col = "red", lwd = 2)

data kolestrol jahat pada penderita diabetes mengikuti distribusi normal

Data Frame

library(dplyr)
usia_status = data_diabetes %>% select(Age,Outcome)
# Hapus kolom yang mengandung nilai tertentu (contoh: 0)
usia_diabetes = subset(usia_status, Outcome != 0)

Usia vs Diabetes

hist(usia_diabetes$Age, 
     main = "Histogram Usia Penderita Diabetes", 
     xlab = "Usia", 
     col = "skyblue", 
     border = "black", 
     ylim = c(0, 800),  # Rentang sumbu y
     axes = FALSE)      # Matikan sumbu bawaan

axis(1)  # Tambahkan sumbu x default
axis(2, at = seq(0, 800, by = 100))  # Tambahkan tick marks sumbu y setiap 100
box()  # Tambahkan bingkai di sekitar histogram

korelasi antara usia dan diabetes

cor(data_diabetes$Age, data_diabetes$Out)
## [1] 0.06845279

hasil menunjukkan nilai korelasi antara usia dan penyakit diabetes adalah 0.06845279, hal ini dapat dikatakan bahwa hubungan linier antara usia dan penyakit diabetes sangat lemah

qqnorm(usia_status$Age)
qqline(usia_status$Age, col = "orange", lwd = 2)

boxplot(Age ~ Outcome, data = usia_status, col = c("blue", "red"), xaxt = "n", main = "Usia Status Diabetes")
axis(1, at = 1:2, labels = c("Tidak Diabetes", "Diabetes"))

Keturunan Vs Diabetes

keturunan_status = data_diabetes %>% select(FamilyHistory,Outcome)
keturunan_diabetes = subset(keturunan_status, Outcome != 0)

Barchart jumlah Penderita Diabetes berdasarkan Riwayat Keluarga

# Menghitung frekuensi berdasarkan FamilyHistory
frekuensi_keturunan = table(keturunan_diabetes$FamilyHistory)
# Membuat bar chart
barplot(frekuensi_keturunan,
        col = c("orange", "blue"), # Sesuaikan warna sesuai kebutuhan
        main = "Bar Chart Penderita Diabetes dari Riwayat Keluarga",
        xlab = "Riwayat Keluarga", # Label sumbu x
        ylab = "Frekuensi",
        names.arg = c("Bukan Riwayat", "Riwayat"), # Nama pada sumbu x
        border = "black",
        ylim = c(0, 3500),
        yaxt = "n")
# Menambahkan sumbu y dengan lebih banyak angka
axis(2, at = seq(0, 3500, by = 1000), labels = seq(0, 3500, by = 1000))

BMI vs Diabetes

Eksplorasi data skor BMI penderita diabetes

BMI_status = data_diabetes %>% select(BMI,Outcome)
BMI_diabetes = subset(BMI_status, Outcome != 0)

Histogram BMI Penderita Diabetes

# Membuat histogram untuk kolom BMI
hist(BMI_diabetes$BMI,
     main = "Histogram BMI Penderita Diabetes",
     xlab = "BMI",
     ylab = "Frekuensi",
     col = "brown",
     border = "black")

cek kenormalan distribusi data dengan QQ-Plot

qqnorm(BMI_diabetes$BMI,
       main = "QQ-plot BMI Penderita Diabetes")
qqline(BMI_diabetes$BMI, col = "yellow", lwd = 2)

data cenderung mengikuti sebaran normal karena titik-titik amatan mengikuti garis kuning

boxplot BMI penderita diabetes

# Membuat Boxplot 
boxplot(BMI_diabetes$BMI,
        main = "Boxplot BMI Penderita Diabetes",
        xlab = "Skor BMI",
        horizontal = TRUE,
        pars = list(outcol = "brown", outpch = 16)) # outcol = warna untuk titik outlier, outpch = bentuk outlier

deteksi outlier

# Hitung Q1, Q2,Q3, dan IQR
Q1_BMIdiabet = quantile(BMI_diabetes$BMI, 0.25)
Q2_BMIdiabet = quantile(BMI_diabetes$BMI, 0.50)
Q3_BMIdiabet = quantile(BMI_diabetes$BMI, 0.75)
IQR_BMIdiababet <- Q3_BMIdiabet - Q1_BMIdiabet

# Batas bawah dan batas atas
PDB_BMIdiabet = Q1_BMIdiabet - 1.5 * IQR_BMIdiababet
PDA_BMIdiabet = Q3_BMIdiabet + 1.5 * IQR_BMIdiababet
PDA_BMIdiabet
##      75% 
## 44.40875
PDB_BMIdiabet
##      25% 
## 11.43875
# Menemukan outlier
outliers = BMI_diabetes$BMI[BMI_diabetes$BMI < PDB_BMIdiabet| BMI_diabetes$BMI > PDA_BMIdiabet]
cat("Outlier:", outliers, "\n")
## Outlier: 46.66 44.92 47.39 45.9 44.5 45.52 45.41 44.56 44.42 46.81 47.94 47.31 49.66 48.08 44.7

rata-rata skor BMI penderita diabetes adalah 27.93007, di mana skor ini sudah termasuk kategori overweight.

Ringkasan Statistik

summary(BMI_diabetes$BMI)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.00   23.80   27.89   27.93   32.05   49.66
sd_BMI <- sd(BMI_diabetes$BMI)
cat("Standar Deviasi:", sd_BMI, "\n")
## Standar Deviasi: 6.159695

BMI dan Hypertension

BMI_tensi = data_diabetes %>% select(BMI,Hypertension)
BMI_tensi2 = subset(BMI_tensi, Hypertension != 0)

Diabetes & Jenis Makanan

diabetes_jenismakanan = data_diabetes %>% select(Outcome,DietType)
diabetes_jenismakanan2 = diabetes_jenismakanan %>% filter(Outcome == 1)
frekuensi_diettype = table(diabetes_jenismakanan2$DietType)
barplot(frekuensi_diettype,
        col = c("red", "blue", "green"), # Tiga warna berbeda
        main = "Bar Chart Pola Makanan Penderita Diabetes",
        xlab = "Pola Makan",
        ylab = "Frekuensi",
        border = "black",
         names.arg = c("Tidak Seimbang", "Seimbang", "Vegetarian"),
        ylim = c(0, 2000)) # Skala pada sumbu Y

gula_darah = data_diabetes %>% select(Glucose,Outcome)
gula_diabetes =subset(gula_darah, Outcome != 0)

Histogram Gula Darah

hist(gula_diabetes$Glucose,
     main = "Histogram Kadar Gula Darah Penderita Diabetes",
     xlab = "Kadar Gula Darah (mg/dL)",
     ylab = "Frekuensi",
     col = "yellow",
     border = "black")

Boxplot Gula Darah

boxplot(gula_diabetes$Glucose,
        main = "Boxplot Kadar Gula Darah Penderita Diabetes",
        xlab = "Kadar Gula Darah (mg/dL)",
        horizontal = TRUE,
        col = "green",
        pars = list(outcol = "blue", outpch = 16)) # outcol = warna untuk titik outlier, outpch = bentuk outlier

Deteksi Pencilan

# Hitung Q1, Q2,Q3, dan IQR
Q1_guladiabet = quantile(gula_diabetes$Glucose, 0.25)
Q2_guladiabet = quantile(gula_diabetes$Glucose, 0.50)
Q3_guladiabet = quantile(gula_diabetes$Glucose, 0.75)
IQR_guladiabet <- Q3_guladiabet - Q1_guladiabet

# Batas bawah dan batas atas
PDB_guladiabet = Q1_guladiabet - 1.5 * IQR_guladiabet
PDA_guladiabet = Q3_guladiabet + 1.5 * IQR_guladiabet
PDA_guladiabet
##   75% 
## 182.8
PDB_guladiabet
##  25% 
## 39.6
# Menemukan outlier
outliers = gula_diabetes$Glucose[gula_diabetes$Glucose < PDB_guladiabet| gula_diabetes$Glucose > PDA_guladiabet]
cat("Outlier:", outliers, "\n")
## Outlier: 194.4 189.6 207.2 189.1

Ringkasan statistik

summary(gula_diabetes$Glucose)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    50.0    93.3   109.5   111.2   129.1   207.2
sd_BMI <- sd(gula_diabetes$Glucose)
cat("Standar Deviasi:", sd_BMI, "\n")
## Standar Deviasi: 25.1673

Tekanan darah penderita diabetes

tensi = data_diabetes %>% select(BloodPressure,Outcome)
tensi_diabetes =subset(tensi, Outcome != 0)

deteksi outlier

tensidiabet = sort(tensi_diabetes$BloodPressure) # Mengurutkan jumlah data
n_tensidiabet = length(tensi_diabetes$BloodPressure) # Hitung jumlah data
hist(tensi_diabetes$BloodPressure,
     main = "Histogram Tensi Darah Penderita Diabetes",
     xlab = "Tekanan Darah (mmHG)",
     ylab = "Frekuensi",
     col = "red",
     border = "black")

# Membuat Boxplot 
boxplot(tensi_diabetes$BloodPressure,
        main = "Boxplot Tensi Penderita Diabetes",
        xlab = "Tensi (mmHG)",
        horizontal = TRUE,
        pars = list(outcol = "red", outpch = 16)) # outcol = warna untuk titik outlier, outpch = bentuk outlier

# Hitung Q1, Q2,Q3, dan IQR
Q1_tensidiabet = quantile(tensi_diabetes$BloodPressure, 0.25)
Q2_tensidiabet = quantile(tensi_diabetes$BloodPressure, 0.50)
Q3_tensidiabet = quantile(tensi_diabetes$BloodPressure, 0.75)
IQR_tensidiabet <- Q3_tensidiabet - Q1_tensidiabet

# Batas bawah dan batas atas
PDB_tensidiabet = Q1_tensidiabet - 1.5 * IQR_tensidiabet
PDA_tensidiabet = Q3_tensidiabet + 1.5 * IQR_tensidiabet
PDA_tensidiabet
## 75% 
## 126
PDB_tensidiabet
## 25% 
##  46
# Menemukan outlier
outliers = tensi_diabetes$BloodPressure[tensi_diabetes$BloodPressure < PDB_tensidiabet| tensi_diabetes$BloodPressure > PDA_tensidiabet]
cat("Outlier:", outliers, "\n")
## Outlier: 128 132 137 135 130 129 130 131 133 129 127 128 127 129 127

Ringkasan Statistik

summary(tensi_diabetes$BloodPressure)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   60.00   76.00   86.00   86.35   96.00  137.00
sd_BMI <- sd(tensi_diabetes$BloodPressure)
cat("Standar Deviasi:", sd_BMI, "\n")
## Standar Deviasi: 14.72523

Korelasi Tensi dan Kadar Gula Darah untuk penderita diabetes

# Buat dataset menjadi matriks
data_matrix = data.frame(Kadar_Gula = gula_diabetes$Glucose,
                         Tensi_darah = tensi_diabetes$BloodPressure)
korelasi_gula_tensi = cor(data_matrix, use = "complete.obs")
korelasi_gula_tensi
##             Kadar_Gula Tensi_darah
## Kadar_Gula   1.0000000   0.5801538
## Tensi_darah  0.5801538   1.0000000

Corrplot

library(corrplot)
## corrplot 0.95 loaded
corrplot(korelasi_gula_tensi, method = "number")

hasil korelasi antara ā€œTensi_Darahā€ dan ā€œKadar_Gulaā€ pada Penderita Diabetes menghasilkan nilai korelasi sebesar 0.58. Artinya peningkatan kadar gula cenderung diikuti oleh peningkatan tekanan darah. Namun kekuatan korelasi ini tidak terlalu kuat sehingga mungkin ada faktor lain yang juga memengaruhi hubungan ini.

Scatterplot

# Membuat scatterplot antara Kadar Gula dan Tekanan Darah
plot(gula_diabetes$Glucose, tensi_diabetes$BloodPressure,
     main = "Gula Darah dan Tekanan Darah",
     xlab = "Gula Darah",
     ylab = "Tekanan Darah",
     col = "blue",  # Warna titik
     pch = 16)      # Jenis titik penuh

Korelasi Gula dan Kolestrol Jahat

# Buat dataset menjadi matriks
data_matrix = data.frame(Kadar_Gula = gula_diabetes$Glucose,
                         Kolestrol_Jahat = LDL_diabet$LDL)
korelasi_gula_kolestrol = cor(data_matrix, use = "complete.obs")
korelasi_gula_kolestrol
##                  Kadar_Gula Kolestrol_Jahat
## Kadar_Gula      1.000000000     0.007989422
## Kolestrol_Jahat 0.007989422     1.000000000

Corrplot

library(corrplot)
corrplot(korelasi_gula_kolestrol, method = "number")

hasil korelasi antara ā€œKoresorl_Jahatā€ dan ā€œKadar_Gulaā€ pada Penderita Diabetes menghasilkan nilai korelasi sebesar 0.079 Artinya hubungan keduanya cenderung lemah bahkan mungkin tidak ada hubungan linier yang signifikan.

Scatterplot

# Membuat scatterplot antara Kolestrol Jahat dan Gula Darah
plot(gula_diabetes$Glucose, LDL_diabet$LDL,
     main = "Gula Darah dan Tekanan Darah pada Penderita Diabetes",
     xlab = "Gula Darah",
     ylab = "Kolestrol Jahat",
     col = "green",  # Warna titik
     pch = 16)      # Jenis titik penuh

Korelasi Korestrol dan Lemak Darah pada Penderita Diabetes

# Buat dataset menjadi matriks
data_matrix = data.frame(Kadar_LemakDarah = LemakDarah_diabetes$Triglycerides,
                         Kolestrol_Jahat = LDL_diabet$LDL)
korelasi_lemak_kolestrol = cor(data_matrix, use = "complete.obs")
korelasi_lemak_kolestrol
##                  Kadar_LemakDarah Kolestrol_Jahat
## Kadar_LemakDarah       1.00000000      0.03887577
## Kolestrol_Jahat        0.03887577      1.00000000

Corrplot

library(corrplot)
corrplot(korelasi_lemak_kolestrol, method = "number")

hasil korelasi antara ā€œKorestrol_Jahatā€ dan ā€œKadar_LemakDarahā€ pada Penderita Diabetes menghasilkan nilai korelasi sebesar 0.038 Artinya hubungan keduanya cenderung lemah bahkan mungkin tidak ada hubungan linier yang signifikan.

# Membuat scatterplot antara Kadar Lemak Darah dan Kolestrol Jahat
plot(LemakDarah_diabetes$Triglycerides, LDL_diabet$LDL,
     main = "Lemak Darah dan Kolestrol Jahat Darah pada Penderita Diabetes",
     xlab = "Lemak Darah",
     ylab = "Kolestrol Jahat",
     col = "red",  # Warna titik
     pch = 16)      # Jenis titik penuh

Korelasi Lemak Darah dan Kadar Gula pada Penderita Diabet

# Buat dataset menjadi matriks
data_matrix = data.frame(Kadar_LemakDarah = LemakDarah_diabetes$Triglycerides,
                         Kadar_Gula = gula_diabetes$Glucose)
korelasi_gula_lemak = cor(data_matrix, use = "complete.obs")
korelasi_gula_lemak
##                  Kadar_LemakDarah   Kadar_Gula
## Kadar_LemakDarah      1.000000000 -0.001442213
## Kadar_Gula           -0.001442213  1.000000000

Corrplot

library(corrplot)
corrplot(korelasi_gula_lemak, method = "number")

Scatterplot

# Membuat scatterplot antara Kadar Lemak Darah dan Gula Darah
plot(LemakDarah_diabetes$Triglycerides, gula_diabetes$Glucose,
     main = "Lemak Darah dan Gula Darah pada Penderita Diabetes",
     xlab = "Lemak Darah",
     ylab = "Kolestrol Jahat",
     col = "brown",  # Warna titik
     pch = 16)      # Jenis titik penuh

Korelasi Kolestrol Jahat dan Tensi Darah pada Penderita Diabet

data_matrix = data.frame(Tensi_darah = tensi_diabetes$BloodPressure,
                         Kolestrol_Jahat = LDL_diabet$LDL)
korelasi_tensi_kolestrol = cor(data_matrix, use = "complete.obs")
korelasi_tensi_kolestrol
##                  Tensi_darah Kolestrol_Jahat
## Tensi_darah      1.000000000    -0.009090662
## Kolestrol_Jahat -0.009090662     1.000000000

Corrplot

library(corrplot)
corrplot(korelasi_tensi_kolestrol, method = "number")

Scatterplot

# Membuat scatterplot antara Kadar Lemak Darah dan Kolestrol Jahat
plot(LemakDarah_diabetes$Triglycerides, LDL_diabet$LDL,
     main = "Lemak Darah dan Kolestrol Jahat pada Penderita Diabetes",
     xlab = "Lemak Darah",
     ylab = "Kolestrol Jahat",
     col = "salmon",  # Warna titik
     pch = 16)      # Jenis titik penuh