Научная статья на тему 'ПОРЯДКОВАЯ РЕГРЕССИЯ В ПРОГРАММНОЙ СРЕДЕ R - КРАТКИЕ РЕКОМЕНДАЦИИ ДЛЯ МАГИСТРАНТОВ И ДОКТОРАНТОВ ПО СПЕЦИАЛЬНОСТИ "МЕДИЦИНА" И "ОБЩЕСТВЕННОЕ ЗДРАВООХРАНЕНИЕ"'

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

CC BY
578
128
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОРЯДКОВАЯ РЕГРЕССИЯ / СИНТАКСИС / ЛИСТИНГ / МОДЕЛИРОВАНИЕ / ВАЛИДАЦИЯ / ORDINAL REGRESSION / SYNTAX / LISTING / MODELING / VALIDATION / РЕТТіК РЕГРЕССИЯ / МОДЕЛДЕУ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Егошин В.Л., Саввина Н.В., Гржибовский А.М.

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Егошин В.Л., Саввина Н.В., Гржибовский А.М.

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

MULTIVARIABLE ORDINAL REGRESSION IN R: BRIEF GUIDELINES FOR MASTER AND DOCTORAL STUDENTS IN MEDICINE AND PUBLIC HEALTH

In this paper we describe basic principles of using R package for multivariable ordinal regression analysis. We present step-by-step guidelines and syntax for creation and evaluation of regression models using practical example with real data from a population-based cross-sectional study in the Almaty region. In addition to the syntax we present R outputs and their interpretation

Текст научной работы на тему «ПОРЯДКОВАЯ РЕГРЕССИЯ В ПРОГРАММНОЙ СРЕДЕ R - КРАТКИЕ РЕКОМЕНДАЦИИ ДЛЯ МАГИСТРАНТОВ И ДОКТОРАНТОВ ПО СПЕЦИАЛЬНОСТИ "МЕДИЦИНА" И "ОБЩЕСТВЕННОЕ ЗДРАВООХРАНЕНИЕ"»

МЕТОДОЛОГИЧЕСКАЯ СТАТЬЯ

УДК 614.2:004.657 МРНТИ 76.75.33, 14.35.07

ПОРЯДКОВАЯ РЕГРЕССИЯ В ПРОГРАММНОЙ СРЕДЕ R -КРАТКИЕ РЕКОМЕНДАЦИИ ДЛЯ МАГИСТРАНТОВ И ДОКТОРАНТОВ ПО СПЕЦИАЛЬНОСТИ «МЕДИЦИНА» И «ОБЩЕСТВЕННОЕ

ЗДРАВООХРАНЕНИЕ»

В.Л. ЕГОШИН1, Н.В. САВВИНА2, А.М. ГРЖИБОВСКИЙ^23

Северный государственный медицинский университет, Архангельск, Россия

Северо-Восточный федеральный университет, Якутск, Россия Казахский Национальный университет им. Аль-Фараби, Алматы, Казахстан

Егошин В.Л. - http://orcid.org/0000-0002-8407-3789 Саввина Н.В. - http://orcid.org/0000-0003-2441-6193 Гржибовский А.М. - https://orcid.org/0000-0002-5464-0498

Multivariable ordinal regression in R: brief guidelines for Master and Doctoral students in Medicine and Public Health

V.L. Egoshin1, N.V. Savvina2, A.M. Grjibovski123 Northern State Medical University, Arkhangelsk, Russia North-Eastern Federal University, Yakutsk, Russia Al-Farabi Kazakh National Medical University, Almaty, Kazakhstan

In this paper we describe basic principles of using R package for multivariable ordinal regression analysis. We present step-by-step guidelines and syntax for creation and evaluation of regression models using practical example with real data from a population-based cross-sectional study in the Almaty region. In addition to the syntax we present R outputs and their interpretation

Keywords: R, ordinal regression, syntax, listing, modeling, validation.

R баFдарламалык; ортадаFы реттж регрессия - «Медицина» жэне «^оFамдык; денсаулык сактау» мамандьщтары бойынша магистранттар мен докторанттарFа арналFан кыскаша ^сынымдар

В.Л. Егошин1, Н.В. Саввина2, А.М. Гржибовский1,2,3

1СолтYстiк мемлекеттак медицина университета, Архангельск, Ресей

2СолтYстiк-ШыFыс федеральды университета, Якутск, Ресей

3Эл-Фараби атындаты ^азак; ¥лттьщ университета, Алматы, ^аза;стан

