Menurut Organisasi Kesehatan Dunia (WHO) stroke adalah penyebab kematian nomor dua secara global, bertanggung jawab atas sekitar 11% dari total kematian.
Kumpulan data ini digunakan untuk memprediksi kemungkinan seorang pasien terkena stroke berdasarkan parameter input seperti jenis kelamin, usia, berbagai penyakit, dan status merokok. Setiap baris dalam data memberikan informasi yang relevan tentang pasien.
Berikut adalah daftar isi yang akan coba saya jalankan sesuai rules dari tutor antaralian sebagai berikut :
IMPORTING LIBRARIES
LOADING DATA
DATA CLEANINGS
DATA PREPROCESSING
MODEL BUILDING
CONCLUSION
END
Package
yang digunakan adalah sebagai berikut :
'data.frame': 5110 obs. of 12 variables:
$ id : int 9046 51676 31112 60182 1665 56669 53882 10434 27419 60491 ...
$ gender : chr "Male" "Female" "Male" "Female" ...
$ age : num 67 61 80 49 79 81 74 69 59 78 ...
$ hypertension : int 0 0 0 0 1 0 1 0 0 0 ...
$ heart_disease : int 1 0 1 0 0 0 1 0 0 0 ...
$ ever_married : chr "Yes" "Yes" "Yes" "Yes" ...
$ work_type : chr "Private" "Self-employed" "Private" "Private" ...
$ Residence_type : chr "Urban" "Rural" "Rural" "Urban" ...
$ avg_glucose_level: num 229 202 106 171 174 ...
$ bmi : chr "36.6" "N/A" "32.5" "34.4" ...
$ smoking_status : chr "formerly smoked" "never smoked" "never smoked" "smokes" ...
$ stroke : int 1 1 1 1 1 1 1 1 1 1 ...
id
: unique identifiergender
: “Male”, “Female” or “Other”age
: age of the patienthypertension
: 0 if the patient doesn’t have
hypertension, 1 if the patient has hypertensionheart_disease
: 0 if the patient doesn’t have any heart
diseases, 1 if the patient has a heart diseaseever_married
: “No” or “Yes”work_type
: “children”, “Govt_jov”, “Never_worked”,
“Private” or “Self-employed”Residence_type
: “Rural” or “Urban”avg_glucose_level
: average glucose level in bloodbmi
: body mass indexsmoking_status
: “formerly smoked”, “never smoked”,
“smokes” or “Unknown”*stroke
: 1 if the patient had a stroke or 0 if notDalam fase ini id
tidak di masukan karena tidak akan ada
pengaruhnya dalam model
Tahap ini adalah tahap pengecekan data, apakah sudah bebas dari missing value, data duplicate dan pengecekan apakah data sudah siap di eksekusi.
'data.frame': 5110 obs. of 12 variables:
$ id : int 9046 51676 31112 60182 1665 56669 53882 10434 27419 60491 ...
$ gender : chr "Male" "Female" "Male" "Female" ...
$ age : num 67 61 80 49 79 81 74 69 59 78 ...
$ hypertension : int 0 0 0 0 1 0 1 0 0 0 ...
$ heart_disease : int 1 0 1 0 0 0 1 0 0 0 ...
$ ever_married : chr "Yes" "Yes" "Yes" "Yes" ...
$ work_type : chr "Private" "Self-employed" "Private" "Private" ...
$ Residence_type : chr "Urban" "Rural" "Rural" "Urban" ...
$ avg_glucose_level: num 229 202 106 171 174 ...
$ bmi : chr "36.6" "N/A" "32.5" "34.4" ...
$ smoking_status : chr "formerly smoked" "never smoked" "never smoked" "smokes" ...
$ stroke : int 1 1 1 1 1 1 1 1 1 1 ...
Dari data di atas terlihat bahwa pada data $BMI
terdapat
missing value, sehingga akan di lakukan cleaning terlebih dahulu dengan
mengisi nilai N/A
menjadi nilai dari rata-rata data
tersebut.
BMI
DATAsebenarnya ada berapa nilai N/A
pada BMI
maari kita cek :
[1] 201
untuk mengedit semua data yang bernilai NA dengan cara sebagai berikut :
[1] 28.89324
[1] 36.60000 28.89324 32.50000 34.40000 24.00000 29.00000 27.40000 22.80000 28.89324 24.20000
[11] 29.70000 36.80000 27.30000 28.89324 28.20000 30.90000 37.50000 25.80000 37.80000 28.89324
Untuk ini tidak perlu di lakukan, karena data akan di jadikan dummy
untuk di lakukan SCALE
, dapat dilihat pada Sub-bab DATA
PROCESING.
Tahap ini adalah memulai proses persiapan data
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
Eror di atas karenakan data clean_stroke_data
harus di
ubah menjdi data numerik, sehingga dapat di lakukan dengan sintax
berikut
genderFemale genderMale genderOther age hypertension heart_disease ever_marriedYes
1 0 1 0 67 0 1 1
2 1 0 0 61 0 0 1
3 0 1 0 80 0 1 1
4 1 0 0 49 0 0 1
5 1 0 0 79 1 0 1
work_typeGovt_job work_typeNever_worked work_typePrivate work_typeSelf-employed
1 0 0 1 0
2 0 0 0 1
3 0 0 1 0
4 0 0 1 0
5 0 0 0 1
Residence_typeUrban avg_glucose_level bmi smoking_statusnever smoked
1 1 228.69 36.60000 0
2 0 202.21 28.89324 1
3 0 105.92 32.50000 1
4 1 171.23 34.40000 0
5 0 174.12 24.00000 1
smoking_statussmokes smoking_statusUnknown stroke
1 0 0 1
2 0 0 1
3 0 0 1
4 1 0 1
5 0 0 1
Scaling data sudah selesai. Hal ini penting karena jika tidak, suatu
peubah mungkin mempunyai dampak besar pada peubah hasil prediksi hanya
karena skalanya. Terkadang peubah yang belum dilakukan proses
scaling
cenderung menghasilkan hasil yang tidak memiliki
makna.
neuralnet
Selain terdapat di dalam paket keras
dan
tensorflow
, komunitas R juga mengembangkan model jaringan
syaraf tiruan (ANN) pada paket neuralnet
. Jika ingin
membaca lebih dalam terkait neuralnet
bisa di lihat di
sini atau dengan Running sintax berikut ?neuralnet
pada
console R.
prosess membuat training and test set
Rows: 3,066
Columns: 18
$ genderFemale <dbl> 0.8406001, -1.1893935, -1.1893935, -1.1893935, 0.8406001,…
$ genderMale <dbl> -0.8402611, 1.1898733, 1.1898733, 1.1898733, -0.8402611, …
$ genderOther <dbl> -0.01398909, -0.01398909, -0.01398909, -0.01398909, -0.01…
$ age <dbl> -1.02715152, 1.67045397, 1.31666964, -1.83201086, -0.5406…
$ hypertension <dbl> -0.3285697, 3.0428986, -0.3285697, -0.3285697, -0.3285697…
$ heart_disease <dbl> -0.2389234, 4.1846225, -0.2389234, -0.2389234, -0.2389234…
$ ever_marriedYes <dbl> -1.3813012, 0.7238134, -1.3813012, -1.3813012, 0.7238134,…
$ work_typeGovt_job <dbl> -0.3840731, 2.6031618, 2.6031618, -0.3840731, -0.3840731,…
$ work_typeNever_worked <dbl> -0.06574993, -0.06574993, -0.06574993, -0.06574993, -0.06…
$ work_typePrivate <dbl> 0.864212, -1.156897, -1.156897, -1.156897, 0.864212, -1.1…
$ `work_typeSelf-employed` <dbl> -0.4368378, -0.4368378, -0.4368378, -0.4368378, -0.436837…
$ Residence_typeUrban <dbl> -1.0160784, -1.0160784, -1.0160784, 0.9839834, 0.9839834,…
$ avg_glucose_level <dbl> -0.05515638, 2.46871762, -0.58647503, 1.04148885, -0.1580…
$ bmi <dbl> -1.54497394, -0.62265859, 0.32563748, -1.53198358, 0.2996…
$ `smoking_statusnever smoked` <dbl> -0.7666993, -0.7666993, -0.7666993, -0.7666993, 1.3040371…
$ smoking_statussmokes <dbl> -0.4272714, -0.4272714, 2.3399745, -0.4272714, -0.4272714…
$ smoking_statusUnknown <dbl> -0.6579463, -0.6579463, -0.6579463, 1.5195833, -0.6579463…
$ stroke <dbl> -0.2263051, -0.2263051, -0.2263051, -0.2263051, -0.226305…
predict_testNN <- (predict_testNN$net.result * (max(stroke_clean_data$stroke) - min(stroke_clean_data$stroke))) + min(stroke_clean_data$stroke)
Error: object 'predict_testNN' not found
#| fig-height: 4
plot(datatest$stroke, predict_testNN, col='darkred', pch=16, ylab = "predicted rating", xlab = "STROKE")
abline(0,1)
Metrik RMSE: 0.384983
RMSE
memiliki nilai sekitar 0.384983. Ini berarti bahwa,
secara rata-rata, perbedaan antara nilai prediksi model Anda dengan
nilai aktual (dalam unit yang sama dengan data) adalah sekitar 0.384983.
Semakin mendekati nol, semakin baik kinerja model yang di buat.
Terakhir.
feature (fitur)
: Kolom ini berisi nama fitur-fitur yang
dievaluasi dalam model. Ini adalah daftar fitur-fitur yang digunakan
dalam model yang di buat.
importance.05
: Ini adalah nilai penting fitur (feature
importance) pada tingkat 5% (terendah) dalam distribusi. Nilai ini
menunjukkan sejauh mana fitur tersebut penting dalam model saat melihat
persentil terendah dari distribusi.
importance
: Ini adalah nilai penting fitur pada tingkat
tengah (median) dalam distribusi. Ini adalah ukuran pentingnya fitur
dalam model saat melihat persentil tengah dari distribusi.
importance.95
: Ini adalah nilai penting fitur pada
tingkat 95% (tertinggi) dalam distribusi. Ini menunjukkan sejauh mana
fitur tersebut penting dalam model saat melihat persentil tertinggi dari
distribusi.
Dari table IMP
di atas terlihat bahwa varible
ever_marriedYes
sangat penting dalam mempengaruhi model
yang di buat, selanjutnya di ikuti age
/ Usia dan
BMI
.
Dari nilai IMP di jelaskan bahwa ever_marriedYes
dan
BMI
termasuk dalam bagian yang penting dalam model, namun
di lihat dari Interpretasi plot SHEPLY
kedua variable ini
memiliki nilai yang negatif. artinya prediksi akan cenderung rendah.
Selanjutnya yang memiliki nilai shaply positif adalah variable :
avg_glucose_level
: average glucose level in
blood
age
: age of the patient
maka dapat di simpulkan jika Client memiliki nilai Glucose (gula / Diabetes) dan usia yang cukup tinggi ini menjadi tanda untuk berdoa lebih banyak, karena peluang terserang stroke sangat tinggi.
Dear Tutor,
jika ada kesalahan mohon kiranya di koreksi jika sempat.
Demikian di sampaikan, atas bantuan dan ilmunya di ucapkan terimakasih.
REGARDS,
ALBANI