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)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## 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
## 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
Bentuk umum persamaan regresi linier: \[ y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon \]
##
## 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: \[ Detak Jantung = -94.0093 + 8.758Suhu + (-1.5112)Saturasi Oksigen \]
# 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.
# 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.
#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.
##
## 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.
## 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.
##
## 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.
##
## 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: \[ 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).
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")##
## 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.