Б^л жумыста реттж айнымалы жауапка арналган кептеген регрессиялык; талдаулар жасау уш1н R багдарламалык; ортасын ;олданудыц негiзгi принциш^ ^сынылган. Алматы облысында тацдаулы келденец зерттеулердщ модификациялантан бiрнеше нак;ты мэлiметтерiн колдана отырып, практикалы; мысал TYрiнде регрессиялы; моделдердi жасау жэне баталау ушш R-дщ ^адамд^:; алгоритмi жэне синтаксис ^сынылыган. Синтаксистен белек оларды R, сонымен ;атар, олардыц интерпритациясы керсеткендей нэтижелерi ^сынылган. Негiзгi свздер: R, pemmiKрегрессия, синтаксис, листинг, моделдеу, валидация.

Citation/

Библиографияльщ сттеме/ Библиографическая ссылка:

Egoshin VL, Savvina NV, Grjibovski AM. Multivariable ordinal regression in R: brief guidelines for Master and Doctoral students in medicine and public health. West Kazakhstan Medical Journal 2019;61(3):145—153.

Егошин ВЛ, Саввина НВ, Гржибовский АМ. R баедарламальщ ортадаFы ретпк регрессия - «Медицина» жэне «^отамдьщ денсаульщ сактау» мамандьщтары бойынша магистранттар мен докторанттарFа арналFан ^ыс^аша усынымдар. West Kazakhstan Medical Journal 2019;61(3):145-153.

Егошин ВЛ, Саввина НВ, Гржибовский АМ. Порядковая регрессия в программной среде R - краткие рекомендации для магистрантов и докторантов по специальности «Медицина» и «Общественное здравоохранение». West Kazakhstan Medical Journal 2019;61(3):145-153.

Порядковая регрессия в программной среде R - краткие рекомендации для магистрантов и докторантов по специальности «Медицина» и «Общественное здравоохранение»

В.Л. Егошин1, Н.В. Саввина2, А.М. Гржибовский1,2,3

Неверный государственный медицинский университет, г. Архангельск, Россия 2Северо-Восточный федеральный университет, г. Якутск, Россия 'Казахский Национальный университет им. Аль-Фараби, г Алматы, Казахстан

В данной работе представлены основные принципы применения программной среды R для осуществления множественного регрессионного анализа для порядковой (ранговой) переменной отклика. Представлен пошаговый алгоритм и синтаксис в R для создания и оценки регрессионных моделей в

О

Гржибовский А.М.

e-mail: andrej.grjibovski@ gmaii.com

Received/ Келт tyctí/ Поступила: 06.09.2019

Accepted/

Басылымра к,абылданды/ Принята к публикации: 27.09.2019

ISSN 1814-5620 (Print) © 2019 The Authors Published by West Kazakhstan Marat Ospanov Medical University

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

Ключевые слова: R, порядковая регрессия, синтаксис, листинг, моделирование, валидация.

Введение

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

Метод порядковой логистической регрессии используется в эпидемиологии и общественном здравоохранении при оценке влияния факторов риска на изучаемые заболевания и состояния [1, 2], при прогнозировании течения заболеваний, в визуальной диагностике [3-6], для оценки удовлетворенности пациентов [7] и в других областях здравоохранения.

Теоретическое обоснование использования порядковой логистической регрессии при анализе данных представлено в многочисленных работах [811], однако этот вид анализа крайне редко используются на постсоветском пространстве. Современные статистические пакеты (SPSS, SAS, Stata, R и другие) позволяют выполнять логистический регрессионный анализ для порядковых переменных отклика. Достоинства пакета R при этом виде анализа связаны с ее бесплатностью, возможностями в использовании различных моделей, методов трансформации и визуализации данных. Для выполнения порядкового регрессионного анализа в R используются функции разных пакетов: MASS, ordinal, rms и других. Для детального ознакомления с основными принципами выполнения логистического регрессионного анализа для порядковых переменных отклика можно рекомендовать публикации Harrell [12], Шитикова В.К. [13], Christensen [14], Rawat [15] и Sagar [16].

В данной работе обсуждаются основы порядкового регрессионного анализа и использования R для построения упорядоченной логит-модели. После описания и преобразования используемого набора данных (листинг 1) на примере упорядоченной логит-модели с двумя независимыми переменными (листинг 2), демонстрируется, каким образом полученные при её анализе константы регрессии (intercepts) и коэффициенты могут быть использованы для предсказания результатов модели (листинг 3). В

