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

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

Анализ выживаемости отличается тем, что имеет дело с цензурированными данными, то есть исследование заканчивается, и в течение периода наблюдения не наблюдается сбоев, принимая во внимание следующие элементы: (i) начальное время; (ii) шкала измерений и (iii) интересующее событие.

Продолжительность жизни

Начнем с определения времени жизни конкретного индивидуума из однородной совокупности, которая будет представлена ​​случайной величиной T, неотрицательной и абсолютно непрерывной. Затем мы можем определить функцию выживания этого человека как вероятность того, что он выживет по истечении времени t, которую мы представим следующим образом:

которая является монотонной, невозрастающей, непрерывной функцией и обладает следующими свойствами:

  1. S(0) = 1
  2. S(+∞) = lim S(t) = 0,когдаlim S(t) равно ∞

Мы также можем определить функцию распределения, F(t), как вероятность того, что интересующее нас событие произойдет до времени t, то есть:

Поскольку функция выживания снижается, она не позволяет напрямую определить, как риск смерти изменяется с течением времени. Эта эволюция более очевидна в виде функции риска. Таким образом, у нас есть пять возможных форм функции риска. Таким образом, эта функция может быть:

Цензура

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

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

Цензура происходит по трем причинам: (i) исследование подошло к концу, а интересующее событие не было замечено; (ii) исследуемый человек выбыл из-под наблюдения; (iii) человек исключен из исследования по какой-либо причине, связанной с продолжительностью жизни.

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

Существует несколько типов цензуры, но наиболее распространенной является правильная цензура.

Правая цензура

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

  1. Люди не хотят оставаться в исследовании, поэтому информация неполная;
  2. Человек не испытал событие или смерть до окончания исследования; или даже этот контакт с ним был потерян.

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

  1. Тип I — этот тип цензуры применяется, когда исследование планируется завершить через x лет наблюдения. В этом случае все лица, у которых интересующее событие не наблюдалось во время исследования, считаются подвергнутыми цензуре временами в году x.
  2. Тип II — исследование заканчивается, когда происходит заранее определенное количество событий;
  3. Случайная цензура —исследование рассчитано на окончание через x лет, т. е. человек включается в исследование в день постановки диагноза, а также потому, что окончание исследования фиксировано заранее, время, в течение которого люди остаются в исследовании, является случайным.

Оценщик Каплана-Мейера

Оценщик Каплана-Мейера, также известный как оценщик предела продукта, может использоваться для расчета вероятностей выживания для непараметрических наборов данных с многочисленными сбоями и приостановками. Уравнение оценки задается следующим образом:

Где:

Регрессионные модели

Для моделирования продолжительности жизни однородной совокупности обычно используются одномерные непрерывные распределения. Однако неоднородность среди людей в отношении факторов риска является обычным явлением. Чтобы учесть эти факторы, которые, как мы предполагаем, влияют на продолжительность жизни, мы должны прибегнуть к регрессионной модели, в которой продолжительность жизни является зависимой переменной или переменной отклика, а ковариаты — независимыми переменными. Нам также необходимо указать модель распределения срока службы T, которую можно получить из вектора z = (z1; ...; zp)' ковариат индивидуума и некоторых параметрических или полупараметрических семейств.

Кокса регрессия

Регрессия Кокса строит прогностическую модель для данных о времени до события. Модель создает функцию выживания, которая предсказывает вероятность того, что интересующее событие произойдет в заданное времяt для заданных значений переменных-предикторов. Форма функции выживания и коэффициенты регрессии для предикторов оцениваются по наблюдаемым субъектам; затем модель можно применить к новым случаям, в которых есть меры для переменных-предикторов. Обратите внимание, что информация от подвергнутых цензуре субъектов, то есть тех, кто не испытывает интересующего события в течение времени наблюдения, вносит полезный вклад в оценку модели.

Параметрические модели

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

  • Регрессионная модель Вейбулла — это единственная модель, которую можно рассматривать как модель пропорциональных опасностей, так и модель ускоренного жизненного цикла, где функция выживания определяется следующим образом:

  • Модель логарифмической логистической регрессии —эту модель регрессии можно использовать в качестве альтернативы модели Вейбулла, когда последняя не подходит, то есть когда у нас есть немонотонная функция риска или модель пропорциональных шансов. , или даже модель ускоренного жизненного цикла:

где для обеих моделей продолжительность жизни этого человека имеет распределение Вейбулла и логарифмическое логистическое распределение с параметром масштаба λexp(β’z) и параметром формы ɣ и соответственно.

Остатки Шенфельда

Остатки являются важным инструментом для проверки адекватности регрессионной модели.

Когда наблюдение подвергается цензуре, невязка по определению имеет нулевое значение. Чтобы различить эти два случая, в которых наблюдаемая продолжительность жизни действительно совпадает с предсказанной моделью, обычно помечают как отсутствующие значения нулевые остатки, связанные с цензурированными наблюдениями. Если смерть наблюдается в момент времени ti, остаток, связанный с этим человеком, можно интерпретировать как разницу между значением ковариаты zj и средневзвешенным значением этой ковариаты. , для всех лиц, находящихся в группе риска в то время.

