Научная статья на тему 'РАЗРАБОТКА СКОРИНГОВОЙ КАРТЫ ДЛЯ ПРОГНОЗИРОВАНИЯ КЛИНИЧЕСКОГО ИСХОДА В ОТОРИНОЛАРИНГОЛОГИИ'

РАЗРАБОТКА СКОРИНГОВОЙ КАРТЫ ДЛЯ ПРОГНОЗИРОВАНИЯ КЛИНИЧЕСКОГО ИСХОДА В ОТОРИНОЛАРИНГОЛОГИИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
167
32
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГНОЗИРОВАНИЕ КЛИНИЧЕСКОГО ИСХОДА / ОЦЕНКА РИСКА / СКОРИНГОВАЯ КАРТА / СТРАТИФИКАЦИЯ РИСКА / ПРОГРАММНАЯ СРЕДА R / R-ЯЗЫК / МОДЕЛЬ ЛОГИСТИЧЕСКОЙ РЕГРЕССИИ / ВАЛИДАЦИЯ СКОРИНГОВОЙ КАРТЫ / CLINICAL OUTCOME PREDICTION / RISK ASSESSMENT / SCORECARD / RISK STRATIFICATION / R SOFTWARE ENVIRONMENT / R-LANGUAGE / LOGISTIC REGRESSION MODEL / SCORECARD VALIDATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Корнеенков Алексей Александрович

Методика позволяет создавать простые и эффективные оценочные или скоринговые карты предварительной оценки риска определенного клинического исхода у пациентов с оториноларингологической патологией. Для иллюстрации применяемых методов использованы виртуальные данные, сгенерированные на основе опубликованных результатов клинических исследований факторов риска осложнений при оперативном лечении пациентов, страдающих болезнью Меньера. Генерация виртуальной выборки обеспечивает воспроизводимость решения поставленных в исследовании задач. На основе логистической регрессионной модели клинического исхода с помощью процедуры шкалирования была разработана скоринговая карта для стратификации риска развития осложнения оперативных вмешательств. Для решения статистических задач была использована программная среда R-языка, которая в настоящее время считается наиболее мощным и гибким инструментом для проведения статистического анализа медицинских данных и визуализации его результатов. Описание задач сопровождается приведением полного программного кода R-языка, который может быть использован при воспроизведении результатов этого исследования и решении подобных задач на других исходных данных. Использованные пакеты программной среды R показали хорошую эффективность для решения подобных задач, визуализации ее результатов и валидации полученной скрининговой системы.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Корнеенков Алексей Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF A SCORECARD FOR PREDICTING CLINICAL OUTCOME IN OTORINOLARYNGOLOGY

The method makes it possible to create simple and effective assessment cards or scorecards of a preliminary assessment of risks of a certain clinical outcome in patients with otorhinolaryngological pathology. To illustrate the methods, we used virtual data generated on the basis of the published results of clinical studies of complications risk factors in the surgical treatment of patients with Meniere’s disease. The virtual fetching generation provides reproducibility of the solution of the problems set in the study. Based on a clinical outcome logistic regression model, using a scaling procedure, we developed a scorecard to stratify the risk of complications of surgical interventions. To solve statistical problems, we used the R-language software environment, which is currently considered the most powerful and flexible tool for statistical analysis of medical data and visualization of its results. The description of the tasks is accompanied by the introduction of R-language full program code which can be used to reproduce the results of this study and solve similar problems with other source data. The used R software packages have presented high efficacy in the solution of such problems, visualization of its results and validation of the obtained screening system.

Текст научной работы на тему «РАЗРАБОТКА СКОРИНГОВОЙ КАРТЫ ДЛЯ ПРОГНОЗИРОВАНИЯ КЛИНИЧЕСКОГО ИСХОДА В ОТОРИНОЛАРИНГОЛОГИИ»

УДК 519.237.5:303.714:004.43:616.2.81-008.55-089.168

https://doi.org/ 10.18692/1810-4800-2019-2-25-35

Разработка скоринговой карты для прогнозирования клинического исхода в оториноларингологии

А. А. Корнеенков1

1 Санкт-Петербургский научно-исследовательский институт уха, горла, носа и речи Минздрава России, Санкт-Петербург, 190013, Россия (Директор - засл. врач РФ, акад. РАН, проф. Ю. К. Янов)

Development of a scorecard for predicting clinical outcome in otorinolaryngology

A. A. Korneenkov1

1 Saint Petersburg Research Institute of Ear, Throat, Nose and Speech, the Ministry of Healthcare of Russia, Saint Petersburg, 190013, Russia