листинге 3 также показано использование функции predict, вычисляющей эти предсказываемые значения. В листинге 4 показано, как набор данных разделяется на тренировочный и тестовый сеты, создаётся упорядоченная логит-модель, использующая все независимые переменные набора данных. Полученная модель оценивается с использованием функции car: Anova, создается модель с меньшим количеством предикторов, модели сравниваются между собой. В листинге 5 модель оценивается по уровню ошибок и точности в тренировочном и тестовом сетах. Листинг 6 показывает, как с помощью функций пакета effects можно визуально оценить влияние предикторов на переменную отклика.

В работе используются базовые пакеты R 3.5.3, а также пакеты dplyr, broom, MASS, effects. Работа выполнена в IDE RStudio ver. 1.2.1335. Для создания модели порядковой логистической регрессии использована функция polr из пакета MASS. Упорядоченная логит-модель Порядковую логистическую регрессию можно рассматривать как расширение простой логистической регрессии для бинарной переменной отклика. В простой логистической регрессии логарифм шансов возникновения события моделируется как линейная комбинация независимых переменных. При выполнении порядкового логистичесого регрессионного анализа наиболее часто выполняется анализ упорядоченной логит модели (ordered logit model, ordered logistic regression, proportional odds model). В этой модели используется накапливание событий для логарифма вычисленных шансов. Графически эта модель представлена на рис.1.

roo

0.75 0.50 0.25 0.00

-6 -3 0 3 6

Рис.1 График упорядоченной логистической модели

Модель пропорциональных шансов предполагает, что эффект независимых переменных идентичен для каждого вычисляемого логарифма шансов. При этом значение константы (intercept) имеет различные величины. Модель пропорциональных шансов также предполагает отсутствие мультиколлинеарности (сильной корреляции) между независимыми переменными.

В данной работе используется выборка из реально существующего проекта, реализуемого в

Алматинской области Республики Казахстан [17]. В качестве примера рассматривается оценка влияния различных факторов на самооценку здоровья на случайной выборке из основной базы данных. Переменная SRH (самооценка здоровья) представляет собой порядковую переменную с тремя градациями: Fair or worse (удовлетворительное или хуже), Good (хорошее), Very good (очень хорошее). Возможны следующие варианты логарифма шансов:

P(Fair or worse) Lo^d^r or worse = logP(Good) + P(Very good)

P(Fair or worse) + P(Good) LogOdds-Fairог „огж | Good = log P(Verygood)

Формула модели пропорциональных шансов по Rawat (2018):

i

logit[P(Y<j)] = aJ-YiPtxt ,

1

где У - порядковая зависимая переменная; i -число категорий порядковой зависимой переменной минус 1; а' - intercept, & коэффициенты независимых переменных Xt

Используемый набор данных

Начало работы с данными предполагает знакомство с их структурой, выявление пропущенных значений, анализ переменных. В используемом наборе данных все переменные категориальные. После знакомства с данными выполнена их модификация: определены референтные значения и имеющиеся категории, уточнен порядок для зависимой переменной (листинг 1).

Листинг 1

# импорт данных

df <- foreign::read.spss(«../data/ordinal_regression.sav», to.data.frame = TRUE)

# структура данных glimpse(df) Observations: 1,000 Variables: 7

$ Gender <fct> Male, Male, Male, Male, Male, Female,

$ Ethnicity <fct> Kazakh, Kazakh, Kazakh, Kazakh, Kazakh...

$ SRH <fct> Fair or worse, Fair or worse, Fair or ... $ MS <fct> Other, Married, Married, Married, Sing. $ Education <fct> Higher, Vocational, Vocational, Vocati...

$ Occupation <fct> "Part time employed", "Part time emplo...

$ Smoking <fct> Occasional smoker, Non-smoker, Daily s.

# определение пропущенных значений

df %>%

inspectdf::inspect_na() %>% knitr::kable(caption = «Таб.1 Данные о пропущенных значениях»)

Таб.1 Данные о пропущенных значениях

col_name cnt pent

Gender 0 0

Ethnicity 0 0

SRH 0 0

MS 0 0

Education 0 0

Occupation 0 0

Smoking 0 0

# характеристика переменных, выводится самая

частая категория

df %>%

inspectdf::inspect_imb() %>% knitr::kable(caption = «Таб.2 Частые категории переменных»)

Таб.2 Частые категории переменных

col_name value pcnt cnt

Ethnicity Kazakh 80.6 806

Smoking Non-smoker 73.9 739

MS Married 68.5 685

