Согласно отчету Центров по контролю и профилактике заболеваний, сердечные заболевания являются главной причиной смерти как мужчин, так и женщин в Соединенных Штатах и ​​во всем мире. Существует несколько методов интеллектуального анализа данных, которые могут быть использованы исследователями / статистиками, чтобы помочь специалистам в области здравоохранения определять сердечные заболевания и их потенциальные причины. Некоторыми из значительных факторов риска, связанных с сердечными заболеваниями, являются возраст, артериальное давление, общий холестерин, диабет, гипертония, семейный анамнез сердечных заболеваний, ожирение, недостаток физических упражнений и т. Д.

В этом проекте от Data Camp цель моего проекта - построить регрессионную модель и провести статистические тесты, чтобы оценить, насколько сильно клинические факторы связаны с сердечными заболеваниями и как они связаны с более высокой вероятностью сердечного заболевания. Я буду реализовывать подходы множественной и логистической регрессии вместе с исследованиями данных в ggplot и dplyr. В этом проекте используется набор данных по сердечным заболеваниям Кливленда.

Вот краткий обзор имеющегося набора данных -

Словарь данных

В наборе данных 14 столбцов, которые изложены, как указано ниже -

а. Возраст: это непрерывный тип данных, который описывает возраст человека в годах.

б. Пол: это дискретный тип данных, который описывает пол человека. Здесь 0 = женский и 1 = мужской

c. CP (тип боли в груди): это дискретный тип данных, который описывает тип боли в груди со следующими параметрами: 1 = типичная стенокардия; 2 = атипичная стенокардия; 3 = неангинальная боль; 4 = асимптотический

d. Trestbps: это непрерывный тип данных, который описывает артериальное давление в состоянии покоя в мм рт.

е. Холестерин: это непрерывный тип данных, который описывает уровень холестерина в сыворотке в мг / дл.

f. FBS: это дискретный тип данных, который сравнивает уровень сахара в крови натощак человека с 120 мг / дл. Если FBS ›120, то 1 = истина, иначе 0 = ложь

грамм. ЭКГ покоя: это дискретный тип данных, который показывает результаты ЭКГ покоя, где 0 = нормально; 1 = аномалия ST-T; 2 = гипертрофия левого желудочка

час Thalach: это непрерывный тип данных, который описывает максимальную достигнутую частоту пульса.

я. Exang: это дискретный тип данных, в котором стенокардия, вызванная физической нагрузкой, отображается как 1 = Да и 0 = Нет.

j. Oldpeak: это непрерывный тип данных, который показывает депрессию, вызванную упражнениями, относительно веса.

k. Наклон: это дискретный тип данных, который показывает нам наклон сегмента пиковой нагрузки, где 1 = наклон вверх; 2 = плоский; 3 = наклонный

l. ca: Это непрерывный тип данных, который показывает количество крупных сосудов, окрашенных при рентгеноскопии, в диапазоне от 0 до 3.

м. Thal: это дискретный тип данных, который показывает нам талассемию, где 3 = нормальный; 6 = исправленный дефект; 7 = обратимый дефект.

п. Класс: это дискретный тип данных, где класс диагностики 0 = отсутствие присутствия, а 1–4 - диапазон для человека, страдающего сердечным заболеванием, от наименее вероятного до наиболее вероятного, 1 является наименее вероятным.

Преодоление данных

Поскольку переменная результата class имеет более двух уровней; Я создал новую переменную hd с помощью mutate () для представления двоичного результата 0/1, где любое значение ›0 будет равно 1, а все значения 0 останутся равными нулю. Кроме того, я переименовал уровни пола (первоначально 1 и 0) как Мужской / Женский для большей ясности.

Статистические тесты

Я провел статистические тесты, чтобы проверить, какие прогностические переменные тесно связаны с сердечными заболеваниями. В зависимости от типа данных (непрерывный / дискретный) я реализовал t-тест и тест хи-квадрат для получения p-значений.

В этом проекте я изучил, как пол, возраст и талах связаны с сердечными заболеваниями, как показано ниже:

Пол: поскольку пол - это двоичная переменная в этом наборе данных, подходящим тестом для этой переменной будет критерий хи-квадрат. Вот результат использования chisq.test () для оценки взаимосвязи между полом и HD (конечная переменная).