Методика позволяет создавать простые и эффективные оценочные или скоринговые карты предварительной оценки риска определенного клинического исхода у пациентов с оториноларингологической патологией. Для иллюстрации применяемых методов использованы виртуальные данные, сгенерированные на основе опубликованных результатов клинических исследований факторов риска осложнений при оперативном лечении пациентов, страдающих болезнью Меньера. Генерация виртуальной выборки обеспечивает воспроизводимость решения поставленных в исследовании задач. На основе логистической регрессионной модели клинического исхода с помощью процедуры шкалирования была разработана скоринговая карта для стратификации риска развития осложнения оперативных вмешательств. Для решения статистических задач была использована программная среда R-языка, которая в настоящее время считается наиболее мощным и гибким инструментом для проведения статистического анализа медицинских данных и визуализации его результатов. Описание задач сопровождается приведением полного программного кода R-языка, который может быть использован при воспроизведении результатов этого исследования и решении подобных задач на других исходных данных. Использованные пакеты программной среды R показали хорошую эффективность для решения подобных задач, визуализации ее результатов и валидации полученной скрининговой системы. Ключевые слова: прогнозирование клинического исхода, оценка риска, скоринговая карта, стратификация риска, программная среда R, R-язык, модель логистической регрессии, валидация скоринговой карты.

Для цитирования: Корнеенков А. А. Разработка скоринговой карты для прогнозирования клинического исхода в оториноларингологии. Российская оториноларингология. 2019;18(2):25-35. https://doi.org/ 10.18692/1810-4800-2019-2-25-35

The method makes it possible to create simple and effective assessment cards or scorecards of a preliminary assessment of risks of a certain clinical outcome in patients with otorhinolaryngological pathology. To illustrate the methods, we used virtual data generated on the basis of the published results of clinical studies of complications risk factors in the surgical treatment of patients with Meniere's disease. The virtual fetching generation provides reproducibility of the solution of the problems set in the study. Based on a clinical outcome logistic regression model, using a scaling procedure, we developed a scorecard to stratify the risk of complications of surgical interventions. To solve statistical problems, we used the R-language software environment, which is currently considered the most powerful and flexible tool for statistical analysis of medical data and visualization of its results. The description of the tasks is accompanied by the introduction of R-language full program code which ^

can be used to reproduce the results of this study and solve similar problems with other source data. The used R S

software packages have presented high efficacy in the solution of such problems, visualization of its results and S

validation of the obtained screening system. ^

Keywords: clinical outcome prediction, risk assessment, scorecard, risk stratification, R software environment, s

R-language, logistic regression model, scorecard validation. Я

a

For citation: Korneenkov A. A. Development of a scorecard for predicting clinical outcome in otorinolaryngology. Rossiiskaya otorinolaringologiya. 2019;18(2):25-35. https://doi.org/ 10.18692/18104800-2019-2-25-35

3

о

© А. А. Корнеенков, 2019 ^ 25

Введение

Скоринг (от англ. scoring - подсчет очков в игре) в медицине - это модель классификации пациентов на группы по диагнозу или риску клинического исхода на основе скоринговых баллов. По каждому отобранному в модель и имеющемуся у пациента симптому присваиваются очки, суммируются в общий скоринговый балл, который сравнивается с заданным пороговым значением. Если полученный итоговый скоринговый балл больше установленного порогового значения, то пациент классифицируется в одну группу, если меньше -в другую.

В клинической практике хорошо известны простые и достаточно эффективные в использовании оценочные или скоринговые карты предварительной оценки риска неблагоприятного исхода или определенной болезни у обследуемых пациентов [5]: QRISK2, SAPS (simplified acute physiology score), APS (acute physiological score), LODS (Logistic Organ Dysfunction system), SOFA (Sequential Organ Failure Assessment), OASIS (Oxford Acute Severity of Illness Score) и qSOFA и др. Однако, несмотря на визуальную простоту скоринговой карты, ее разработка представляет собой сложный многоэтапный процесс, который в отечественной медицинской литературе не описан. В настоящем исследовании для создания скоринговой карты использован R - язык программирования для статистической обработки данных и работы с графикой, свободно доступный по адресу https://cran.r-project.org. Синтаксис R для общего процесса управления данными и статистического анализа подробно документирован, что играет решающую роль во время пересмотра статьи и перекрестной проверки результатов исследования.

Цель исследования

Разработка пошагового руководства для создания скоринговой карты для оценки риска определенного клинического исхода в оториноларингологии средствами программной среды R.

Материалы и методы исследования

Для иллюстрации применяемых методов ис-а пользованы виртуальные данные, сгенерированные на основе опубликованных результатов ~ клинических исследований факторов риска ос-s^ ложнений при оперативном лечении пациентов, ^ страдающих болезнью Меньера [1]. Генерация ^ виртуальной выборки обеспечивает воспроизво-'С димость данных и решения всех поставленных

0 задач.

1