Occupation Full time employed 54.5 545

Gender Female 51.9 519

SRH Good 43.5 435

Education Higher 37.7 377

# функция для представления всех категорий переменной

tab_apply <- function(variable) { janitor::tabyl(variable) %>% janitor::adorn_totals("row") %>% janitor:: adorn_pct_formatting()}

# вывод данных о категориях по всем переменным apply(df, 2, tab_apply)

$Gender variable n percent Female 519 51.9% Male 481 48.1% Total 1000 100.0%

$Ethnicity variable n percent Kazakh 806 80.6% Other 77 7.7% Russian 117 11.7% Total 1000 100.0%

$SRH

variable n percent Fair or worse 348 34.8% Good 435 43.5% Very good 217 21.7% Total 1000 100.0%

$MS

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

variable n percent

Married 685 68.5% Other 100 10.0% Single 215 21.5% Total 1000 100.0%

$Education variable n percent Basic 59 5.9% Higher 377 37.7% Secondary 282 28.2% Vocational 282 28.2% Total 1000 100.0%

$Occupation

variable n percent

Full time employed 545 54.5%

Out of work (students, other) 89 8.9%

Part time employed 145 14.5%

Pensioner 75 7.5%

Self-emploed 146 14.6%

Total 1000 100.0%

$Smoking variable n percent Daily smoker 145 14.5% Non-smoker 739 73.9% Occasional smoker 116 11.6% Total 1000 100.0%

# модификация набора данных df <- df %>%

mutate(

SRH = factor(SRH, levels = c("Fair or worse", "Good", "Very good"), ordered = TRUE), Ethnicity = relevel(Ethnicity, ref = "Kazakh"), MS = relevel(MS, ref = "Married"), Education = factor(Education, levels = c("Higher", "Basic", "Secondary", "Vocational")), Occupation = relevel(Occupation, ref = "Full time employed"),

Smoking = factor(Smoking, levels = c("Non-smoker",

"Daily smoker", "Occasional smoker")) )

Используемый набор данных содержит 1000 записей в 7 переменных. Пропущенные значения отсутствуют.

Интерпретация результатов упорядоченной логит-модели

Для получения упорядоченной логит-модели использована функция polr (polr - аббревиатура от proportional odds logistic regression) пакета MASS. В качестве независимых переменных используем переменные семейного статуса и курения. Цель использования модели - предсказать вероятные значения зависимой переменной. Предскажем значение переменной SRH для первой записи набора данных:

Листинг 2

# создание модели

model <- polr(SRH ~ MS + Smoking, df, Hess = TRUE)

# вывод данных о модели summary (model) Call:

polr(formula = SRH ~ MS + Smoking, data = df, Hess = TRUE)

Coefficients: Value Std. Error t value MSSingle 0.70481 0.1471 4.7923 MSOther -0.37191 0.2076 -1.7910 SmokingDaily smoker -0.41768 0.1734 -2.4091 SmokingOccasional smoker -0.09109 0.1893 -0.4811

Intercepts:

Value Std. Error t value Fair or worse|Good -0.6023 0.0843 -7.1434 Good|Very good 1.3657 0.0946 14.4335

Residual Deviance: 2085.503 AIC: 2097.503

# данные о независимых переменных модели в первой записи набора данных df[1, c(«MS», «Smoking»)]

MS Smoking 1 Other Occasional smoker

Полученная модель оценивается

по показателям константы (Intercept), коэффициентам и некоторым другим. Константа представляет собой значение изучаемой функции при нулевых значениях x, при работе с категориальными независимыми переменными -при их референтных значениях. Коэффициенты показывают величину влияния независимых переменных на зависимую переменную. В нашей модели значения intercepts равны Fair or worse|Good -0.6023 Good|Very good 1.3657 значения коэффициентов равны MSSingle 0.70481 MSOther -0.37191 SmokingDaily smoker -0.41768 SmokingOccasional smoker -0.09109 Intercept Fair or worse|Good -0.6023 соответствует logit(P(Y = Fair or worse))

Intercept Good|Very good 1.3657 соответствует logit(P(Y = Fair or worse I Y = Good))

Сумма произведений коэффициентов на значение

i

независимых переменных для данной модели

равна 1

0.70481 • MSSingle + (-0.37191) • MSOther + (-0.41768)

• SmokingDaily smoker + (-0.09109)

• SmokingOccasional smoker Обращаем Ваше внимание, что участник

исследования из первой записи имеет значения переменных MS - Other, Smoking - Occasional smoker.

