This RMarkdown file contains the report of the data analysis done for the project on building and deploying a stroke prediction model in R. It contains analysis such as data exploration, summary statistics, and building the prediction models. The final report was completed.
Data Description:
According to the World Health Organization (WHO), stroke is the 2nd leading cause of death globally, responsible for approximately 11% of total deaths.
This data set is used to predict whether a patient is likely to have a stroke based on the input parameters like gender, age, various diseases, and smoking status. Each row in the data provides relevant information about the patient.
install.packages("tidyverse")
## Installing package into '/usr/local/lib/R/site-library'
## (as 'lib' is unspecified)
install.packages("caret")
## Installing package into '/usr/local/lib/R/site-library'
## (as 'lib' is unspecified)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(caret)
## Loading required package: lattice
##
## Attaching package: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
stroke_data <- read.csv("healthcare-dataset-stroke-data.csv")
# View first rows
head(stroke_data)
## id gender age hypertension heart_disease ever_married work_type
## 1 9046 Male 67 0 1 Yes Private
## 2 51676 Female 61 0 0 Yes Self-employed
## 3 31112 Male 80 0 1 Yes Private
## 4 60182 Female 49 0 0 Yes Private
## 5 1665 Female 79 1 0 Yes Self-employed
## 6 56669 Male 81 0 0 Yes Private
## Residence_type avg_glucose_level bmi smoking_status stroke
## 1 Urban 228.69 36.6 formerly smoked 1
## 2 Rural 202.21 N/A never smoked 1
## 3 Rural 105.92 32.5 never smoked 1
## 4 Urban 171.23 34.4 smokes 1
## 5 Rural 174.12 24 never smoked 1
## 6 Urban 186.21 29 formerly smoked 1
# Summary statistics
summary(stroke_data)
## id gender age hypertension
## Min. : 67 Length:5110 Min. : 0.08 Min. :0.00000
## 1st Qu.:17741 Class :character 1st Qu.:25.00 1st Qu.:0.00000
## Median :36932 Mode :character Median :45.00 Median :0.00000
## Mean :36518 Mean :43.23 Mean :0.09746
## 3rd Qu.:54682 3rd Qu.:61.00 3rd Qu.:0.00000
## Max. :72940 Max. :82.00 Max. :1.00000
## heart_disease ever_married work_type Residence_type
## Min. :0.00000 Length:5110 Length:5110 Length:5110
## 1st Qu.:0.00000 Class :character Class :character Class :character
## Median :0.00000 Mode :character Mode :character Mode :character
## Mean :0.05401
## 3rd Qu.:0.00000
## Max. :1.00000
## avg_glucose_level bmi smoking_status stroke
## Min. : 55.12 Length:5110 Length:5110 Min. :0.00000
## 1st Qu.: 77.25 Class :character Class :character 1st Qu.:0.00000
## Median : 91.89 Mode :character Mode :character Median :0.00000
## Mean :106.15 Mean :0.04873
## 3rd Qu.:114.09 3rd Qu.:0.00000
## Max. :271.74 Max. :1.00000
# Check missing values
colSums(is.na(stroke_data))
## id gender age hypertension
## 0 0 0 0
## heart_disease ever_married work_type Residence_type
## 0 0 0 0
## avg_glucose_level bmi smoking_status stroke
## 0 0 0 0
# Display dimensions
dim(stroke_data)
## [1] 5110 12
# Checking variable names
names(stroke_data)
## [1] "id" "gender" "age"
## [4] "hypertension" "heart_disease" "ever_married"
## [7] "work_type" "Residence_type" "avg_glucose_level"
## [10] "bmi" "smoking_status" "stroke"
# Distribution of stroke cases
table(stroke_data$stroke)
##
## 0 1
## 4861 249
# Gender distribution
table(stroke_data$gender)
##
## Female Male Other
## 2994 2115 1
# Average age
mean(stroke_data$age)
## [1] 43.22661
The dataset contains patient demographic and health information used to predict stroke occurrence. The exploratory analysis included checking the structure of the dataset, summary statistics, missing values, and the distribution of important variables such as gender, age, and stroke outcome. This step helped identify the quality and characteristics of the data before model building.
# Convert target variable to factor
stroke_data$stroke <- as.factor(stroke_data$stroke)
# Split data
set.seed(123)
trainIndex <- createDataPartition(stroke_data$stroke,
p = 0.8,
list = FALSE)
train <- stroke_data[trainIndex, ]
test <- stroke_data[-trainIndex, ]
# Logistic Regression Model
model <- glm(stroke ~ .,
data = train,
family = "binomial")
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model)
##
## Call:
## glm(formula = stroke ~ ., family = "binomial", data = train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6642 -0.2125 -0.0001 0.0000 3.1646
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.582e+01 2.923e+04 -0.001 0.99930
## id -1.335e-06 4.202e-06 -0.318 0.75072
## genderMale 2.050e-02 1.872e-01 0.109 0.91282
## genderOther -1.712e+01 2.923e+04 -0.001 0.99953
## age 8.616e-02 7.864e-03 10.956 < 2e-16 ***
## hypertension 2.079e-01 2.299e-01 0.904 0.36602
## heart_disease 1.511e-01 2.600e-01 0.581 0.56117
## ever_marriedYes -5.954e-02 2.978e-01 -0.200 0.84152
## work_typeGovt_job -2.396e+00 9.199e-01 -2.605 0.00919 **
## work_typeNever_worked -1.658e+01 6.399e+03 -0.003 0.99793
## work_typePrivate -2.389e+00 9.006e-01 -2.652 0.00799 **
## work_typeSelf-employed -2.811e+00 9.392e-01 -2.993 0.00277 **
## Residence_typeUrban 1.923e-01 1.824e-01 1.054 0.29175
## avg_glucose_level 4.940e-03 1.635e-03 3.020 0.00252 **
## bmi11.5 3.299e+00 4.134e+04 0.000 0.99994
## bmi12 3.475e+00 4.134e+04 0.000 0.99993
## bmi12.3 3.169e+00 4.134e+04 0.000 0.99994
## bmi12.8 3.514e+00 4.134e+04 0.000 0.99993
## bmi13.2 3.745e+00 4.134e+04 0.000 0.99993
## bmi13.3 3.840e+00 4.134e+04 0.000 0.99993
## bmi13.4 3.359e+00 4.134e+04 0.000 0.99994
## bmi13.7 3.483e+00 3.579e+04 0.000 0.99992
## bmi13.8 3.558e+00 4.134e+04 0.000 0.99993
## bmi14 3.545e+00 4.134e+04 0.000 0.99993
## bmi14.1 2.088e+00 3.211e+04 0.000 0.99995
## bmi14.2 1.702e+00 3.290e+04 0.000 0.99996
## bmi14.3 3.350e+00 3.572e+04 0.000 0.99993
## bmi14.4 3.593e+00 4.134e+04 0.000 0.99993
## bmi14.5 3.206e+00 3.580e+04 0.000 0.99993
## bmi14.6 3.271e+00 3.580e+04 0.000 0.99993
## bmi14.8 3.678e+00 3.370e+04 0.000 0.99991
## bmi14.9 3.195e+00 4.134e+04 0.000 0.99994
## bmi15 1.537e-01 3.439e+04 0.000 1.00000
## bmi15.1 3.719e+00 3.156e+04 0.000 0.99991
## bmi15.2 3.564e+00 3.373e+04 0.000 0.99992
## bmi15.3 3.137e+00 3.367e+04 0.000 0.99993
## bmi15.4 3.373e+00 3.374e+04 0.000 0.99992
## bmi15.5 3.337e+00 3.580e+04 0.000 0.99993
## bmi15.6 3.452e+00 3.366e+04 0.000 0.99992
## bmi15.7 2.905e+00 3.370e+04 0.000 0.99993
## bmi15.8 3.157e+00 3.264e+04 0.000 0.99992
## bmi15.9 3.535e+00 3.199e+04 0.000 0.99991
## bmi16 3.718e+00 3.120e+04 0.000 0.99990
## bmi16.1 2.871e+00 3.142e+04 0.000 0.99993
## bmi16.2 3.304e+00 3.149e+04 0.000 0.99992
## bmi16.3 3.425e+00 3.099e+04 0.000 0.99991
## bmi16.4 2.032e+00 3.048e+04 0.000 0.99995
## bmi16.5 3.933e+00 3.580e+04 0.000 0.99991
## bmi16.6 3.757e+00 3.120e+04 0.000 0.99990
## bmi16.7 2.453e+00 3.052e+04 0.000 0.99994
## bmi16.8 3.728e+00 3.123e+04 0.000 0.99990
## bmi16.9 4.177e+00 3.252e+04 0.000 0.99990
## bmi17 3.563e+00 3.078e+04 0.000 0.99991
## bmi17.1 3.556e+00 3.061e+04 0.000 0.99991
## bmi17.2 3.429e+00 3.079e+04 0.000 0.99991
## bmi17.3 1.861e+00 3.079e+04 0.000 0.99995
## bmi17.4 3.600e+00 3.064e+04 0.000 0.99991
## bmi17.5 3.555e+00 3.156e+04 0.000 0.99991
## bmi17.6 2.782e+00 3.014e+04 0.000 0.99993
## bmi17.7 3.169e+00 3.058e+04 0.000 0.99992
## bmi17.8 3.557e+00 3.156e+04 0.000 0.99991
## bmi17.9 1.037e+00 3.087e+04 0.000 0.99997
## bmi18 3.622e+00 3.033e+04 0.000 0.99990
## bmi18.1 2.853e+00 3.088e+04 0.000 0.99993
## bmi18.2 2.173e+00 3.089e+04 0.000 0.99994
## bmi18.3 2.805e+00 3.015e+04 0.000 0.99993
## bmi18.4 3.311e+00 3.154e+04 0.000 0.99992
## bmi18.5 3.361e+00 3.077e+04 0.000 0.99991
## bmi18.6 3.458e+00 3.017e+04 0.000 0.99991
## bmi18.7 3.369e+00 3.045e+04 0.000 0.99991
## bmi18.8 2.988e+00 3.026e+04 0.000 0.99992
## bmi18.9 3.764e+00 3.184e+04 0.000 0.99991
## bmi19 3.802e+00 3.118e+04 0.000 0.99990
## bmi19.1 2.441e+00 3.046e+04 0.000 0.99994
## bmi19.2 1.701e+00 3.028e+04 0.000 0.99996
## bmi19.3 1.632e+00 3.059e+04 0.000 0.99996
## bmi19.4 2.167e+01 2.923e+04 0.001 0.99941
## bmi19.5 3.240e+00 2.997e+04 0.000 0.99991
## bmi19.6 2.187e+01 2.923e+04 0.001 0.99940
## bmi19.7 1.828e+00 3.084e+04 0.000 0.99995
## bmi19.8 1.747e+00 3.005e+04 0.000 0.99995
## bmi19.9 2.469e+00 3.090e+04 0.000 0.99994
## bmi20 3.005e+00 3.015e+04 0.000 0.99992
## bmi20.1 2.094e+01 2.923e+04 0.001 0.99943
## bmi20.2 2.109e+01 2.923e+04 0.001 0.99942
## bmi20.3 1.784e+00 2.993e+04 0.000 0.99995
## bmi20.4 3.442e+00 2.989e+04 0.000 0.99991
## bmi20.5 2.920e+00 3.026e+04 0.000 0.99992
## bmi20.6 2.303e+00 3.021e+04 0.000 0.99994
## bmi20.7 1.819e+00 3.028e+04 0.000 0.99995
## bmi20.8 1.787e+00 2.990e+04 0.000 0.99995
## bmi20.9 1.453e+00 3.016e+04 0.000 0.99996
## bmi21 2.512e+00 2.989e+04 0.000 0.99993
## bmi21.1 1.334e+00 3.034e+04 0.000 0.99996
## bmi21.2 2.091e+01 2.923e+04 0.001 0.99943
## bmi21.3 2.254e+00 2.995e+04 0.000 0.99994
## bmi21.4 1.974e+00 2.998e+04 0.000 0.99995
## bmi21.5 2.025e+01 2.923e+04 0.001 0.99945
## bmi21.6 3.112e+00 3.016e+04 0.000 0.99992
## bmi21.7 1.106e+00 3.016e+04 0.000 0.99997
## bmi21.8 2.020e+01 2.923e+04 0.001 0.99945
## bmi21.9 2.047e+00 3.015e+04 0.000 0.99995
## bmi22 7.169e-01 3.007e+04 0.000 0.99998
## bmi22.1 1.250e+00 2.993e+04 0.000 0.99997
## bmi22.2 1.949e+01 2.923e+04 0.001 0.99947
## bmi22.3 2.053e+01 2.923e+04 0.001 0.99944
## bmi22.4 2.089e+01 2.923e+04 0.001 0.99943
## bmi22.5 1.918e+00 3.058e+04 0.000 0.99995
## bmi22.6 2.142e+01 2.923e+04 0.001 0.99942
## bmi22.7 1.904e+00 2.985e+04 0.000 0.99995
## bmi22.8 2.031e+01 2.923e+04 0.001 0.99945
## bmi22.9 2.050e+01 2.923e+04 0.001 0.99944
## bmi23 1.471e+00 2.989e+04 0.000 0.99996
## bmi23.1 1.539e+00 3.001e+04 0.000 0.99996
## bmi23.2 2.098e+00 3.000e+04 0.000 0.99994
## bmi23.3 2.002e+00 2.998e+04 0.000 0.99995
## bmi23.4 2.024e+01 2.923e+04 0.001 0.99945
## bmi23.5 1.971e+01 2.923e+04 0.001 0.99946
## bmi23.6 2.016e+01 2.923e+04 0.001 0.99945
## bmi23.7 9.634e-01 3.025e+04 0.000 0.99997
## bmi23.8 2.093e+01 2.923e+04 0.001 0.99943
## bmi23.9 2.073e+01 2.923e+04 0.001 0.99943
## bmi24 2.158e+01 2.923e+04 0.001 0.99941
## bmi24.1 1.966e+01 2.923e+04 0.001 0.99946
## bmi24.2 2.085e+01 2.923e+04 0.001 0.99943
## bmi24.3 1.472e+00 2.974e+04 0.000 0.99996
## bmi24.4 1.284e+00 2.985e+04 0.000 0.99997
## bmi24.5 1.492e+00 2.971e+04 0.000 0.99996
## bmi24.6 2.028e+01 2.923e+04 0.001 0.99945
## bmi24.7 1.699e+00 2.991e+04 0.000 0.99995
## bmi24.8 2.316e+00 2.975e+04 0.000 0.99994
## bmi24.9 1.217e+00 2.966e+04 0.000 0.99997
## bmi25 1.924e+01 2.923e+04 0.001 0.99947
## bmi25.1 2.122e+00 2.968e+04 0.000 0.99994
## bmi25.2 9.152e-01 3.023e+04 0.000 0.99998
## bmi25.3 9.136e-01 2.979e+04 0.000 0.99998
## bmi25.4 1.957e+01 2.923e+04 0.001 0.99947
## bmi25.5 9.128e-01 2.966e+04 0.000 0.99998
## bmi25.6 2.045e+01 2.923e+04 0.001 0.99944
## bmi25.7 1.207e+00 3.000e+04 0.000 0.99997
## bmi25.8 2.009e+01 2.923e+04 0.001 0.99945
## bmi25.9 1.573e+00 2.987e+04 0.000 0.99996
## bmi26 6.813e-01 2.983e+04 0.000 0.99998
## bmi26.1 1.971e+01 2.923e+04 0.001 0.99946
## bmi26.2 2.008e+01 2.923e+04 0.001 0.99945
## bmi26.3 1.914e+01 2.923e+04 0.001 0.99948
## bmi26.4 2.076e+01 2.923e+04 0.001 0.99943
## bmi26.5 1.921e+01 2.923e+04 0.001 0.99948
## bmi26.6 2.086e+01 2.923e+04 0.001 0.99943
## bmi26.7 1.898e+01 2.923e+04 0.001 0.99948
## bmi26.8 1.923e+01 2.923e+04 0.001 0.99948
## bmi26.9 2.025e+01 2.923e+04 0.001 0.99945
## bmi27 1.940e+01 2.923e+04 0.001 0.99947
## bmi27.1 1.930e+01 2.923e+04 0.001 0.99947
## bmi27.2 1.992e+01 2.923e+04 0.001 0.99946
## bmi27.3 2.175e+01 2.923e+04 0.001 0.99941
## bmi27.4 2.082e+01 2.923e+04 0.001 0.99943
## bmi27.5 2.054e+01 2.923e+04 0.001 0.99944
## bmi27.6 1.281e+00 2.960e+04 0.000 0.99997
## bmi27.7 2.071e+01 2.923e+04 0.001 0.99943
## bmi27.8 9.575e-01 2.995e+04 0.000 0.99997
## bmi27.9 1.911e+01 2.923e+04 0.001 0.99948
## bmi28 2.089e+01 2.923e+04 0.001 0.99943
## bmi28.1 1.976e+01 2.923e+04 0.001 0.99946
## bmi28.2 1.956e+01 2.923e+04 0.001 0.99947
## bmi28.3 1.357e+00 2.979e+04 0.000 0.99996
## bmi28.4 2.060e+01 2.923e+04 0.001 0.99944
## bmi28.5 2.024e+01 2.923e+04 0.001 0.99945
## bmi28.6 2.015e+01 2.923e+04 0.001 0.99945
## bmi28.7 9.610e-01 2.959e+04 0.000 0.99997
## bmi28.8 1.910e+01 2.923e+04 0.001 0.99948
## bmi28.9 1.918e+01 2.923e+04 0.001 0.99948
## bmi29 1.989e+01 2.923e+04 0.001 0.99946
## bmi29.1 1.960e+01 2.923e+04 0.001 0.99946
## bmi29.2 1.169e+00 2.994e+04 0.000 0.99997
## bmi29.3 2.040e+01 2.923e+04 0.001 0.99944
## bmi29.4 1.953e+01 2.923e+04 0.001 0.99947
## bmi29.5 1.092e+00 2.991e+04 0.000 0.99997
## bmi29.6 1.967e+01 2.923e+04 0.001 0.99946
## bmi29.7 2.036e+01 2.923e+04 0.001 0.99944
## bmi29.8 1.933e+01 2.923e+04 0.001 0.99947
## bmi29.9 2.150e+01 2.923e+04 0.001 0.99941
## bmi30 1.958e+01 2.923e+04 0.001 0.99947
## bmi30.1 1.005e+00 2.982e+04 0.000 0.99997
## bmi30.2 1.359e+00 2.990e+04 0.000 0.99996
## bmi30.3 1.912e+01 2.923e+04 0.001 0.99948
## bmi30.4 8.327e-01 3.027e+04 0.000 0.99998
## bmi30.5 1.905e+01 2.923e+04 0.001 0.99948
## bmi30.6 8.484e-01 3.010e+04 0.000 0.99998
## bmi30.7 1.980e+01 2.923e+04 0.001 0.99946
## bmi30.8 2.080e+01 2.923e+04 0.001 0.99943
## bmi30.9 2.081e+01 2.923e+04 0.001 0.99943
## bmi31 2.046e+01 2.923e+04 0.001 0.99944
## bmi31.1 1.928e+01 2.923e+04 0.001 0.99947
## bmi31.2 1.240e+00 2.993e+04 0.000 0.99997
## bmi31.3 1.950e+01 2.923e+04 0.001 0.99947
## bmi31.4 2.109e+01 2.923e+04 0.001 0.99942
## bmi31.5 1.924e+01 2.923e+04 0.001 0.99947
## bmi31.6 6.218e-01 2.993e+04 0.000 0.99998
## bmi31.7 2.131e+01 2.923e+04 0.001 0.99942
## bmi31.8 6.639e-01 2.980e+04 0.000 0.99998
## bmi31.9 2.115e+01 2.923e+04 0.001 0.99942
## bmi32 2.186e+01 2.923e+04 0.001 0.99940
## bmi32.1 1.657e+00 2.987e+04 0.000 0.99996
## bmi32.2 6.330e-01 3.002e+04 0.000 0.99998
## bmi32.3 2.037e+01 2.923e+04 0.001 0.99944
## bmi32.4 8.675e-01 3.007e+04 0.000 0.99998
## bmi32.5 1.984e+01 2.923e+04 0.001 0.99946
## bmi32.6 1.435e+00 3.053e+04 0.000 0.99996
## bmi32.7 1.793e+00 2.999e+04 0.000 0.99995
## bmi32.8 1.955e+01 2.923e+04 0.001 0.99947
## bmi32.9 2.032e+01 2.923e+04 0.001 0.99945
## bmi33 2.025e+01 2.923e+04 0.001 0.99945
## bmi33.1 2.066e+00 2.990e+04 0.000 0.99994
## bmi33.2 2.015e+01 2.923e+04 0.001 0.99945
## bmi33.3 8.128e-01 3.005e+04 0.000 0.99998
## bmi33.4 7.864e-01 3.024e+04 0.000 0.99998
## bmi33.5 1.939e-01 2.985e+04 0.000 0.99999
## bmi33.6 3.140e-01 3.098e+04 0.000 0.99999
## bmi33.7 2.011e+01 2.923e+04 0.001 0.99945
## bmi33.8 1.027e+00 3.028e+04 0.000 0.99997
## bmi33.9 9.037e-01 3.009e+04 0.000 0.99998
## bmi34 1.344e+00 2.997e+04 0.000 0.99996
## bmi34.1 2.127e+01 2.923e+04 0.001 0.99942
## bmi34.2 2.006e+01 2.923e+04 0.001 0.99945
## bmi34.3 5.763e-01 2.999e+04 0.000 0.99998
## bmi34.4 1.956e+01 2.923e+04 0.001 0.99947
## bmi34.5 1.917e+01 2.923e+04 0.001 0.99948
## bmi34.6 1.972e+01 2.923e+04 0.001 0.99946
## bmi34.7 9.541e-01 2.994e+04 0.000 0.99997
## bmi34.8 8.308e-01 3.020e+04 0.000 0.99998
## bmi34.9 1.972e+01 2.923e+04 0.001 0.99946
## bmi35 3.625e-01 3.144e+04 0.000 0.99999
## bmi35.1 1.713e+00 3.067e+04 0.000 0.99996
## bmi35.2 9.769e-01 3.015e+04 0.000 0.99997
## bmi35.3 1.196e+00 3.031e+04 0.000 0.99997
## bmi35.4 2.144e+01 2.923e+04 0.001 0.99941
## bmi35.5 2.087e+01 2.923e+04 0.001 0.99943
## bmi35.6 1.851e+00 3.067e+04 0.000 0.99995
## bmi35.7 1.433e+00 3.013e+04 0.000 0.99996
## bmi35.8 2.030e+01 2.923e+04 0.001 0.99945
## bmi35.9 1.991e+01 2.923e+04 0.001 0.99946
## bmi36 1.116e+00 3.039e+04 0.000 0.99997
## bmi36.1 1.414e+00 3.140e+04 0.000 0.99996
## bmi36.2 1.941e+00 3.066e+04 0.000 0.99995
## bmi36.3 1.537e+00 3.033e+04 0.000 0.99996
## bmi36.4 1.195e+00 3.083e+04 0.000 0.99997
## bmi36.5 4.305e+01 3.575e+04 0.001 0.99904
## bmi36.6 2.037e+01 2.923e+04 0.001 0.99944
## bmi36.7 2.012e+01 2.923e+04 0.001 0.99945
## bmi36.8 2.192e+01 2.923e+04 0.001 0.99940
## bmi36.9 8.268e-01 3.063e+04 0.000 0.99998
## bmi37 1.666e+00 3.069e+04 0.000 0.99996
## bmi37.1 2.145e+01 2.923e+04 0.001 0.99941
## bmi37.2 2.044e+00 3.124e+04 0.000 0.99995
## bmi37.3 2.067e+01 2.923e+04 0.001 0.99944
## bmi37.4 2.017e+01 2.923e+04 0.001 0.99945
## bmi37.5 2.290e+01 2.923e+04 0.001 0.99937
## bmi37.6 1.499e+00 3.051e+04 0.000 0.99996
## bmi37.7 9.154e-01 3.177e+04 0.000 0.99998
## bmi37.8 1.424e+00 3.078e+04 0.000 0.99996
## bmi37.9 2.034e+00 3.036e+04 0.000 0.99995
## bmi38 1.660e+00 3.033e+04 0.000 0.99996
## bmi38.1 1.077e+00 3.098e+04 0.000 0.99997
## bmi38.2 1.732e+00 3.064e+04 0.000 0.99995
## bmi38.3 1.275e+00 3.552e+04 0.000 0.99997
## bmi38.4 3.327e+00 3.241e+04 0.000 0.99992
## bmi38.5 2.414e+00 3.225e+04 0.000 0.99994
## bmi38.6 2.167e+01 2.923e+04 0.001 0.99941
## bmi38.7 2.060e+01 2.923e+04 0.001 0.99944
## bmi38.8 1.676e+00 3.083e+04 0.000 0.99996
## bmi38.9 1.079e+00 3.078e+04 0.000 0.99997
## bmi39 8.077e-01 3.202e+04 0.000 0.99998
## bmi39.1 1.513e+00 3.149e+04 0.000 0.99996
## bmi39.2 2.058e+01 2.923e+04 0.001 0.99944
## bmi39.3 2.115e+01 2.923e+04 0.001 0.99942
## bmi39.4 1.960e+00 3.069e+04 0.000 0.99995
## bmi39.5 7.404e-01 3.086e+04 0.000 0.99998
## bmi39.6 2.724e+00 3.082e+04 0.000 0.99993
## bmi39.7 2.502e+00 3.144e+04 0.000 0.99994
## bmi39.8 2.290e+00 3.174e+04 0.000 0.99994
## bmi39.9 8.607e-01 3.349e+04 0.000 0.99998
## bmi40 2.100e+01 2.923e+04 0.001 0.99943
## bmi40.1 1.616e+00 3.113e+04 0.000 0.99996
## bmi40.2 1.596e+00 3.047e+04 0.000 0.99996
## bmi40.3 1.189e+00 3.063e+04 0.000 0.99997
## bmi40.4 2.204e+01 2.923e+04 0.001 0.99940
## bmi40.5 1.333e+00 3.219e+04 0.000 0.99997
## bmi40.6 1.760e+00 4.134e+04 0.000 0.99997
## bmi40.7 1.318e+00 4.134e+04 0.000 0.99997
## bmi40.8 1.023e+00 3.133e+04 0.000 0.99997
## bmi40.9 1.002e+00 3.156e+04 0.000 0.99997
## bmi41 1.873e+00 3.575e+04 0.000 0.99996
## bmi41.1 2.180e+01 2.923e+04 0.001 0.99941
## bmi41.2 1.801e+00 3.132e+04 0.000 0.99995
## bmi41.3 9.152e-01 3.159e+04 0.000 0.99998
## bmi41.4 1.092e+00 3.496e+04 0.000 0.99998
## bmi41.5 2.137e+01 2.923e+04 0.001 0.99942
## bmi41.6 3.533e+00 3.254e+04 0.000 0.99991
## bmi41.7 3.634e-01 3.082e+04 0.000 0.99999
## bmi41.8 2.251e+00 3.081e+04 0.000 0.99994
## bmi41.9 1.153e+00 3.181e+04 0.000 0.99997
## bmi42 1.443e+00 3.575e+04 0.000 0.99997
## bmi42.1 2.160e+00 3.359e+04 0.000 0.99995
## bmi42.2 2.181e+01 2.923e+04 0.001 0.99940
## bmi42.3 1.216e+00 3.171e+04 0.000 0.99997
## bmi42.4 2.187e+00 3.549e+04 0.000 0.99995
## bmi42.5 2.429e+01 2.923e+04 0.001 0.99934
## bmi42.6 2.438e+00 3.567e+04 0.000 0.99995
## bmi42.7 9.764e-01 3.185e+04 0.000 0.99998
## bmi42.8 3.154e+00 3.568e+04 0.000 0.99993
## bmi42.9 1.316e+00 3.560e+04 0.000 0.99997
## bmi43 2.003e+00 3.111e+04 0.000 0.99995
## bmi43.1 8.219e-01 3.228e+04 0.000 0.99998
## bmi43.2 3.099e+00 3.348e+04 0.000 0.99993
## bmi43.3 1.457e+00 3.177e+04 0.000 0.99996
## bmi43.4 1.276e-01 3.158e+04 0.000 1.00000
## bmi43.6 1.846e+00 3.233e+04 0.000 0.99995
## bmi43.7 1.264e+00 3.107e+04 0.000 0.99997
## bmi43.8 1.745e+00 3.118e+04 0.000 0.99996
## bmi43.9 1.156e+00 3.124e+04 0.000 0.99997
## bmi44 1.948e+00 3.235e+04 0.000 0.99995
## bmi44.1 4.459e+01 4.134e+04 0.001 0.99914
## bmi44.2 2.090e+01 2.923e+04 0.001 0.99943
## bmi44.3 8.896e-01 3.331e+04 0.000 0.99998
## bmi44.4 3.453e+00 4.134e+04 0.000 0.99993
## bmi44.5 9.152e-01 3.232e+04 0.000 0.99998
## bmi44.6 1.257e+00 3.576e+04 0.000 0.99997
## bmi44.7 3.319e+00 3.237e+04 0.000 0.99992
## bmi44.8 2.709e+00 3.335e+04 0.000 0.99994
## bmi44.9 3.904e+00 3.480e+04 0.000 0.99991
## bmi45 2.903e+00 3.360e+04 0.000 0.99993
## bmi45.1 1.174e+00 3.498e+04 0.000 0.99997
## bmi45.2 2.017e+00 3.544e+04 0.000 0.99995
## bmi45.3 2.474e+00 3.353e+04 0.000 0.99994
## bmi45.4 2.767e+00 3.356e+04 0.000 0.99993
## bmi45.5 2.161e+01 2.923e+04 0.001 0.99941
## bmi45.7 2.115e+01 2.923e+04 0.001 0.99942
## bmi45.8 3.517e+00 4.134e+04 0.000 0.99993
## bmi45.9 2.533e+01 2.923e+04 0.001 0.99931
## bmi46 2.195e+01 2.923e+04 0.001 0.99940
## bmi46.1 3.103e+00 3.571e+04 0.000 0.99993
## bmi46.2 2.451e+00 4.134e+04 0.000 0.99995
## bmi46.3 3.492e+00 4.134e+04 0.000 0.99993
## bmi46.4 3.014e+00 4.134e+04 0.000 0.99994
## bmi46.5 3.002e+00 3.565e+04 0.000 0.99993
## bmi46.6 2.630e+00 4.134e+04 0.000 0.99995
## bmi46.8 3.388e+00 4.134e+04 0.000 0.99993
## bmi46.9 2.860e+00 3.508e+04 0.000 0.99993
## bmi47.1 1.916e+00 4.134e+04 0.000 0.99996
## bmi47.3 2.794e+00 3.579e+04 0.000 0.99994
## bmi47.4 5.820e-01 4.134e+04 0.000 0.99999
## bmi47.5 2.066e+01 2.923e+04 0.001 0.99944
## bmi47.6 2.284e+00 3.580e+04 0.000 0.99995
## bmi47.8 3.758e+00 3.580e+04 0.000 0.99992
## bmi47.9 2.146e+00 4.134e+04 0.000 0.99996
## bmi48 1.070e+00 4.134e+04 0.000 0.99998
## bmi48.1 3.157e+00 4.134e+04 0.000 0.99994
## bmi48.3 2.209e+00 3.500e+04 0.000 0.99995
## bmi48.4 3.970e+00 4.134e+04 0.000 0.99992
## bmi48.5 4.613e+00 4.134e+04 0.000 0.99991
## bmi48.7 3.805e-01 4.134e+04 0.000 0.99999
## bmi48.8 2.896e+00 3.493e+04 0.000 0.99993
## bmi48.9 2.384e+00 3.550e+04 0.000 0.99995
## bmi49.2 1.836e+00 4.134e+04 0.000 0.99996
## bmi49.3 2.878e+00 3.369e+04 0.000 0.99993
## bmi49.4 2.090e+00 4.134e+04 0.000 0.99996
## bmi49.5 2.561e+00 3.568e+04 0.000 0.99994
## bmi49.8 2.363e+00 4.134e+04 0.000 0.99995
## bmi50.1 3.157e+00 4.134e+04 0.000 0.99994
## bmi50.2 1.925e+00 3.262e+04 0.000 0.99995
## bmi50.3 2.255e+00 4.134e+04 0.000 0.99996
## bmi50.4 1.274e+00 4.134e+04 0.000 0.99998
## bmi50.5 3.506e+00 4.134e+04 0.000 0.99993
## bmi50.6 2.801e+00 4.134e+04 0.000 0.99995
## bmi50.8 2.668e+00 4.134e+04 0.000 0.99995
## bmi50.9 9.543e-01 4.134e+04 0.000 0.99998
## bmi51 4.693e+00 4.134e+04 0.000 0.99991
## bmi51.5 2.913e+00 4.134e+04 0.000 0.99994
## bmi51.7 1.978e+00 4.134e+04 0.000 0.99996
## bmi51.8 7.592e-01 4.134e+04 0.000 0.99999
## bmi51.9 6.726e-01 3.477e+04 0.000 0.99998
## bmi52.3 3.503e+00 4.134e+04 0.000 0.99993
## bmi52.5 2.118e+00 4.134e+04 0.000 0.99996
## bmi52.7 -1.305e-02 3.566e+04 0.000 1.00000
## bmi52.8 3.068e+00 4.134e+04 0.000 0.99994
## bmi52.9 9.164e-01 4.134e+04 0.000 0.99998
## bmi53.4 2.099e+00 3.517e+04 0.000 0.99995
## bmi53.5 2.178e+00 4.134e+04 0.000 0.99996
## bmi53.8 1.990e+00 3.549e+04 0.000 0.99996
## bmi53.9 4.145e+00 4.134e+04 0.000 0.99992
## bmi54 2.805e+00 4.134e+04 0.000 0.99995
## bmi54.2 3.287e+00 4.134e+04 0.000 0.99994
## bmi54.3 -3.760e-01 4.134e+04 0.000 0.99999
## bmi54.6 -3.451e-01 4.134e+04 0.000 0.99999
## bmi54.7 2.435e+00 3.550e+04 0.000 0.99995
## bmi54.8 8.768e-01 4.134e+04 0.000 0.99998
## bmi55 2.083e+00 3.568e+04 0.000 0.99995
## bmi55.1 4.212e+00 4.134e+04 0.000 0.99992
## bmi55.2 1.326e+00 4.134e+04 0.000 0.99997
## bmi55.7 2.759e+00 3.218e+04 0.000 0.99993
## bmi55.9 3.414e+00 4.134e+04 0.000 0.99993
## bmi56 3.067e+00 4.134e+04 0.000 0.99994
## bmi56.1 1.231e-01 4.134e+04 0.000 1.00000
## bmi56.6 4.519e+01 4.134e+04 0.001 0.99913
## bmi57.2 1.640e+00 4.134e+04 0.000 0.99997
## bmi57.3 2.382e+00 4.134e+04 0.000 0.99995
## bmi57.5 3.915e+00 4.134e+04 0.000 0.99992
## bmi57.7 5.477e-01 4.134e+04 0.000 0.99999
## bmi57.9 3.089e+00 4.134e+04 0.000 0.99994
## bmi58.1 2.145e+00 4.134e+04 0.000 0.99996
## bmi59.7 2.606e+00 4.134e+04 0.000 0.99995
## bmi60.2 3.722e-01 4.134e+04 0.000 0.99999
## bmi60.9 1.364e+00 3.570e+04 0.000 0.99997
## bmi61.2 1.893e+00 4.134e+04 0.000 0.99996
## bmi71.9 2.309e+00 4.134e+04 0.000 0.99996
## bmi78 3.942e+00 4.134e+04 0.000 0.99992
## bmi92 3.273e+00 4.134e+04 0.000 0.99994
## bmi97.6 4.981e+00 4.134e+04 0.000 0.99990
## bmiN/A 2.085e+01 2.923e+04 0.001 0.99943
## smoking_statusnever smoked -2.857e-01 2.309e-01 -1.237 0.21598
## smoking_statussmokes 2.763e-02 2.772e-01 0.100 0.92061
## smoking_statusUnknown -2.613e-01 2.776e-01 -0.941 0.34655
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1597.15 on 4088 degrees of freedom
## Residual deviance: 949.81 on 3666 degrees of freedom
## AIC: 1795.8
##
## Number of Fisher Scoring iterations: 20
A logistic regression model was developed because the target variable (stroke) is binary, indicating whether a patient experienced a stroke or not.
set.seed(123)
trainIndex <- createDataPartition(stroke_data$stroke,
p = 0.8,
list = FALSE)
train <- stroke_data[trainIndex, ]
test <- stroke_data[-trainIndex, ]
The prediction model was evaluated using a confusion matrix, which measures the number of correctly and incorrectly classified observations. The model’s accuracy and classification performance were assessed before selecting it for deployment.
# Save model
saveRDS(model,
"stroke_prediction_model.rds")
The analysis explored demographic and health-related factors associated with stroke prediction. Data preprocessing included checking for missing values, summarizing variables, and preparing the dataset for modeling. A logistic regression model was trained and evaluated using a train-test split and a confusion matrix. The model demonstrated the ability to classify stroke cases and can be saved for future use. Overall, this project illustrates a complete machine learning workflow in R, including data preparation, model development, evaluation, and basic deployment.