Результаты и обсуждение § Генерация исходных данных предусматри-(§ вает использование программного кода R-языка

(табл. 1), который создает таблицу с данными о пациентах, содержащую пять переменных, включая бинарный (дихотомичный) результат операции - «Исход» (outcome), две числовые переменные («Возраст», «СКУ») и две категориальные переменные («Рвота», «Спонтанный нистагм»). Переменная «Возраст» (age) отражает возраст пациента в годах и переменная «СКУ» (sku) (сводный коэффициент устойчивости - СКУ) представляет собой суммарный показатель отклонения центра тяжести в ответ на различные динамические стимулы, дающий комплексное представление о состоянии статического и динамического равновесия человека (%). Переменная «Рвота» (vomitus) имеет два уровня: «no», «yes» (т. е. отсутствие признака и его наличие). Переменная «Спонтанный нистагм» (nystagmus) также имеет два уровня: «no», «yes». Значение переменной «Исход» равное 1 соответствует наличию осложнения операции, 0 - его отсутствию.

Описание программы следующее. Строка 1 вызывает функцию «library» для загрузки пакета «dummies» в программу R. В строке 2 с помощью функции «set.seed» устанавливается произвольное значение переменной генератора случайных чисел, чтобы сделать результаты полностью воспроизводимыми. Строка 3 устанавливает размер генерируемой выборки (150 наблюдений). В строке 4 присваивается значение свободному члену регрессионного уравнения (b0). Строки 5 и 6 генерируют количественные переменные: «Возраст» и «СКУ», которые распределены по нормальному закону распределения со средним значением 46,3 года и 65,6%, а также стандартным отклонением 10 лет и 2,7% соответственно. В строке 7 создается факторная переменная -«Спонтанный нистагм» с двумя уровнями «no», «yes», количеством наблюдений n (строка 8), с заменой имеющихся значений вставляемыми (строка 9) и соответствующими пропорциями каждого из двух уровней (строка 10). В строках 11-14 таким же образом создается факторная переменная «Рвота». В строке 15 уровни этой переменной переопределяются, базовым уровнем назначался «yes». Строка 16 создает линейный предиктор «lp» уравнения логистической регрессии. Функция «dummy» используется для преобразования факторной переменной в фиктивные или «дамми» (dummy) переменные. Символом «%*%» обозначается матричный оператор умножения. Для каждой переменной задается линейный предиктор. Например, коэффициент 2,5, соответствующий уровню «yes» (строка 16) переменной «Спонтанный нистагм», интерпретируется как увеличение линейного предиктора на 2,5 единицы для значения «yes», по сравнению с «no». Строка 17 преобразует линейный предиктор в вероятность интересующего исхода посредством

Т а б л и ц а 1

Программный код создания виртуальной выборки

T a b l e 1

R codes for data simulation

Строка Программный код R-языка

1 library(dummies)

2 set.seed(3 0)

3 n <- 150

4 b0 <- 22

5 age <- round(rnorm(n, mean = 46.3, sd = 10))

6 sku <- round(rnorm(n, mean = 65.6, sd = 2.7),1)

7 NYSTAGMUS <- as.factor(sample(x = c("no", "yes"),

8 size = n,

9 replace = TRUE,

10 prob = c(0.42, 0.58)))

11 VOMITUS <- as.factor(sample(x = c("no", "yes"),

12 size = n,

13 replace = TRUE,

14 prob = c(0.47, 0.53)))

15 VOMITUS <- relevel(VOMITUS, ref = "yes")

16 lp <- b0 + 0.12*age - 0.41*sku + cbind(1, dummy(NYSTAGMUS)[, -1]) %*% c(0.001,

2.5) - cbind(1,dummy(VOMITUS)[,-1]) %*% c(0,2.2) + 0.001*ageA2 - 0 001*skuA2

18 pi.x <- exp(lp)/(1 + exp(lp))

19 OUTCOME <- rbinom(n = n, size = 1, prob = pi.x)

20 df <- data.frame(OUTCOME, age, sku, NYSTAGMUS, VOMITUS)

21 df$dataset <- sample(x = c("train", "validate"),

22 size = n,

23 replace = TRUE,

24 prob = c(0.75, 0.25))

25 f.y <- glm(OUTCOME~age + sku + NYSTAGMUS + VOMITUS, data = df, family = "binomial")

26 summary(f.y)

логит-преобразования, а строка 18 генерирует переменную исхода, которая распределена по биномиальному распределению. Строка 19 объединяет все переменные в фрейм данных (data frame). Весь набор данных с помощью функции «sample» разделяется на подмножества данных для обучения и для валидации (строки 20-23). Три четверти всего набора сгенерированных данных используется для обучения модели (строка 23), а оставшаяся четверть используется для ее валидации. С помощью кода в строке 24 формируется обобщенная линейная модель «glm» под именем «f.m», по которой для общего контроля процесса c помощью функции «summary» (строка 25) выводятся коэффициенты и показатели созданной модели.

В основе скоринговой карты чаще всего лежат модель логистической регрессии и ее коэффициенты. Логистическая регрессия формирует коэффициенты регрессии (и их стандартные ошибки и уровни значимости) по формуле логит-преоб-разования вероятности интересующего значения переменной исхода:

logit(p) = ь0 + ц хх + ь2х2 + ь3х3+ ... +ькхк,

где р - вероятность наличия признака, представляющего интерес; Ь - коэффициенты модели; X -значения предикторов. Логит-преобразование определяется так же, как логарифм шансов:

^И(р) = 1п ^ ^.

Модель может использоваться для расчета вероятности интересующего исхода (р) для заданных значений предсказывающих переменных - ^ предикторов. 8

е(1о§Н(р)) Ц

р = х + е(1оёН(р)) . «I

о

Далее определенным значениям вероятности О интересующего исхода назначается также определенная скоринговая оценка (балл). Кроме того, ^ определяется пороговое значение, по которому д те пациенты, у кого скоринговая оценка ниже по- ^ рогового значения, в нашей задаче классифици- ^ руются как пациенты с осложнением, а пациенты |

с оценкой выше порога классифицируются как пациенты без осложнения оперативного вмешательства.

Создавая скоринговую карту, необходимо решить две специфические задачи: преобразования количественных предикторов в категориальные и масштабирования скоринговой карты. Масштабирование или шкалирование не влияет на прогностическую силу скоринговой карты [4], это косметическая процедура, выполняемая для улучшения удобства, понимания и интерпретации скоринговой карты. Масштабирование может быть реализовано с использованием различных подходов, которые невозможно привести в рамках одной статьи. Мы коснемся масштабирования только одного коэффициента скоринговой карты - базового количества баллов (basepoints), к которому добавляются скоринговые баллы, соответствующие значениям предикторов. Для расчета этого коэффициента используются рассчитанный по логистической модели свободный член Ь0 и заранее заданные константы: 1) количество баллов, соответствующее удвоению шансов интересующего исхода, - «pdo» («points to double the odds») (обычно, pdo = 50); 2) «pointsO» - значение баллов (обычно 600), при котором наблюдаются определенные целевые шансы исхода «odds_0» (например, шанс 1/19 означает, что на один интересующий нас исход приходится 19 альтернативных исходов). Кроме того, ниже приведено уравнение для расчета базового количества баллов:

basepoints = points0 - pdo:

(b0 - ln(odds0)) ln(2) "

Например, при bo = 0,56, pointso = 600, pdo = 50/ln(2) = 72,1, ln(odds0) = ln(1/19) = -2,9

базовое количество баллов составит 427,7 (или округленно до целого - 428 баллов).

Именно это значение используется в скорин-говой карте, созданной с помощью нижеприведенного программного кода (табл. 2).

В представленном выше программном коде используется несколько функций, специально созданных в пакете «scorecard» [3]. Функция «scorecard» создает скоринговую карту на основе результатов выполнения функций «woebin» и «glm». Функция «split_df» случайным образом разделяет набор данных на основе переменной исхода с соотношением 0,6 : 0,4 (или, что то же самое, в процентах - 60 : 40). Аргумент «seed» обеспечивает воспроизводимость результатов разделений при следующем запуске функции. Если в качестве «seed» при запуске кода будет задано то же число (в нашем случае 30), результаты разделения будут идентичны.

Функция «woebin» генерирует оптимальное разделение количественных переменных на уровни, т. е. производит категоризацию количественной переменной (используется также термин «биннинг», от англ. binning). Функция «woebin_ply» конвертирует исходные входные данные в значение «woe» на основе категорий «bin», генерируемых «woebin». Функция «glm» используется для создания логрегрессионной модели с указанием формулы линейного предиктора (OUTCOME—.), семейства моделей (binomial) и источника данных для этой модели (train_woe). Функция «step» отбирает наиболее подходящую модель на основе информационного критерия Акаике (AIC, от англ. an information criterion). В строке 12 функция «scorecard» создает скорин-говую карту, основанную на результатах вы-

Программный код создания скоринговой карты R codes for creating scorecards

' а б л и ц а 2 T a b l e 2

Строка

Программный код R-языка

f

1 S-

•S

'С о

■uj

0

1

о

1 2

3

4

5

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

6

7

8

9

10 11 12

library(scorecard)