Таким образом, сумма остатков для всех исследуемых индивидуумов всегда равна нулю для каждой ковариаты. Когда выборки большие, остатки не коррелированы и ожидаемое значение rji равно нулю. Когда мы интерпретируем график остатков Шенфельда в зависимости от времени жизни (или порядка времени жизни), если данные расположены в случайном облаке точек с центром в нуле, то мы рассматриваем модель, подходящую для данных.

Постановка задачи

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

Цель

Основываясь на наборе данных, содержащем информацию из различных атрибутов, связанных с услугами, используемыми на каждом уровне клиента для телекоммуникационной компании, мы хотим знать: (i) Какие переменные способствуют оттоку клиентов? (ii) Кто, скорее всего, откажется от клиентов? (iii) Какие действия можно предпринять, чтобы они не ушли?

Исследовательский анализ

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

# Libraries loading 

library(survival)
library(ggplot2)
library(pander)
library(tidyverse)
library(survminer)
# Dataset Loading
df_churn <- read.csv("telecom_churn.csv")
surv_object <- Surv(time = df_churn$AccountWeeks, 
                          event = df_churn$Churn)
fit_geral <- survfit(surv_object ~ 1, data = df_churn)
summary(fit_geral, times=seq(0, 250, 10))

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

ggsurvplot(fit_geral, data = df_churn, ggtheme = theme_bw(), 
                 risk.table = TRUE, palette = "dodgerblue2")

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

Учет других переменных путем стратификации

# ContractRenewal
fit_contractrenewal <- survfit(surv_object ~ ContractRenewal, 
                                             data = df_churn)

ggsurvplot(fit_contractrenewal, data = df_churn,
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, 
           risk.table.col = "strata", 
           linetype = "strata", 
           ggtheme = theme_bw(), 
           palette = c("dodgerblue2", "orchid2"))

Мы видим ярко выраженную разницу между двумя группами: у большинства клиентов с продлением контракта отток происходит позже, а без продления контракта — до 100-й недели.

# DataPlan
fit_dataplan <- survfit(surv_object ~ DataPlan, 
                                data = df_churn)

ggsurvplot(fit_dataplan, data = df_churn,
           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, 
           risk.table.col = "strata", 
           linetype = "strata", 
           ggtheme = theme_bw(), 
           palette = c("dodgerblue2", "orchid2"))

В этом случае мы наблюдаем, что большинство клиентов без тарифного плана отстают в первую очередь, а с тарифным планом — позже.

# Cox Regression
coxRegression <- coxph(Surv(AccountWeeks, Churn) ~ ContractRenewal 
                                      + DataPlan, data = df_churn)

summary(coxRegression)

Соответствие показывает, что переменные ContractRenewal и DataPlan были значимыми (p‹0,05). Как следствие, обратите внимание, что доверительный интервал для отношения рисков, полученный с помощью exp(βi), в этих двух переменных не включает значение 1.

# Log-Norm Model
fit_log <- flexsurvreg(Surv(AccountWeeks, Churn) ~ 1, 
                     dist='lognorm', data = df_churn)

fit_log

# Weibull Model
fit_weibull <- flexsurvreg(Surv(AccountWeeks, Churn) ~ 1, 
                         dist='weibull', data = df_churn)

fit_weibull

# Schoenfeld Residues
teste_ph <- cox.zph(coxRegression)
teste_ph$table %>% round(3) %>% pander()

# Schoenfeld Residues
ggcoxzph(teste_ph, ggtheme = theme_bw())

par(mfrow=c(1,2))
mart<-residuals(coxRegression,type="martingale")
dev<-residuals(coxRegression,type="deviance")
plot(mart,ylab="res",pch=20)
title("Martingale Residual")
plot(dev,ylab="res",pch=20)
title("Deviance Residual")

Modelo = c("Log-Normal", "Weibull")
Verossimilhanca = c(fit_log$loglik, fit_weibull$loglik)
TRV = 2*(fit_log$loglik-Verossimilhanca)
valor_p = pchisq(TRV,df=2,lower.tail=FALSE) %>% round(2)

resultado = data.frame(Modelo=Modelo, 
                       Verossimilhanca = Verossimilhanca, 
                       TRV=TRV, 
                       valor_p=valor_p)

resultado %>% pander()

Рекомендации

  1. Борхес, Александра (2014). Анализ выживания с помощью R — магистерская диссертация, Университет Мадейры, Португалия;
  2. https://www.ibm.com/docs/pt-br/spss-statistics/29.0.0?topic=statistics-cox-regression-analysis;
  3. https://rpubs.com/kassio_camelo/BCT_survival;
  4. https://bioconnector.github.io/workshops/r-survival.html;
  5. https://www.ime.usp.br/~lane/home/MCM5916/surv.pdf
  6. https://scikit-survival.readthedocs.io/en/stable/user_guide/00-introduction.html