data:  hd_data$sex and hd_data$hd
X-squared = 22.043, df = 1, p-value = 2.667e-06

Возраст:. Поскольку возраст является непрерывной переменной, я использовал t.test (), чтобы определить взаимосвязь между возрастом и HD.

data:  hd_data$age by hd_data$hd
t = -4.0303, df = 300.93, p-value = 7.061e-05

Thalach: снова используйте t.test (), чтобы оценить взаимосвязь между thalach и hd.

data:  hd_data$thalach by hd_data$hd
t = 7.8579, df = 272.27, p-value = 9.106e-14

Графическая визуализация ассоциаций (потому что каждая картинка лучше рассказывает историю!)

Я построил коробчатую диаграмму для непрерывных переменных, таких как возраст и талах (максимальная частота пульса).

Гистограмма для пола, поскольку в этом наборе данных это двоичная переменная.

→ Графические графики выше и статистические тесты ясно показывают нам, что все три выбранные клинические переменные (возраст, пол, талах) в значительной степени связаны с нашим результатом, поскольку p-значение

Подбор модели логистической регрессии со всеми 3 переменными

Я применил здесь модель логистической регрессии, поскольку есть две прогнозирующие переменные и одна двоичная переменная результата. Эта модель поможет нам определить влияние максимальной частоты сердечных сокращений (талах), возраста и пола на вероятность сердечного заболевания.

модель ‹- glm (данные = hd_data, hd ~ возраст + пол + талах, семья =« биномиальная »)

# извлекаем сводку модели
сводку (модель)

Вот результат, как показано ниже после реализации модели -

Call:
glm(formula = hd ~ age + sex + thalach, family = "binomial", 
    data = hd_data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.2250  -0.8486  -0.4570   0.9043   2.1156  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  3.111610   1.607466   1.936   0.0529 .  
age          0.031886   0.016440   1.940   0.0524 .  
sexMale      1.491902   0.307193   4.857 1.19e-06 ***
thalach     -0.040541   0.007073  -5.732 9.93e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

Эту модель логистической регрессии можно использовать для прогнозирования вероятности сердечного заболевания у человека с учетом его возраста, пола и максимальной частоты сердечных сокращений. Кроме того, мы можем преобразовать прогнозируемую вероятность в правило принятия решения для клинического использования, определив значение отсечения на шкале вероятности. Например, если входит 45-летняя пациентка с максимальной частотой сердечных сокращений = 150, мы можем узнать прогнозируемую вероятность сердечного заболевания, создав новый фрейм данных, называемый newdata.

Мы видим, что модель сгенерировала вероятность сердечного заболевания 0,177 для 45-летней женщины с максимальной частотой сердечных сокращений 150, что указывает на низкий риск сердечных заболеваний.

Оценка производительности модели

Хотя эти прогнозные модели могут использоваться для прогнозирования вероятности возникновения события, очень важно проверить точность любой модели перед вычислением прогнозируемых значений. Некоторые из основных показателей, которые можно использовать для оценки этой модели, описаны ниже:

  1. Точность: это один из самых простых показателей, который показывает долю от общего числа верных прогнозов.
  2. Частота ошибок классификации. Ее можно рассчитать с точностью до единицы.
  3. Площадь под кривой ROC (AUC): это один из наиболее востребованных показателей, используемых для оценки. Он популярен, поскольку не зависит от изменения доли респондентов. Диапазон составляет 0–1. Чем ближе он к 1, тем лучше производительность модели.
  4. Матрица неточностей: это матрица N * N, где N - уровень результата. Эта метрика сообщает количество ложных срабатываний, ложных отрицаний, истинных положительных и истинно отрицательных результатов.

Результат

Из вышеприведенного вывода мы видим, что модель имеет общую точность 0,71. Кроме того, есть случаи, которые были неправильно классифицированы, как показано в матрице неточностей. Мы можем улучшить существующую модель, включив в нашу модель другие соответствующие предикторы из набора данных.

Заявление об ограничении ответственности: этот проект был разработан исключительно в образовательных целях и для того, чтобы укрепить мое понимание методов интеллектуального анализа данных. Он не предназначен для диагностики реальных сердечных больных. Проконсультируйтесь с вашим лечащим врачом за профессиональным советом.