df.sc <- subset(df, select = c(OUTCOME, age, sku, NYSTAGMUS, VOMITUS)

mod <- glm(OUTCOME df.sc, family = "binomial")

dt_list = split_df(df.sc, y = "OUTCOME", ratio = 0.6, seed = 30)

train = dt_list$train; test = dt_list$test;

bins = woebin(df.sc, y = "OUTCOME")

train_woe = woebin_ply(train, bins)

test_woe = woebin_ply(test, bins)

m1 = glm(OUTCOME ~ ., family = binomial(), data = train_woe) m_step = step(m1, direction="both", trace = FALSE) m2 = eval(m_step$call) card = scorecard(bins, m2)

Т а б л и ц а 3

Программный код для печати коэффициентов скоринговой карты

T a b l e 3

R codes for printing scorecards

Строка Программный код R-языка

1 printList <- function(list) {

2 for (item in 1:length(list)) {

3 print(head(list[[item]]))

4 }

5 }

6 printList(card)

полнения функций «шоеЫп» и <^1т». Затем на основе полученной скоринговой карты функция <^согеса^_р1у» вычисляет скоринговый балл для каждого пациента в выборке.

С помощью приведенной ниже функции (табл. 3) получены коэффициенты для скоринго-вой таблицы.

На рис. 1 представлен возможный вид ско-ринговой карты с примером для расчета баллов и классификации пациента по риску осложнения операции (пациент 46 лет, СКУ - 60%, рвота и спонтанный нистагм отсутствуют, результат -риск осложнения операции высокий).

Для того чтобы представить связь количества скоринговых баллов с вероятностью интересующего нас исхода в виде визуально удобной диа-

граммы, был выполнен программный R-код по подготовке данных (табл. 4). Функция «scorecard_ ply» рассчитывает скоринговые баллы по скоринговой карте «card», полученной ранее функцией «scorecard» (строка 1) и вставляет их в таблицу «score_tbl». Аргумент «only_total_score» отвечает за представление только итоговых баллов из расчета. Если этот аргумент установлен как TRUE, то вывод включает только общую сумму баллов. Если FALSE, вывод включает как итоговую сумму баллов, так и рассчитанные баллы для каждой переменной. В строке 2 функцией «cbind» объединяются данные из таблиц «score_tbl» и «df.sc». В строках 3-6 в таблицу вводится новая переменная «dataset» со значениями «train» и «validate», распределенными случайным обра-

ОЦЕНОЧНАЯ КАРТА

РИСКА ОСЛОЖНЕНИЙ

ПРИ ОПЕРАЦИОННОМ ВМЕШАТЕЛЬСТВЕ

БАЗОВЫЙ БАЛЛ - 428

Признак Атрибут Балл Значение Баллы для

атрибута для пациента

пациента

Возраст, лет <41 261

41-54 -6 46 лет -6

54-58 -125

>58 -368

СКУ, % <61,8 -291 60% -291

61,8-65,4 -27

65,4 - 66 -187

>66 163

Рвота есть -59

нет 69 нет 69

Спонтанный нет 150 нет 150

нистагм

есть -99

Общий балл 428-78=350

Результат: 350<600 - Риск осложнения операции высокий

Рис. 1. Форма скоринговой карты. Fig. 1. Scorecard.

о

1

о

о

S' о

¿о

0 С?

зом с вероятностью 0,75 и 0,25 соответственно. Таким образом, после выполнения этой процедуры имеется набор данных с исходными переменными, рассчитанными скоринговыми баллами и, переменной «dataset», которая случайным образом разделяет этот набор данных на две выборки: «train» и «validate», использующиеся в последующих расчетах для валидации скоринговой карты.

Модель логистической регрессии подгоняется функцией «glm», с аргументом «binomial», определяющим используемое семейство биномиальных моделей (строки 7 - 9). Объект «newx» (строка 10) представляет собой вектор значений скоринго-вых баллов от минимального до максимального с возрастающим шагом, равным 1. Функция «pred» используется для оценки вероятности интересующего исхода при каждом значении скорингового балла (строка 12). Тип предсказания, по умолчанию, находится в шкале или масштабе линейного предиктора. Для вывода стандартной ошибки (SE) аргументу «se.ft» присваивается TRUE (сокращенно «Т») (строка 15).

Объект «count» - это матрица, содержащая количество хороших и плохих исходов для каждого диапазона значений итоговых скоринговых баллов (строки 10-14). Эти диапазоны были получены разбивкой диапазона значений скоринговой оценки с помощью функции «seq», по 50 скорин-

говых баллов в каждом диапазоне (by = 50) (строка 19).

Для визуализации ассоциации скоринговых баллов и вероятности исхода с помощью кода R-языка (табл. 5) была построена столбиковая диаграмма (barplot), на которой отображалось число хороших (good) и плохих (bad) исходов, стратифицированных по количеству скоринговых баллов. На этой же диаграмме в виде линейного графика показана вероятность интересующего исхода.

Функция «par» используется для установки графических параметров, в частности полей (или отступов) с четырех сторон графика в виде числа строк (чем больше строк, тем больше ширина поля) (строка 1). Первый аргумент «barplot» - это матрица значений для столбиковой диаграммы (строка 2). Значения в столбцах матрицы соответствуют высоте столбиков диаграммы. Аргумент «col» задает вектор цветов для столбцов или их составных частей (строка 7). Функция «legend» -добавляет легенду к диаграмме (строки 8-13). Легенда добавляется в левый верхний угол, а меткам исходов («Non-complication» и «Complication») присваиваются желтый и светло-голубой цвета соответственно. Аргументы функции «legend» дают описания столбиков и линий графика, представленных на диаграмме. Параметр «border» определяет цвета границ прямоугольников с цветовым

Программный код подготовки данных для визуализации Data preparation for visualization

Т а б л и ц а 4 T a b l e 4

f I

s-

"o

•S

'Si о

0

1

Ai

о

с*

Строка Программный код R-языка

1 score_tbl = scorecard_ply(df.sc, card, only_total_score = F)

2 df.f <- cbind(score_tbl, df.sc)

3 df.f$dataset <- sample(x = c("train", "validate"),

4 size = nrow(df.f),

5 replace = TRUE,

6 prob = c(0.75,0.25))

7 glmod <- glm(formula = OUTCOME ~ score,

8 df.f[df.f$dataset == "train",],

9 family = "binomial")

10 newx <- seq(min(df.f[df.f$dataset == "train",]$score),

11 max(df.f[df.f$dataset == "train",]$score))

12 prd <- predict(glmod,

13 newdata = data.frame(score = newx),

14 type = "response",

15 se.fit = T)

16 count <- as.matrix(table(cut(df.f[df.f$dataset == "train",]$score,

17 breaks = seq(min(df.f[df.f$dataset == "train",]$score),

18 max(df.f[df.f$dataset == "train",]$score),

19 by = 50),

20 include.lowest = T),

21 df.f[df.f$dataset == "train",]$OUTCOME))

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

наполнением столбиков (строка 13). Аргументу «new» в функции «par» присваивается TRUE, чтобы результаты выполнения последующих команд не приводили к очищению предыдущих результатов на диаграмме (строка 14). Это важно, если необходимо построить два графика на одной и той же диаграмме. Значения предсказанной вероятности построены по отношению к значениям скоринговых баллов (строки 15-18). Оси x и y на диаграмме не выводятся (строка 17), и названия обеих осей не указываются (строка 18). Функция «polygon» рисует доверительный интервал предсказанной вероятности исхода (строка 19). Нижняя и верхняя границы доверительного интервала вероятности исхода обозначаются штриховыми линиями (строки 24-27). Функция «axis» добавляет к текущему графику с правой стороны ось, которая соответствует шкале предсказанной вероятности (строка 28). Функция «mtext» добавляет текст к текущему графику (строка 29).

Аргумент «line = 3» указывает, что текст добавляется к третьей строке этого поля. Счет маргинальных строк (т. е. по краям, на границах графика) начинается с 0, кнаружи (строка 30).

Результаты показаны на рис. 2.

Оценка валидности разработанной модели является обязательным этапом любого моделирования. В пакет scorecard встроены некоторые из этих методов: статистика Колмогорова-Смирнова (Kolmogorov-Smirnov statistic (KS), AUC (area under curve), PSI (population stability index). Ниже представлены программные коды для проверки модели встроенными в этот пакет функциями (табл. 6)

В строках 1-2 выполняется расчет прогностических значений моделей с помощью функции «predict». Функция «perf_eva» вычисляет статистику Колмогорова-Смирнова (Kolmogorov-Smirnow (KS), AUC и другие показатели. Функция «perf_ psi» вычисляет индекс стабильности популяции

Т а б л и ц а 5 T a b l e 5

Программный код для построения диаграммы R codes for creating graphs

Строка

Программный код R-языка

1 2

3

4

5

6

7

8

9

10 11 12

13

14

15

16

17

18

19

20 21 22

23

24

25

26

27

28

29

30

par(mar = c(5,4,4,5) + .1) barplot(t(count), main = "Scores versus probability of complication", xlab = "Scores",

ylab = "Observed number of patients", space = 0,

col = c("yellow", "lightblue")) legend("topleft", fill = c("yellow", "lightblue",NA) lty = c(NA, NA ,1), lwd = c(NA, NA, 2), legend = c("Non-complication", "Complication", "Predicted Prob."), col = c("black"),

border = c("black", "black", NA)) par(new = TRUE) plot(prd$fit~newx, type = "l", col = "black", lwd = 2, xaxt = "n", yaxt = "n", xlab = "", ylab = "") polygon(c(rev(newx), newx), c(rev(prd$fit + 1.96*prd$se.fit), prd$fit - 1.96*prd$se.fit), col = adjustcolor('grey80', alpha = 0.5), border = NA) lines(newx, prd$fit + 1.96*prd$se.fit,

lty = 'dashed', col = 'red') lines(newx, prd$fit - 1.96*prd$se.fit,

lty = 'dashed', col = 'red') axis(4)

mtext("Predicted probability of complication", side = 4, line = 3)

Рис. 2. Соотношение скоринговых баллов и вероятности интересующего исхода (ось х - интервалы значений скоринговых баллов, ось y слева - количество пациентов, ось y справа - предсказанная вероятность исхода). Fig. 2. Predicted probability of complication versus the number of observed complication and non-complication.

Программный код для расчетов KS и ROC R codes for calculating ROC and KS statistics

Т а б л и ц а 6 T a b l e 6

Строка Программный код R-языка

1 train_pred = predict(m2, train_woe, type = 'response')

2 test_pred = predict(m2, test_woe, type = 'response')

3 train_perf = perf_eva(train$OUTCOME, train_pred, title = "train")

4 test_perf = perf_eva(test$OUTCOME, test_pred, title = "test")

5 train_score = scorecard_ply(train, card, print_step = 0)

6 test_score = scorecard_ply(test, card, print_step = 0)

7 perf_psi(score = list(train = train_score, test = test_score),

8 label = list(train = train$OUTCOME, test = test$OUTCOME))

PSI (population stability index). На рис. 3 представлены диаграммы функций распределения «хороших» (good) и «плохих» (bad) исходов, на основе статистики Колмогорова-Смирнова (KS) и ROC-анализа с расчетом AUC (area under curve) для об-,2 учающей (train) и тестовой (test) выборки. По оси Ц> ординат откладывается кумулятивная пропорция "С для «плохих» и «хороших» исходов, по оси аб-"о сцисс - пропорция от популяции. На диаграмме С представлено несколько линий: 1) кумулятивная пропорция «хороших» исходов; 2) кумулятивная ^ пропорция «плохих» исходов; 3) KS-статистика. KS-статистика - это максимальная разница между кумулятивными пропорциями для «плохих» S и «хороших» исходов. Чем дальше друг от друга