Поэтому в формуле для расчета суммы произведений коэффициентов на значение независимых переменных значения х для коэффициента MSSingle = 0, MSOther = 1, SmokingDaily smoker = 0, SmokingOccasional smoker = 1.

Вероятность события SRH = Fair or worse может быть рассчитана как P(Fair or worse) = ! + -fa.-gte,) , где a1

- intercept Fair or worse|Good -0.6023

Вероятность события SRH = Fair or worse | Good может быть рассчитана как

P(Fair or worse I Good) =-1-:--, где a2 - intercept

1 + exp-(«2-Xift*0

Good|Very good 1.3657

Вероятность события SRH =

Good может быть рассчитана как

P(Good) = P(Fair or worse I Good) — P(Fair or worse)

Вероятность события SRH = Very good может быть рассчитана как p(Very good) = 1 - P(Fair or worse I Good)

Функция predict с аргументом type = «prob» позволяет избегать подобных расчётов. Листинг 3

# сумма произведений коэффициентов на значения x первой записи набора данных (y1 <- 0.70481 * 0 + (-0.37191) * 1 + (-0.41768) * 0 + (-0.09109) * 1)

[1] -0.463

# вероятность события SRH = Fair or worse (p1 <- 1/(1 + exp(-(-0.6023 - y1))))

[1] 0.4652312

# вероятность события SRH = Fair or worse | Good (p1or2 <- 1/(1 + exp(-(1.3657 - y1))))

[1] 0.8616068

# вероятность события SRH = Good (p2 <- p1or2 - p1)

[1] 0.3963756

# вероятность события SRH = Very good (p3 <- 1 - p1or2)

[1] 0.1383932

# сравните

round(c(p1, p2, p3),3)

[1] 0.465 0.396 0.138

predict(model, df[1,], type = "prob") %>% round(3)

Fair or worse Good Very good 0.465 0.396 0.138

Сравнение результатов расчёта с использованием констант регрессии и коэффициентов модели с результатами выполнения функции predict показывает, что при использовании этой функции отсутствует необходимость выполнения расчётов для получения прогностических значений модели.

Упорядоченная логит-модель, включающая все переменные

Упорядоченная логит-модель, включающая все переменные, будет использована для классификации результатов. Для оценки прогностических возможностей модели исходный набор данных будет разделен на тренировочный и тестовый сеты. Модель будет создана на основе тренировочного набора данных. Данные оценки модели будут выведены с использованием функций пакета broom. В таблице 3 будут выведены статистически значимые коэффициенты (не содержащие ноль в доверительном интервале); в таблице 4 - экспоненцированные значения статистически значимых коэффициентов (не содержащие единицу в доверительном интервале); в таблице 5 - экспоненцированные значения intercept. Оценка модели выполнена с использованием функции Anova пакета car. В измененной модели не использована переменная Gender. При сравнении

Таб.3 Koэффициенты мюдели

term estimate std.error statistic conf.Iow conf.high coefficient_type

EducationBasic 0.826 0.350 2.363 0.141 1.516 coefficient

EducationSecondary -0.176 0.186 -0.945 -0.542 0.189 coefficient

EducationVocational 0.070 0.180 0.392 -0.282 0.423 coefficient

EthnicityOther 0.086 0.267 0.324 -0.439 0.608 coefficient

EthnicityRussian 0.789 0.236 3.343 0.328 1.255 coefficient

Fair or worse|Good -1.068 0.174 -6.152 NA NA zeta

GenderFemale -0.233 0.154 -1.508 -0.536 0.069 coefficient

Good|Very good 1.076 0.175 6.163 NA NA zeta

MSOther -0.444 0.259 -1.715 -0.957 0.060 coefficient

MSSingle 0.671 0.181 3.709 0.317 1.027 coefficient

OccupationOut of work (students, other) -0.575 0.258 -2.232 -1.083 -0.071 coefficient

OccupationPart time employed -0.392 0.225 -1.744 -0.835 0.048 coefficient

OccupationPensioner -1.769 0.334 -5.288 -2.452 -1.133 coefficient

OccupationSelf-emploed -0.507 0.226 -2.240 -0.952 -0.065 coefficient

SmokingDaily smoker -0.715 0.233 -3.067 -1.176 -0.261 coefficient

SmokingOccasional smoker -0.331 0.234 -1.414 -0.791 0.127 coefficient

моделей функцией anova не выявлено значимых различий между моделями. Листинг 4

# выделение тренировочного и тестового сетов set.seed(123) # для воспроизведения

# определение номеров записей, входящих в тренировочный сет

index <- sample(seq_len(nrow(df)), size = .7 * nrow(df))

# создание тренировочного сета df_train <- df[index, ]

# создание тестового сета df_test <- df[-index, ]

# создание модели

model <- polr(SRH ~ ., data = df_train, Hess = TRUE)

# параметры модели glance(model) %>% knitr::kable(digits = 3)

edf logLik AIC BIC deviance df.residual

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

16 -697.912 1427.825 1500.642 1395.825 684

# коэффициенты модели

tidy(model, conf.int = TRUE) %>% knitr::kable(digits = 3, caption = "Таб.3 Коэффициенты модели")

# значения коэффициентов модели tidy(model, conf.int = TRUE) %>% mutate(ci_estimation = ifelse(conf.low < 0 & conf.high > 0, FALSE, TRUE)) %>% filter(ci_estimation == TRUE) %>%

dplyr::select(-coefficient_type, -ci_estimation) %>% knitr::kable(digits = 3, caption = "Таб.3 Статистически значимые коэффициенты")

# экспоненцированные значения коэффициентов

tidy(model, conf.int = TRUE, exponentiate = TRUE)

%>%

mutate(ci_estimation = ifelse(conf.low < 1 & conf.high > 1, FALSE, TRUE)) %>% filter(ci_estimation == TRUE) %>% dplyr::select(-coefficient_type, -ci_estimation) %>% knitr::kable(digits = 3, caption = "Таб.4 Статистически значимые коэффициенты")

# экспоненцированные значения intercept

tidy(model, conf.int = TRUE, exponentiate = TRUE)

%>%

filter(coefficient_type == "zeta") %>% dplyr:: select(-coefficient_type) %>% knitr::kable(digits = 3, caption = "Таб.5 Экспоненцированные значения intercept")

# оценка модели car:: Anova(model)

Analysis of Deviance Table (Type II tests)

Response: SRH LR Chisq Df Pr(>Chisq) Gender 2.278 1 0.131242 Ethnicity 11.282 2 0.003549 **

Таб.3 Статистически значимые коэффициенты

term estimate

EducationBasic 0.826

EthnicityRussian 0.789

MSSingle 0.671

OccupationOut of work (students, other) -0.575

OccupationPensioner -1.769

OccupationSelf-emploed -0.507

SmokingDaily smoker -0.715

std.error statistic conf.low conf.high

0.350 2.363 0.141 1.516

0.236 3.343 0.328 1.255

0.181 3.709 0.317 1.027

0.258 -2.232 -1.083 -0.071

0.334 -5.288 -2.452 -1.133

0.226 -2.240 -0.952 -0.065

0.233 -3.067 -1.176 -0.261

Таб.4 Статистически значимые коэффициенты

term estimate

EducationBasic 2.285

EthnicityRussian 2.202

MSSingle 1.956

OccupationOut of work (students, other) 0.563

OccupationPensioner 0.171

OccupationSelf-emploed 0.602

SmokingDaily smoker 0.489

std.error statistic conf.low conf.high

0.350 2.363 1.151 4.556

0.236 3.343 1.389 3.508

0.181 3.709 1.374 2.792

0.258 -2.232 0.339 0.931

0.334 -5.288 0.086 0.322

0.226 -2.240 0.386 0.938

0.233 -3.067 0.308 0.770

Таб.5 Экспоненцированные значения intercept

term estimate std.error statistic conf.low conf.high

Fair or worse|Good 0.344 0.174 -6.152 NA NA

Good|Very good 2.933 0.175 6.163 NA NA

MS 19.836 2 4.927e-05 *** Education 8.035 3 0.045288 * Occupation 36.013 4 2.876e-07 *** Smoking 10.276 2 0.005870 **

Signif. codes:

0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# модель с использованием всех предикторов кроме Gender

model1 <- polr(SRH ~ . - Gender, data = df_train, Hess

= TRUE)

glance(model1)

# A tibble: 1 x 6

edf logLik AIC BIC deviance df.residual <int> <dbl> <dbl> <dbl> <dbl> <dbl>

1 15 -699. 1428. 1496. 1398. 685

# сравнение моделей anova(model, model1)

Likelihood ratio tests of ordinal regression models

Response: SRH Model

1 (Gender + Ethnicity + MS + Education + Occupation + Smoking) - Gender

2 Gender + Ethnicity + MS + Education + Occupation + Smoking

Resid. df Resid. Dev Test Df LR stat. Pr(Chi)

1 685 1398.102

2 684 1395.825 1 vs 2 1 2.277757 0.1312416

Оценка прогностических возможностей модели Чтобы оценить прогностические возможности модели, будет создана матрица несоответствий (confusion matrix) и определена доля ошибок. По диагонали полученной матрицы приводится количество случае совпадения реальных и предсказанных значений. Используя функцию confusionMatrix пакета caret можно оценить точность модели.

Листинг 5

# предсказанные значения для тренировочного сета

pred <- predict(model, df_train, type = «class»)

# сравнение реальных и предсказанных значений (первые 6 позиций)

df_train %>% dplyr:: select(SRH) %>% cbind(pred) %>% head() SRH pred 288 Fair or worse Fair or worse 788 Fair or worse Good 409 Fair or worse Good 881 Good Good 937 Fair or worse Good 46 Good Good

# матрица несоответствий для тренировочного сета

(tab <- table(pred, df_train$SRH))

pred Fair or worse Good Very good Fair or worse 80 39 17 Good 153 265 118 Very good 3 8 17

# определение доли ошибок для тренировочного сета

(m1 <- round(1 - sum(diag(tab)) / sum(tab), 3)) [1] 0.483

# оценка точности

(accur1 <- caret::confusionMatrix(tab)$overall[c(1, 3, 4)] %>% round(3))

Accuracy AccuracyLower AccuracyUpper 0.517 0.479 0.555

# предсказанные значения для тестового сета pred <- predict(model, df_test, type = "class")

# матрица несоответствий для тестового сета (tab <- table(pred, df_test$SRH))

pred Fair or worse Good Very good Fair or worse 42 21 8 Good 69 101 54 Very good 1 1 3

# определение доли ошибок для тестового сета (m2 <- round(1 - sum(diag(tab)) / sum(tab), 3))

[1] 0.513

# оценка точности

(accur2 <- caret::confusionMatrix(tab)$overall[c(1, 3, 4)] %>% round(3))

Accuracy AccuracyLower AccuracyUpper 0.487 0.429 0.545

Уровень ошибок при оценке тренировочного сета составил 48.3%, при оценке тестового сета - 51.3%. Точность модели при оценке тренировочного сета: 0.517, доверительный интервал 0.479-0.555; при оценке тестового сета 0.487, доверительный интервал 0.429-0.545.

Графическое представление результатов Интерпретация порядковой логистической регрессии в терминах логарифма шансов достаточно сложна. Визуализация с использованием пакета effects упрощает эту задачу. Показатели на шкалах выводятся в значениях вероятности (листинг 6). Например, на рисунке 2, оценивающем эффект фактора образования, можно увидеть, что в случае базового образования вероятность оценки собственного здоровья как Fair or worse будет достоверно ниже, чем вероятность оценки Good; в случае высшего образования вероятность оценки Fair or worse выше вероятности оценки Very good. Функции пакета effects позволяют также оценить влияние двух факторов (рисунок 7). Листинг 6

plot(Effect(focal.predictors = "Education", model))

Рис.2 Графическая оценка эффекта фактора образования

plot(Effect(focal.predictors = "MS", model))

MS effect plot

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

SRH = Very good

? 0.1 -

Рис.3 Графическая оценка эффекта фактора семейного положения

plot(Effect(focal.predictors = "Ethnicity", model))

Ethnicity effect plot

' SRH = Very good '

SRH = Fair or worse

---

Kazakh Russian Other

Ethnicity

Рис.4 Графическая оценка эффекта этнического фактора

plot(Effect(focal.predictors = "Smoking", model))

SRH = Very good

SRH = Fair or worse

Daily smoker Smoklna

Occasional smoker

Рис.5 Графическая оценка эффекта фактора курения

plot(Effect(focal.predictors = "Occupation", model))

Рис.6 Графическая оценка эффекта фактора трудовой деятельности

plot(Effect(focal.predictors = c("MS" model))

"Gender"),

Рис.7. Графическая оценка эффекта факторов семейного положения и курения

Работа с R

Программная среда R является свободно распространяемым кросс-платформенным программным средством, использующимся для статистических вычислений и визуализации данных. Дистрибутивы R доступны на сайтах The Comprehensive RArchive Network, https://cran.r-project.org, Microsoft R Application Network, https://mran.microsoft.com/download. Удобным IDE (integrated development environment, интегрированная среда разработчика) для программы R является программа RStudio, свободно распространяемый дистрибутив может быть загружен на сайте RStudio IDE, https://www.rstudio.com/products/rstudio/. В наших более ранних публикациях (18) мы уже касались вопросов применения программной среды R в биомедицинских исследованиях. Использованный в работе файл с набором данных и скрипт с кодом доступны на сайте https://github.com/valegoshin/Paper_Scripts.

Конфликт интересов. Авторы заявляют об отсутствии конфликта интересов. Работа выполнена без внешнего финансирования.

Список литературы / References:

1. Abikulova AK, Tulebaev KA, Akanov AA, Turdalieva BS, Kalmahanov SB, Kumar AB, Izekenova, Mussaeva BA, Grjibovski AM. Inequalities in self-rated health among 45 + year-olds in Almaty, Kazakhstan: a cross-sectional study. BMC Public Health. 2013;13:654.

2. Siqueira AL, Clareci CS. Ordinal logistic regression models: application in quality of life studies. Cad. Saúde Pública. 2008;24:581-591.

3. Doyle OM, Ashburner J, Zelaya FO, Williams SCR, Mehta MA, Marquand AF. Multivariate Decoding of Brain Images Using Ordinal Regression. Neuroimage. 2013;81:347-357.

4. Doyle OM, Westman E, Marquand AF, Mecocci P, Vellas B, Tsolaki M, Kloszewska I. Predicting Progression of Alzheimer's Disease Using Ordinal Regression. PLoS One. 2014;9.

5. Keeble C, Baxter PD, Gislason-Lee AJ, Treadgold LA, Davies AG. Methods for the Analysis of Ordinal Response Data in Medical Image Quality Assessment. Br J Radiol. 2016;89(1063):20160094.

6. Satake E, Majima K, Aoki SC, Kamitani Y Sparse Ordinal Logistic Regression and Its Application to Brain Decoding. Front Neuroinform. 2018;12:51.

7. Koletsi B, Pandis N. Ordinal Logistic Regression. Am J Orthod Dentofacial Orthop. 2018;153(1):157-158.

8. Agresti A. Categorical Data Analysis. Hoboken, New Jersey: Wiley; 2002.

9. McCullagh P. Regression models for ordinal data. Journal of the Royal Statistical Society. 1980;42(2):109-142.

10. Winship C, Mare R. Regression models with ordinal variables. American Sociological Review. 1984;49:512-525.

11. Preisser JS, Phillips C, Perin J, Schwartz TA. Regression models for patient-reported measures having ordered categories recorded on multiple occasions. Community Dent Oral Epidemiol. 2011;39 (2):154-163.

12. Harrell F. Modeling Strategies. Switzerland: Springer International Publishing; 2015.

13. Шитиков ВК, Мастицкий СЭ. Классификация, регрессия и другие алгоритмы Data Mining с использованием R. https://ranalytics. github.io/data-mining/index.html.

Shitikov VK, Mastitskiy SE. Claccification, regression and other Data Mining algorithms using R. https://ranalytics.github.io/data-mining/ index.html [InRussian]

14. Christensen R. Cumulative Link Models for Ordinal Regression with the R Package Ordinal. https://cran.r-project.org/web/packages/ ordinal/vignettes/clm_article.pdf

15. Sagar C. How to Perform Ordinal Logistic Regression in R. https://r-posts.com/how-to-perform-ordinal-logistic-regression-in-r/.

16. Rawat A. Ordinal Logistic Regression. An Overview and Implementation in R. https://towardsdatascience.com/implementing-and-interpreting-ordinal-logistic-regression-1ee699274cf5.

17. Индершиева ЕВ, Турдалиева БС, Усатаев ММ, Аимбетова ГЕ. Изучение распространенности избыточной массы тела среди взрослого населения Алматинской области и факторов, влияющих на ее развитие. Вестник КазНМУ 2019;3:302-304. Indershiyeva EV, Turdaliyeva BS, Usatayev MM, Aimbetova GE. To study the prevalence of overweight among the population of Almaty region and factors influencing its development. Vestnik KazNMU. 2019;3:302-304.[In Russian]

18. Егошин ВЛ, Саввина НВ, Иванов СВ, Капанова ГЖ, Гржибов-ский АМ. Основы работы в программной среде R при анализе биомедицинских данных. Экология человека. 2018;7:55-64. Egoshin VL, Savvina NV, Ivanov SV Kapanova GZ, Grjibovski AM. Basic Principles of Biomedical Data Analysis in R. Ekologiya cheloveka [HumanEcology] 2017;7:55-64. [InRussian]

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