Data yang digunakan berasal dari website kaggle.com mengenai prediksi penyakit jantung berdasarkan berbagai faktor kesehatan dan gaya hidup. Dataset ini menginformasikan sejumlah pasien dan variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung.
Sumber Data : https://www.kaggle.com/datasets/johnsmith88/heart-disease-dataset
Variabel Independen yang digunakan untuk uji one way MANOVA berupa: trestbps : Tekanan darah saat istirahat #chol : Kadar kolestrol serum thalach : Detak jantung maksimal #oldpeak : Depresi ST yang diukur dari olahraga relatif terhadap istirahat.
Variabel Dependen yang digunakan untuk uji one way MANOVA target /Status penyakit jantung, 0 untuk tidak menderita penyakit jantung, 1 untuk menderita penyakit jantung.
data <- read.csv("C:\\Users\\Asus\\Downloads\\heart.csv")
data1 <- data[c(4, 5, 8, 10, 14)]
head(data1)
## trestbps chol thalach oldpeak target
## 1 125 212 168 1.0 0
## 2 140 203 155 3.1 0
## 3 145 174 125 2.6 0
## 4 148 203 161 0.0 0
## 5 138 294 106 1.9 0
## 6 100 248 122 1.0 1
H0 : Data berdistribusi normal H1 : Data tidak berdistribusi normal
library(MVN)
## Warning: package 'MVN' was built under R version 4.3.3
data_1 <- data1[1:4]
test = mvn(data_1, mvnTest = "mardia", univariateTest = "SW", multivariatePlot = "qq")
test
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 709.033026295699 2.71353170164657e-137 NO
## 2 Mardia Kurtosis 15.5793267063452 0 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk trestbps 0.9633 <0.001 NO
## 2 Shapiro-Wilk chol 0.9502 <0.001 NO
## 3 Shapiro-Wilk thalach 0.9774 <0.001 NO
## 4 Shapiro-Wilk oldpeak 0.8503 <0.001 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew
## trestbps 1025 131.611707 17.516718 130.0 94 200.0 120 140.0 0.7376045
## chol 1025 246.000000 51.592510 240.0 126 564.0 211 275.0 1.0709312
## thalach 1025 149.114146 23.005724 152.0 71 202.0 132 166.0 -0.5122744
## oldpeak 1025 1.071512 1.175053 0.8 0 6.2 0 1.8 1.2073576
## Kurtosis
## trestbps 0.97278104
## chol 3.95788884
## thalach -0.09990477
## oldpeak 1.29382915
Dikarenakan secara multivariate p-value mardia kurtosis ataupun skewness maupun secara univariate p-value kurang dari alpha = 0.05, maka H0 ditolak atau data tidak berdistribusi normal, maka dengan tujuan pembelajaran dilakukan pemotongan data, di mana data asli sebanyak 1026, dipotong menjadi 30 dengan baris data yang diambil adalah baris data ke 1 sampai 30.
data1p <- data[1:30, c(4, 5, 8, 10, 14)]
library(MVN)
data_1p <- data1p[1:4]
test = mvn(data_1p, mvnTest = "mardia", univariateTest = "SW", multivariatePlot = "qq")
test
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 19.0561066652235 0.518181756391055 YES
## 2 Mardia Kurtosis -0.768164946612521 0.44238919590052 YES
## 3 MVN <NA> <NA> YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk trestbps 0.9595 0.3013 YES
## 2 Shapiro-Wilk chol 0.9534 0.2080 YES
## 3 Shapiro-Wilk thalach 0.9759 0.7092 YES
## 4 Shapiro-Wilk oldpeak 0.9005 0.0086 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew
## trestbps 30 130.3333 16.865254 130.0 100 180.0 120.000 140.00 0.6013929
## chol 30 247.8667 50.796914 246.0 149 341.0 209.250 292.75 0.1423424
## thalach 30 146.9667 22.938423 145.5 106 192.0 127.750 161.75 0.1039004
## oldpeak 30 1.5500 1.331774 1.0 0 4.4 0.625 2.90 0.5806793
## Kurtosis
## trestbps 0.7279159
## chol -1.1422083
## thalach -0.7823128
## oldpeak -0.9781337
Dikarenakan keseluruhan nilai p-value > α = 0,05, maka H0 diterima.
Dengan taraf signifikansi 5% dapat disimpulkan bahwa data pengelompokkan variabel yang mempengaruhu risiko penyakit jantung berdistribusi normal.
Dikarenakan asumsi normalitas sudah terpenuhi, maka dilanjut untuk menentukan asumsi selanjutnya yaitu Uji Homogenitas Variabel Multivariate untuk One Way MANOVA.
H0 : s1 = s2 = s3 = s4 , matriks kovarians grup adalah sama H1 : Minimal ada satu matriks kovarians grup yang berbeda α = 0,05
library(biotools)
## Warning: package 'biotools' was built under R version 4.3.3
## Loading required package: MASS
## ---
## biotools version 4.2
boxM(data = data_1p, grouping = data1p$target)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: data_1p
## Chi-Sq (approx.) = 9.7862, df = 10, p-value = 0.4594
Dikarenakan nilai p-value = 0,4594 > dari α = 0,05, maka H0 diterima
Dengan taraf signifikansi 5% dapat disimpulkan bahwa data pengelompokkan variabel yang mempengaruhu risiko penyakit jantung memiliki matriks kovarians grup yang sama.
Asumsi independensi terpenuhi jika pengamatan didapatkan secara random. Untuk kasus diatas, pengukuran variabel-variabel yang mempengaruhi risiko penyakit jantung dilakukan secara random.
H0 : μ1 = μ2 = 0 (Target atau status penyakit jantung tidak berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H1 : μi ≠ 0. i = 1,2 (Target atau status penyakit jantung berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung)
owm = manova(cbind(data1p$trestbps, data1p$chol, data1p$thalach, data1p$oldpeak)~data1p$target)
summary(owm)
## Df Pillai approx F num Df den Df Pr(>F)
## data1p$target 1 0.43929 4.8965 4 25 0.004694 **
## Residuals 28
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Karena nilai p-value = 0.004694 < α = 0.05, maka H0 ditolak
Dengan taraf signifikansi 5% dapat disimpulkan bahwa setidaknya terdapat satu variabel terkait yang digunakan untuk menilai risiko penyakit jantung berpengaruh terhadap target atau status penyakit jantung.
Dikarenakan H0 signifikan, maka dilakukan Uji Lanjut
H0 : Target atau status penyakit jantung tidak berpengaruh secara signifikan terhadap variabel-variabel penilai risiko penyakit jantung. H1 : Target atau status penyakit jantung berpengaruh secara signifikan terhadap variabel-variabel penilai risiko penyakit jantung.
summary.aov(owm)
## Response 1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data1p$target 1 2033.5 2033.47 9.161 0.005258 **
## Residuals 28 6215.2 221.97
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data1p$target 1 10080 10080.0 4.359 0.04603 *
## Residuals 28 64749 2312.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data1p$target 1 3141.7 3141.69 7.2597 0.01178 *
## Residuals 28 12117.3 432.76
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data1p$target 1 9.568 9.5681 6.399 0.01733 *
## Residuals 28 41.867 1.4952
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dikarenakan p-value trestbps : 0.005258 < α = 0.05, maka tolak H0 chol : 0.04603 < α = 0.05, maka tolak H0 thalach : 0.01178 < α =0.05, maka tolak H0 oldpeak : 0.01733 < α = 0.05, maka tolak H0
Didapat kesimpulan bahwa dengan taraf signifikansi 5%: ’ - Target atau status penyakit jantung secara signifikan mempengaruhi tekanan darah saat istirahat - Target atau status penyakit jantung secara signifikan mempengaruhi kadar kolestrol serum - Target atau status penyakit jantung secara signifikan mempengaruhi detak jantung maksimal - Target atau status penyakit jantung secara signifikan mempengaruhi depresi ST yang diukur dari olahraga relatif terhadap istirahat.
Data yang digunakan adalah sama dengan data yang digunakan pada uji One Way MANOVA, hanya saja ditambahkan variabel Sex atau Jenis Kelamin, dengan notasi 0 yang merupakan perempuan dan 1 merupakan laki-laki.
Sumber Data : https://www.kaggle.com/datasets/johnsmith88/heart-disease-dataset
data2 <- data[c(2, 4, 5, 8, 10, 14)]
head(data2)
## sex trestbps chol thalach oldpeak target
## 1 1 125 212 168 1.0 0
## 2 1 140 203 155 3.1 0
## 3 1 145 174 125 2.6 0
## 4 1 148 203 161 0.0 0
## 5 0 138 294 106 1.9 0
## 6 0 100 248 122 1.0 1
H0 : Data berdistribusi normal multivariat H1 : Data tidak berdistribusi normal multivariat
data_2 <- data2[2:5]
test = mvn(data_2, mvnTest = "mardia", univariateTest = "SW", multivariatePlot = "qq")
test
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 709.033026295699 2.71353170164657e-137 NO
## 2 Mardia Kurtosis 15.5793267063452 0 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk trestbps 0.9633 <0.001 NO
## 2 Shapiro-Wilk chol 0.9502 <0.001 NO
## 3 Shapiro-Wilk thalach 0.9774 <0.001 NO
## 4 Shapiro-Wilk oldpeak 0.8503 <0.001 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew
## trestbps 1025 131.611707 17.516718 130.0 94 200.0 120 140.0 0.7376045
## chol 1025 246.000000 51.592510 240.0 126 564.0 211 275.0 1.0709312
## thalach 1025 149.114146 23.005724 152.0 71 202.0 132 166.0 -0.5122744
## oldpeak 1025 1.071512 1.175053 0.8 0 6.2 0 1.8 1.2073576
## Kurtosis
## trestbps 0.97278104
## chol 3.95788884
## thalach -0.09990477
## oldpeak 1.29382915
Dikarenakan secara multivariate p-value mardia kurtosis ataupun skewness maupun secara univariate p-value kurang dari alpha = 0.05, maka H0 ditolak atau data tidak berdistribusi normal, maka dengan tujuan pembelajaran dilakukan pemotongan data, di mana data asli sebanyak 1026, dipotong menjadi 30 dengan baris data yang diambil adalah baris data ke 1 sampai 30.
data2p <- data[1:30, c(2, 4, 5, 8, 10, 14)]
library(MVN)
data_2p <- data2p[2:5]
test = mvn(data_2p, mvnTest = "mardia", univariateTest = "SW", multivariatePlot = "qq")
test
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 19.0561066652235 0.518181756391055 YES
## 2 Mardia Kurtosis -0.768164946612521 0.44238919590052 YES
## 3 MVN <NA> <NA> YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk trestbps 0.9595 0.3013 YES
## 2 Shapiro-Wilk chol 0.9534 0.2080 YES
## 3 Shapiro-Wilk thalach 0.9759 0.7092 YES
## 4 Shapiro-Wilk oldpeak 0.9005 0.0086 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew
## trestbps 30 130.3333 16.865254 130.0 100 180.0 120.000 140.00 0.6013929
## chol 30 247.8667 50.796914 246.0 149 341.0 209.250 292.75 0.1423424
## thalach 30 146.9667 22.938423 145.5 106 192.0 127.750 161.75 0.1039004
## oldpeak 30 1.5500 1.331774 1.0 0 4.4 0.625 2.90 0.5806793
## Kurtosis
## trestbps 0.7279159
## chol -1.1422083
## thalach -0.7823128
## oldpeak -0.9781337
Dikarenakan nilai p-value > α = 0,05, maka H0 diterima.
Dengan taraf signifikansi 5% dapat disimpulkan bahwa data pengelompokkan variabel yang mempengaruhu risiko penyakit jantung berdistribusi normal.
Dikarenakan asumsi normalitas sudah terpenuhi, maka dilanjut untuk menentukan asumsi selanjutnya yaitu Uji Homogenitas Variabel Multivariate untuk Two Way MANOVA.
Karena ada 2 kelompok yaitu sex atau jenis kelamin (perempuan = 0 dan laki-laki = 1) dan target atau status penyakit jantung (0 = tidak menderita dan 1 = menderita) maka dilakukan uji homogenitas sebanyak 2 kali.
H0 : s1 = s2 = s3 = s4 , matriks kovarians grup adalah sama H1 : Minimal ada satu matriks kovarians grup (sk) yang berbeda α = 0,05
# Sex
boxM(data = data_2p, grouping = data2p$sex)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: data_2p
## Chi-Sq (approx.) = 14.24, df = 10, p-value = 0.1623
# Target
boxM(data = data_2p, grouping = data2p$target)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: data_2p
## Chi-Sq (approx.) = 9.7862, df = 10, p-value = 0.4594
Dikarenakan nilai p-value : Sex = 0.1623 > dari α = 0.05, maka H0 diterima Target = 0.4594 > dari α = 0.05, maka H0 diterima
Dengan taraf signifikansi 5% dapat disimpulkan bahwa data mengenai varIabel terkait yang mempengaruhi risiko penyakit jantung dengan pengelompokkan berdasarkan sex maupun target memiliki matriks kovarians yang sama.
Asumsi independensi terpenuhi jika pengamatan didapatkan secara random. Untuk kasus diatas, pengukuran variabel-variabel yang mempengaruhi risiko penyakit jantung dilakukan secara random.
H0’ : a1 = a2 = 0 (Jenis kelamin tidak berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H1’ : Setidaknya ada satu a1 yang tidak sama dengan 0 (Jenis kelamin tidak berpengaruh terhadap variabel-variabel berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H0’’ : b1 = b2 = 0 (Status penyakit jantung tidak berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H1’’ : Setidaknya ada satu b1 yang tidak sama dengan 0 (Status penyakit jantung tidak berpengaruh terhadap variabel-variabel berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H0’’’ : ab1 = ab2 = 0 (Interaksi antara jenis kelamin dan status penyakit jantung tidak berpengaruh terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung) H1’’’ : Setidaknya ada satu ab1 yang tidak sama dengan 0 (Interaksi antara jenis kelamin dan status penyakit jantung tidak berpengaruh terhadap terhadap variabel-variabel terkait yang digunakan untuk menilai risiko penyakit jantung)
# STATISTIK UJI TWO WAY MANOVA
manova <- manova(cbind(data2p$trestbps, data2p$chol, data2p$thalach, data2p$oldpeak) ~ data2p$sex * data2p$target, data = data)
summary(manova)
## Df Pillai approx F num Df den Df Pr(>F)
## data2p$sex 1 0.21750 1.5982 4 23 0.208595
## data2p$target 1 0.53022 6.4898 4 23 0.001196 **
## data2p$sex:data2p$target 1 0.17716 1.2380 4 23 0.322566
## Residuals 26
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dikarenakan nilai p-value : Sex : 0.208595 > dari α = 0.05, maka H0 diterima Target : 0.001196 < dari α = 0.05, maka H0 ditolak Sex*Target : 0.322566 > dari α = 0.05, maka H0 diterima
Didapat kesimpulan dengan taraf signifikansi 5%:
Dikarenakan hanya variabel Status penyakit jantung yang signifikan, dengan tujuan pembelajaran, maka tetap kita lakukan Uji Lanjut.
H0 : Target atau status penyakit jantung tidak berpengaruh secara signifikan terhadap variabel-variabel penilai risiko penyakit jantung. H1 : Target atau status penyakit jantung berpengaruh secara signifikan terhadap variabel-variabel penilai risiko penyakit jantung.
summary.aov(manova)
## Response 1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data2p$sex 1 81.5 81.49 0.3812 0.542343
## data2p$target 1 2131.9 2131.89 9.9724 0.003998 **
## data2p$sex:data2p$target 1 477.0 477.04 2.2314 0.147265
## Residuals 26 5558.3 213.78
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data2p$sex 1 3910 3910.1 2.3251 0.139371
## data2p$target 1 21330 21329.8 12.6838 0.001451 **
## data2p$sex:data2p$target 1 5866 5866.5 3.4885 0.073107 .
## Residuals 26 43723 1681.7
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data2p$sex 1 61.7 61.7 0.1374 0.713856
## data2p$target 1 3499.0 3499.0 7.7913 0.009707 **
## data2p$sex:data2p$target 1 22.0 22.0 0.0490 0.826524
## Residuals 26 11676.3 449.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response 4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## data2p$sex 1 4.051 4.0513 2.5439 0.12280
## data2p$target 1 5.943 5.9429 3.7317 0.06436 .
## data2p$sex:data2p$target 1 0.034 0.0344 0.0216 0.88436
## Residuals 26 41.406 1.5926
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Terlihat Jenis Kelamin dan Interaksi antara jenis kelamin dan status penyakit jantung tidak mempengaruhi variabel-variabel terkait yang mempengaruhi risiko penyakit jantung secara signifikan. Namun untuk Status penyakit jantung mempengaruhi keseluruhan variabel-variabel terkait yang mempengaruhi risiko penyakit jantung secara signifikan.