находятся две линии, тем больше степень дифференциации между накопленным (кумулятивным) процентом «плохих» и «хороших» исходов и, следовательно, лучше (точнее) модель.

Например, можно увидеть, что по обучающей выборке KS-статистика составляет около 0,74, а для тестовой - 0,88. Один из показателей, характеризующих дискриминационную способность модели, AUC (area under curve) для обучающей и тестовой выборки составляет значительные 0,94 и 0,95 соответственно.

Для более серьезной оценки валидности модели недостаточно методов, встроенных в пакет «scorecard». Для этой цели можно рекомендовать пакет «rms» [2], который предлагает множество

Рис. 3. Оценка функций распределения хороших и плохих исходов на основе статистики Колмогорова-Смирнова (KS) и ROC

анализа с расчетом AUC (area under curve) для обучающей (train) и тестовой (test) выборки. Fig. 3. Evaluation of the distribution of good and bad outcomes, based on Kolmogorov-Smirnov statistics (KS) and ROC analysis with the calculation of AUC (area under curve) for training (train) and test (test) samples.

инструментов для создания и оценки регрессионных моделей в R. Он сопровождает книгу Фрэнка Харрелла, которая является великолепным изданием для всех, кто работает в области «data science».

Валидация модели включает оценку дискриминационной способности модели и калибровку. Для получения этих показателей исходные данные специальным образом подготавливаются с помощью метода бутстрапа (bootstrap methods), который в настоящее время является методом выбора для решения подобных задач.

