Extended tecdat|R language, logistic regression, random forest, SVM support vector machine to predict Framingham heart disease risk and model diagnosis visualization

Original link: http://tecdat.cn/?p=24973 

Original source: Tuo end data tribal official account

brief introduction

The World Health Organization estimates that 12 million people worldwide die of heart disease every year. In the United States and other developed countries, half of the deaths are due to cardiovascular disease. The early prognosis of cardiovascular disease can help decide to change the lifestyle of high-risk patients, so as to reduce complications. The purpose of this study was to identify the most relevant / risk factors for heart disease and use machine learning to predict the overall risk.

Data preparation


The data set comes from an ongoing cardiovascular study of residents. The classification goal is to predict whether patients will have the risk of coronary heart disease (CHD) in the next 10 years. Data sets provide patient information. It includes more than 4000 records and 15 attributes.


Each attribute is a potential risk factor. There are demographic, behavioral and medical risk factors.

• gender: male or female (scalar)
• age: patient age; (continuous - although the recorded age has been truncated to an integer, the concept of age is continuous)
• current smoker: is the patient a current smoker (scalar)
• number of cigarettes smoked per day: the average number of cigarettes smoked by this person in a day. (it can be considered continuous, because a person can have any number of cigarettes, or even half a cigarette.)
• BP Meds: does the patient take antihypertensive drugs (scalar)
• stroke: did the patient have a previous stroke (scalar)
• Hyp: does the patient have hypertension (scalar)
Diabetes: does the patient have diabetes (scalar)?
• Tot Chol: total cholesterol level (continuous)
• Sys BP: systolic blood pressure (continuous)
• Dia BP: diastolic blood pressure (continuous)
• BMI: body mass index (continuous)
• heart rate: heart rate (continuous - in medical research, although variables such as heart rate are actually discrete, they are considered continuous due to the existence of a large number of possible values.)
• glucose: glucose level (continuous)
Predictive variables (expected objectives)
• 10-year risk of CHD (binary: "1" for "yes", "0" for "no")

Heart disease prediction

# get data
rdaa <- read.csv((path)

# Here, we can consider increasing the difference between systolic blood pressure and diastolic blood pressure, and describing the variables of systolic blood pressure, diastolic blood pressure and hypertension level

# Look at the data structure

# Consider adding the variable bplevel
raw_data <- sqldf

# Distinguish between variable categories

ra_da <- map
str(ra_da )

Data preprocessing

Viewing and processing missing values

# Here we use the Mie package to handle missing values


As can be seen from the above figure, except for the glucose variable, the deletion proportion of other variables is less than 5%, and the deletion rate of glucose variable is more than 10%. The processing strategy is to keep the missing value of glucose variable and directly delete the missing value of other variables. Now deal with the missing value of glucose,

# Processing glucose columns
lee_a <- subset & !is.na & !is.na & !is.na & !is.na & !is.na
# Check the linear correlation between glce and other variables to determine the filling strategy of mice
gcog = glm(lcse ~ .)


Fill in and exclude unimportant variables. As for why diaBP is not selected, it is mainly because these two variables will cause multicollinearity in the later correlation analysis.

mice%in%  m=5,  "pmm", mai = 50, sd=2333, pint= FALSE)
#View fill results

# View the distribution of original data and interpolated data

sipt(mcod, pch=12)

# Fill data
mi_t <- complete
fir_aa$loe <- miout$guose

Delete duplicate lines

# Check for duplicate lines and delete duplicate lines

comd_ata <- comdta[!duplicated(), ]

View outliers

#View outliers






# View cigsPerDay
cigs_sub <- comled_dta
# View tothol and delete outliers
# View sysBP and delete outliers
# View BMI

totChol: the total cholesterol level greater than 240mg/dl is very high, so the record with the level of 600mg/dl is deleted. sysBP: remove the record of systolic blood pressure of 295mg/dl

# Delete outliers of each variable

# Categorical variable contingency analysis


cometddata %>% fitr %>% 

Known from the image, the glucose and hearRate variables have no significant risk







diaBP and sysBP have multicollinearity problems.  

The currentSmoker variable may not be significant, so go to the model section below.


# Partition dataset

split = sample.split

train = subset

logistic regression

# Logistic regression model - use all variables
fultaog = glm


fldaog = glm

prdts = predict
glm_le <- table


Random forest

rfoel <- randomForest
# Gain importance

# Select important factors
rfmdel <- randomForest
# error

# Acquisition importance
ggplot +

There is an error in the risk of disease, which does not decrease but increases. We need to explore the reasons

# Draw classified image
pdou_1<-predict  #Output probability
table <- table
sum(diag/sum #Prediction accuracy


support vector machines

# Model tuning first
tud <- tune.svm
summary(tud )

# Using turning function to get the best parameter setting support vector machine
mel.nd <- svm

# Call the predict function to predict the class label based on the newly configured SVM model:
sm.ne.ed <- predict
sv.tuedtble <- table

acy.s.vm <- sum(diag)/sum

Model diagnosis

According to the results of the above three models, it can be seen that the distribution of category number of prediction results is very uneven


sum(TeYaHD == 0)

In view of this phenomenon, methods need to be taken to balance the data set.

Most popular insights

1.Application case of multiple Logistic regression in R language

2.Implementation of panel smooth transfer regression (PSTR) analysis case

3.Partial least squares regression (PLSR) and principal component regression (PCR) in matlab

4.Case study of Poisson Poisson regression model in R language

5.R language mixed effect Logistic regression model analysis of lung cancer

6.Implementation of LASSO regression, Ridge ridge regression and Elastic Net model in r language

7.R language logistic regression, Naive Bayes, decision tree, random forest algorithm to predict heart disease

8.python uses linear regression to predict stock price

9.R language uses logistic regression, decision tree and random forest to classify and predict credit data sets

Keywords: R Language logistic regressive tecdat

Added by Mykasoda on Mon, 10 Jan 2022 12:05:56 +0200