Deskripsi Data

Data pada laporan ini berisi informasi mengenai suhu tubuh dan saturasi oksigen yang dianalisis pengaruhnya terhadap detak jantung. Data yang digunakan merupakan data sekunder yang diperoleh dari platform Kaggle.

Namun, dari keseluruhan variabel yang tersedia dalam dataset tersebut, analisis ini hanya menggunakan beberapa variabel yang relevan dengan tujuan analisis, yaitu suhu tubuh, saturasi oksigen, dan detak jantung. Selain itu, jumlah data yang dianalisis ini dibatasi pada 115 pasien, sehingga tidak seluruh data yang terdapat dalam dataset digunakan dalam proses analisis.

Sumber Data: [Health Risk Prediction (Anonymized Real Data)] (https://www.kaggle.com/datasets/ludocielbeckett/health-risk-prediction-anonymized-real-data)

# Library
library(readxl)
library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(nortest)
library(car)
## Warning: package 'car' was built under R version 4.5.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.5.2
# Impor Data
data <- read_excel("D:/kulyeah/SEMESTER 5/Anareg perbaikan/detak jantung.xlsx")
head(data)
## # A tibble: 6 × 4
##   `ID Pasien` Detak_Jantung  Suhu Saturasi_Oksigen
##   <chr>               <dbl> <dbl>            <dbl>
## 1 P0741                 135  38.4               91
## 2 P0661                  92  37.3               96
## 3 P0412                  97  37.4               96
## 4 P0679                  98  37.8               91
## 5 P0627                  96  38.4               90
## 6 P0514                 107  39                 90
# Statistika Deskriptif
summary(data)
##   ID Pasien         Detak_Jantung         Suhu       Saturasi_Oksigen
##  Length:105         Min.   : 61.00   Min.   :36.20   Min.   :80.00   
##  Class :character   1st Qu.: 84.00   1st Qu.:37.20   1st Qu.:91.00   
##  Mode  :character   Median : 94.00   Median :37.70   Median :94.00   
##                     Mean   : 97.72   Mean   :37.89   Mean   :92.73   
##                     3rd Qu.:107.00   3rd Qu.:38.50   3rd Qu.:96.00   
##                     Max.   :141.00   Max.   :41.00   Max.   :99.00

Berdasarkan Statistika Deskriptif diperoleh bahwa:

Rata-rata Detak Jantung pada 115 pasien adalah 97.72 bpm

Rata-rata Suhu pada 115 pasien adalah 37.89 derajat Celcius

Rata-rata Saturasi Oksigen pada 115 pasien adalah 92.73 %

Detak jantung minimal dari 115 pasien adalah 61 bpm dan maksimalnya 141 bpm

Suhu minimal dari 115 pasien adalah 36.2 bpm dan maksimalnya 41 bpm

Saturasi Oksigen minimal dari 115 pasien adalah 80 bpm dan maksimalnya 99 bpm

Model Regresi

Bentuk umum persamaan regresi linier: \[ y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon \]

Estimasi Parameter

model = lm(Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
summary(model)
## 
## Call:
## lm(formula = Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.986  -8.400  -2.365   8.417  42.178 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -94.0093    81.3164  -1.156     0.25    
## Suhu               8.7580     1.5315   5.719 1.08e-07 ***
## Saturasi_Oksigen  -1.5112     0.3492  -4.328 3.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.06 on 102 degrees of freedom
## Multiple R-squared:  0.5444, Adjusted R-squared:  0.5354 
## F-statistic: 60.93 on 2 and 102 DF,  p-value: < 2.2e-16

Model Awal

Model Awal: \[ Detak Jantung = -94.0093 + 8.758Suhu + (-1.5112)Saturasi Oksigen \]

Pengujian Hipotesis

Uji Normalitas Residual

# Secara Visual
plot(model, 2)

# Secara Formal
error = model$residuals
ks <- ks.test(error, "pnorm", mean(error), sqrt(var(error)))
ks
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  error
## D = 0.086751, p-value = 0.4082
## alternative hypothesis: two-sided

Secara Visual:

Pada grafik Normal Q-Q Residual dapat dilihat bahwa plot-plot mengikuti garis lurus, sehingga dapat disimpulkan bahwa residual berdistribusi normal.

Secara Formal:

Hipotesis:

  • H0: data berdistribusi normal

  • H1: data tidak berdistribusi normal

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 gagal ditolak karena nilai p-value (0.4082) > alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa data residual pada model regresi berdistribusi normal, serta asumsi normalitas terpenuhi.

Uji Linearitas

# Secara Visual
plot(model, 1)

# Secara Formal
model = lm(Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
reset <- resettest(model)
reset
## 
##  RESET test
## 
## data:  model
## RESET = 1.7921, df1 = 2, df2 = 100, p-value = 0.1719

Secara Visual

Berdasarkan grafik Residuals vs Fitted, dapat dilihat bahwa sebaran data acak atau tidak membentuk pola tertentu maka dapat disimpulkan bahwa uji linieritas terpenuhi.

Secara Formal

Hipotesis:

  • H0: Terdapat hubungan linear antara variabel independen dengan variabel dependen

  • H1: Tidak terdapat hubungan linear antara variabel independen dengan variabel dependen

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 gagal ditolak karena nilai p-value (0.1719) > alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa asumsi linearitas terpenuhi atau dengan kata lain variabel independen linier terhadap variabel dependen.

Uji Homoskedastisitas

# Secara Visual
plot(model, 3)

#Secara Formal
glejser_test <- lm(abs(model$residuals) ~ Suhu + Saturasi_Oksigen, data = data)
glejser <- summary(glejser_test)
glejser
## 
## Call:
## lm(formula = abs(model$residuals) ~ Suhu + Saturasi_Oksigen, 
##     data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -12.424  -5.166  -1.318   2.517  31.480 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)
## (Intercept)      -17.1356    48.9099  -0.350    0.727
## Suhu               0.9881     0.9211   1.073    0.286
## Saturasi_Oksigen  -0.1091     0.2100  -0.519    0.605
## 
## Residual standard error: 7.852 on 102 degrees of freedom
## Multiple R-squared:  0.02988,    Adjusted R-squared:  0.01086 
## F-statistic: 1.571 on 2 and 102 DF,  p-value: 0.2129

Secara Visual: Berdasarkan grafik scale location, dapat dilihat bahwa residual menyebar secara acak dan tidak membentuk pola, sehingga dapat disimpulkan bahwa asumsi homoskedastisitas terpenuhi.

Secara Formal:

Hipotesis:

  • H0: Tidak terdapat heteroskedastisitas

  • H1: Terdapat heteroskedastisitas

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 gagal ditolak karena nilai p-value dari X1 (0.286) > alpha (0.05) dan nilai p-value dari X2 (0.6046) > alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa asumsi homoskedastisitas terpenuhi atau dengan kata lain tidak terdapat gejala heteroskedastisitas.

Uji Autokorelasi

auto <- dwtest(model)
auto
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 2.1264, p-value = 0.7426
## alternative hypothesis: true autocorrelation is greater than 0

Hipotesis:

  • H0: Tidak ada autokorelasi

  • H1: ada autokorelasi

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 gagal ditolak karena nilai p-value (0.7426) > alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa tidak ada autokorelasi antar variabel X.

Uji Non Multikolinearitas

multi <- round(vif(model), 4)
multi
##             Suhu Saturasi_Oksigen 
##           1.5171           1.5171

Berdasarkan VIF, diperoleh nilai VIF X1 (1.5171) < 10 dan nilai VIF X2 (1.5171) < 10 , sehingga asumsi non-multikolinieritas terpenuhi atau dengan kata lain tidak ada hubungan antara variabel X1 dan X2.

Pengujian Signifikansi

Uji F

summary(model)
## 
## Call:
## lm(formula = Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.986  -8.400  -2.365   8.417  42.178 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -94.0093    81.3164  -1.156     0.25    
## Suhu               8.7580     1.5315   5.719 1.08e-07 ***
## Saturasi_Oksigen  -1.5112     0.3492  -4.328 3.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.06 on 102 degrees of freedom
## Multiple R-squared:  0.5444, Adjusted R-squared:  0.5354 
## F-statistic: 60.93 on 2 and 102 DF,  p-value: < 2.2e-16

Hipotesis:

  • H0: Model tidak sesuai

  • H1: Model sesuai

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 ditolak karena nilai p-value (3.8827124^{-18}) < alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa model sesuai.

Uji t

summary(model)
## 
## Call:
## lm(formula = Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.986  -8.400  -2.365   8.417  42.178 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -94.0093    81.3164  -1.156     0.25    
## Suhu               8.7580     1.5315   5.719 1.08e-07 ***
## Saturasi_Oksigen  -1.5112     0.3492  -4.328 3.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.06 on 102 degrees of freedom
## Multiple R-squared:  0.5444, Adjusted R-squared:  0.5354 
## F-statistic: 60.93 on 2 and 102 DF,  p-value: < 2.2e-16

Hipotesis:

  • H0: Koefisien parameter tidak sesuai

  • H1: Koefisien parameter sesuai

Taraf Signifikansi:

alpha = 5%

Statistik Uji:

Nilai p-value pada output di atas.

Daerah Kritis:

Tolak H0 jika nilai p-value < alpha.

Keputusan dan Kesimpulan:

H0 ditolak karena nilai p-value X1 (1.0769935^{-7}) < alpha (0.05) dan nilai p-value X2 (3.5262151^{-5}) < alpha (0.05). Sehingga dengan taraf signifikansi alpha 5% dapat disimpulkan bahwa koefisien parameter X1 dan X2 sesuai atau dengan kata lain semua variabel X berpengaruh terhadap Y.

Model Akhir

Model Akhir: \[ Detak Jantung = -94.0093 + 8.758Suhu + (-1.5112)Saturasi Oksigen + epsilon \] Karena semua uji asumsi dan uji signifikansi terpenuhi, maka model akhirnya sama dengan model awal.

Interpretasi Model:

  • Nilai (-94.0093) berarti jika suhu dan saturasi oksigen bernilai 0, maka detak jantung diprediksi sebesar -94.0093 bpm.

  • Nilai (8.758) berarti setiap kenaikan suhu tubuh sebesar 1°C, dengan saturasi oksigen tetap, maka detak jantung diprediksi meningkat sebesar 8.758 bpm.

  • Nilai (-1.5112)berarti setiap kenaikan saturasi oksigen sebesar 1%, dengan suhu tetap, maka detak jantung diprediksi menurun sebesar 1.5112 bpm.

Sehingga dapat disimpulkan bahwa Suhu berpengaruh positif terhadap Detak Jantung (semakin tinggi suhu, detak jantung meningkat). Sedangkan Saturasi Oksigen berpengaruh negatif terhadap Detak Jantung (semakin tinggi saturasi oksigen, detak jantung cenderung menurun).

Plot Model Regresi

Scatter plot dari Suhu vs Detak Jantung dan garis regresinya

plot1 <- plot(data$Suhu, data$Detak_Jantung,
     main = "Scatterplot Suhu vs Detak Jantung",
     xlab = "Suhu (Celcius)", ylab = "Detak Jantung (bpm)",
     pch = 19, col = "lightblue")
abline(lm(Detak_Jantung ~ Suhu, data=data), col="red")

plot2 <- plot(data$Saturasi_Oksigen, data$Detak_Jantung,
     main = "Scatterplot Saturasi Oksigen vs Detak Jantung",
     xlab = "Saturasi Oksigen (%)", ylab = "Detak Jantung (bpm)",
     pch = 19, col = "purple")
abline(lm(Detak_Jantung ~ Saturasi_Oksigen, data=data), col="red")

Koefisien Determinasi

summary(model)
## 
## Call:
## lm(formula = Detak_Jantung ~ Suhu + Saturasi_Oksigen, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.986  -8.400  -2.365   8.417  42.178 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -94.0093    81.3164  -1.156     0.25    
## Suhu               8.7580     1.5315   5.719 1.08e-07 ***
## Saturasi_Oksigen  -1.5112     0.3492  -4.328 3.53e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.06 on 102 degrees of freedom
## Multiple R-squared:  0.5444, Adjusted R-squared:  0.5354 
## F-statistic: 60.93 on 2 and 102 DF,  p-value: < 2.2e-16

Berdasarkan output di atas, diperoleh nilai R-squared sebesar 0.5444 yang artinya sebesar 54.44% variabel Y dipengaruhi oleh variabel X1 dan X2, sedangkan sisanya sebesar 45.56% variabel Y dipengaruhi oleh faktor lain.