Применительно к нашей задаче в начале моделирования исходный набор данных (original

sample) был случайным образом в соотношение 75 : 25 разделен на две выборки: обучающую (модель) выборку (training sample) и тестовую выборку (test sample). Считается, что модель по обучающей выборке имеет лучшие значения показателей производительности, поэтому она обладает определенным оптимизмом по сравнению с моделью, полученной на тестовой выборке. Разница показателей производительности для обучающей и тестовых выборок называется оптимизмом (optimism) модели, и для получения откорректированного показателя (corrected index) значение оптимизма вычитается из показателя,

о

s

рг

1

о

0

т 3

f

01

т

If

Т а б л и ц а 7

Программный код для валидации скоринговой модели

T a b l e 7

R codes for scoring model validation

Строка Программный код R-языка

1 library(scorecard)

2 glmod <- lrm(formula = OUTCOME ~ score,

3 data = df.f[df.f$dataset == "train",])

4 cal <- calibrate(glmod, B = 200)

5 plot(cal)

6 options(prType = 'latex')

7 v <- validate(glmod, B = 200)

8 print(v, digits = 3)

(0 4 P. о

ЧЯНН III Mini I........Illll II II II II 1 Mil 1 ......Ill III Ml .......... II II 1 111111.,--'

Apparent

Bias-corrected

Ideal

0.0

0.2

B= 200 repetitions, boot

0.4 0.6

Predicted Pr{OUTCOME=1}

0.8

1.0

Mean absolute error=0.02 n=150

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 4. Калибровочная кривая (КК) для модели исхода (Apparent - КК по оригинальному набору данных, Bias-corrected - скорректированная на оптимизм КК, Ideal - идеальная КК, линия под углом 45°). Fig. 4. Calibration Curve for model.

Т а б л и ц а 8

Статистика валидации модели

T a b l e 8

Validation scorecard

о

о £

CD

I

о

Показатель Для исходного набора данных Для обучающей выборки Для пробной выборки Значение «оптимизма» Скорректированный показатель n

Dxy 0,878 0,890 0,866 0,024 0,855 200

R2 0,697 0,719 0,680 0,039 0,658 200

Intercept 0,000 0,000 -0,003 0,003 -0,003 200

Slope 1,000 1,000 0,867 0,133 0,867 200

Emax 0,000 0 0,000 0,032 0,032 0,032 200

D 0,709 0,743 0,683 0,059 0,650 200

U -0,013 -0,013 0,009 -0,023 0,009 200

Q 0,723 0,756 0,674 0,082 0,641 200

B 0,098 0,090 0,104 -0,014 0,112 200

g 4,045 4,539 3,824 0,715 3,330 200

gp 0,413 0,416 0,408 0,008 0,405 200

полученного на оригинальной выборке. В табл. 7 приведен программный код для валидации ско-ринговой модели.

Результаты показаны на рис. 4.

Прогнозируемая вероятность исхода (Predicted Pr{OUTCOME=1}) строится на фоне наблюдаемой вероятности (Actual Probability), а отклонение от идеальной линии указывает на разницу между прогнозируемыми и наблюдаемыми рисками.

Близость калибровочной кривой к диагональной линии 45° демонстрирует приемлемую валидацию по шкале абсолютной вероятности. В табл. 8 представлены показатели дискриминационной способности полученной модели.

Например, Dxy - ранговая корреляция Сомерса (Somers' D) между прогнозируемой вероятностью осложнения (OUTCOME = 1) и наблюдаемым исходом; D - показатель дискриминации - отношение правдоподобия модели х2, деленное на размер выборки; R2 - псевдоR-квадрат (R2 Nagelkerke-Cox-Snell-Maddala-Magee), коэффициент детерминации модели. Более подробную информацию о пред-

ставленных валидационных показателях можно почерпнуть из описания пакета rms (https://cran.r-project.org/web/packages/scorecard/scorecard.pdf). Основные показатели демонстрируют приемлемую оценку валидации модели.

Заключение

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

Автор заявляет об отсутствии конфликта интересов.

ЛИТЕРАТУРА/REFERENCES

1. Корнеенков А. А., Лиленко С. В., Лиленко А. С., Вяземская Е. Э., Бахилин В. М. Использование модифицированной процедуры последовательного распознавания Вальда для определения исхода оперативного лечения у пациентов с болезнью Меньера. Российская оториноларингология. 2018;3(94):54—59. doi: 10.18692/18104800-2018-3-54-59 [Komeenkov A. A., Lilenko S. V., Lilenko A. S., Vyazemskaya E. E., Bakhilin V. M. Use of the modified procedure of Wald's sequential probability ratio test for determining the outcome of a surgical treatment in patients with Meniere's disease. Rossiiskaya otorinolaringologiya. 2018;3(94):54-59]. (In Russ.) doi: 10.18692/18104800-2018-3-54-59

2. Package 'rms' January 7, 2018. Version 5.1-2. Date 2018-01-06 Title Regression Modeling Strategies Author Frank E Harrell Jr. - Режим доступа: https://cran.r-project.org/web/packages/rms/rms.pdf. - Загл. с экрана.

3. Package 'scorecard' September 11, 2018 Version 0.1.9 Title Credit Risk Scorecard. - Режим доступа: https://cran.r-project.org/web /packages/scorecard/scorecard.pdf - Загл. с экрана.

4. Siddiqi N. Credit Risk Scorecards: Developing and Implementing Intelligent Credit Scoring. John Wiley & Sons, 2005. 208 p.

5. Zhang Z., Zhang H., Khanal M. K. Development of scoring system for risk stratification in clinical medicine: a step-by-step tutorial. Annals of Translational Medicine. 2017;5;21:436. (doi: 10.21037/atm.2017.08.22)

Информация об авторе

H Корнеенков Алексей Александрович - доктор медицинских наук, профессор, заведующий лабораторией информатики и статистики, Санкт-Петербургский научно-исследовательский институт уха, горла, носа и речи Минздрава России (190013, Россия, Санкт-Петербург, Бронницкая ул., д. 9); тел. +7(904)554-07-40, e-mail: korneyenkov@gmail.com ORCID: http://orcid.org/0000-0001-5870-8042

Information about the author о

Сл

H Alexei A. Korneenkov - MD, Professor, Head of the Laboratory of Informatics and Statistics, Saint Petersburg Research Institute T.

of Ear, Throat, Nose and Speech Ministry of Healthcare of Russia (190013, Russia, St. Petersburg, Bronnitskaya ul., 9); tel. +7 (904) 554- ^

07-40, e-mail: korneyenkov@gmail.com y

ORCID: http://orcid.org/0000-0001-5870-8042 »

о

S f

If

y

i Надоели баннеры? Вы всегда можете отключить рекламу.