Heart Disease Predictor

This Shiny app will classify a patient as being AT RISK or NOT AT RISK of being diagnosed with Heart Disease.

To obtain a prediction, provide the patient's characteristics through the inputs on this sidebar and click the 'Predict' button.

Show/hide Chest pain type info


1. Sensation in chest of squeezing, heaviness, pressure, weight, vise-like aching, burning, tightness.

2. Radiation to shoulder, neck, jaw, inner arm, epigastrium, band-like discomfort.

3. Lasts 3-15 minutes.

4. Abates when stressor is gone or nitroglycerin is taken.


1. Pain that is pleuritic, sharp, pricking, knife-like, pulsating, lancinating, choking.

2. Involves chest wall; is positional, tender to palpation; can be inframammary; radiation patterns highly variable.

3. Random onset

4. Lasts seconds, minutes, hours, or all day.

5. Variable response to nitroglycerin.


Patients were considered to have non-anginal discomfort if they had 1 of the defined characteristics of typical angina

Asymptomatic (silent):

Neither causing nor exhibiting symptoms of disease.

Show/hide Blood pressure info

Systolic Blood Pressure:

Between 90-120 mmHg: Normal

Between 120-139 mmHg: At Risk (prehypertension)

Above 140 mmHg: high risk

Diastolic Blood Pressure:

Between 60-80 mmHg: Normal

Between 80-89 mmHg: At Risk (prehypertension)

Above 90 mmHg: high risk

Show/hide Serum Cholesterol info

Less than 200 mg/dL: desirable

200-239 mg/dL: borderline high risk

240 and over: high risk

Probability of Heart Disease

The figure below shows the predicted probability a patient with the given characteristics will be AT RISK or NOT AT RISK.

Based on the provided threshold, a statement below the figure will classify the patient as AT RISK or NOT AT RISK of Heart Disease.

ROC Curve for Logistic Regression Model

The figure below shows the ROC curve for the logistic regression model used for predictions. Numbers below shows the performance metrics for the model.

Adjust the threshold through the slide-bar on the side panel on the left to see the impact to accuracy, sensitivity, and specificity.

Adjust Threshold slider input on the left Sidebar to obtain desired accuracy, sensitivity, and specificity

About The App

This R Shiny web app allows the user to perform heart disease prediction based on certain characteristics of heart disease. The app is developed based on logistic regression algorithm and using UCI machine learning data.

I would like to continue enhancing this app with many additional features and graphics. Stay tuned for updates.

Md Faisal Akbar
Coder | Researcher | useR
Github.io | Shiny Server | Facebook | Twitter | Linkedin