1 Base de datos

Vamos a analizar el efecto de las vacunas aplicadas en México. Para esto vamos a utilizar información publicada al 08 de agosto de 2021. Los datos se pueden descargar en la siguiente liga.

# importamos la base de datos
path.files <- list.files(".", pattern = "*.csv")
covid      <- read.csv(path.files, header=TRUE)

La base de datos consiste de 8,900,950 casos estudiados, de los cuáles sólo consideramos los casos confirmados por dictamen, indicada por las categorías 1,2 y 3 de la variable CLASIFICACION_FINAL, y cuyo número de casos acumulados es 3,020,596.

# vamos a considerar solo los casos confirmados 
subset <- subset(covid, covid$CLASIFICACION_FINAL %in% c(1,2,3))

Mostramos el formato del archivo descargado

El interés es analizar el efecto de las vacunas sobre el control de la epidemia. No obstante, al no existir una variable que indique si la persona está vacunada o no, creamos una variable alternativa basada en la fecha de vacunación para la población mayor a 60 años. Este último criterio de edad es debido a que se considera a este segmento con el mayor porcentaje de vacunación.

Recordemos que la campañana de vacunación para este segmento de la población inició el 14 de febrero de 2021 1.

En este caso para reflejar el efecto de la campaña filtramos la base de datos un mes después de iniciada la campaña de vacunación.

# la convertivamos en una variable de fecha
subset$FECHA_SINTOMAS <- as.Date(subset$FECHA_SINTOMAS)

# definimos una variable dicotomica que toma los siguientes valores
# 1: fue reportada despues de la vacunacion,
# 2: reportada antes de la vacunacion
subset$INICIO_VACUNA  <- "1"    
subset$INICIO_VACUNA[subset$FECHA_SINTOMAS<="2021-03-14"] <- 2 

# filtramos para el segmento de la poblacion mayor a 60 anios
subset <- subset(subset, subset$EDAD >=60)

En este caso tomamos una muestra aleatoria representativa de los datos de tamaño 10,000

#fijamos una semilla
set.seed(20210811)

subset <- subset[ sample(nrow(subset),10000),]

2 Modelos de supervivencia

Una vez definido nuestros datos, vamos ajustar distintos modelos para la función de Supervivencia, esto es, la función dada por:

\[ S(t) = P(T >t) \] donde \(S(t)\) es la probabilidad de que una persona sobreviva al menos hasta el tiempo \(t\). En nuestro caso, el tiempo estará asociado al número de días entre la fecha de inicio de síntomas para casos confirmados de SARS-COVID 19 y la fecha de defunción reportada.

Algunas propiedades de esta función son las siguientes:

  • \(S(0) = 1\), esto quiere decir que al inicio del tiempo de observación, la persona está viva con probabilidad 1.

  • \(\lim_{t\rightarrow \infty}S(t) = 0\). Conforme pase el tiempo, la probabilidad de supervivencia tiende a 0.

  • \(S(t_1) \geq S(t_2)\) para toda \(t_1\leq t_2\). Es decir, conforme pasa el tiempo, nuestro probabilidad de supervivencia no aumenta.

Una manera para estimar la función de supervivencia sin asumir ningún modelo es utilizando el estimador Kaplan-Meier. Para esto, definimos los tiempos de falla observados en \(t_1 \leq t_2 \leq \dots \leq t_j\).

El estimador de Kaplan-Meier2 para la función de Supervivencia está dado por:

\[\hat S(t) =\prod_{t_j \leq t} \left(1-\dfrac{d_j}{n_j}\right)\] donde:

  • \(d_j\) es el número de muertes reportadas al tiempo \(t_j\).

  • \(n_j\) es el número de personas que están vivas al menos hasta el tiempo \(t_j\).

Cabe mencionar que en modelos de supervivencia no siempre se puede observar el evento de estudio, por ejemplo, el estudio termina antes de que ocurra el evento, ó en nuestro caso, la muerte de la persona no se observó.

En este caso es importante introducir una variable de censura que nos indique si en efecto el tiempo indicado ocurrió el evento.

3 Caso México

Como se mencionó antes, definimos el tiempo de supervivencia como el número de días entre la fecha de defunción y el inicio de síntomas.

En este caso las personas con fechas de defuncion no especificadas se asumirán son supervivientes con tiempo de censura a la fecha de la ultima actualizacion de la base de datos.

# Creamos una variable CENSURA que toma valores 
# 0: si es un dato censurado, 1: ocurre la falla
subset$CENSURA <- 1
subset$CENSURA[subset$FECHA_DEF=="9999-99-99"] <- 0 

# definimos el tiempo de censura para las fechas de defunciones no especificadas
subset$FECHA_DEF[subset$FECHA_DEF=="9999-99-99"] <- "2021-08-2021"

Calculamos los tiempos de fallas

subset$FECHA_DEF <- as.Date(subset$FECHA_DEF)
subset$TIME      <- as.numeric(subset$FECHA_DEF - subset$FECHA_SINTOMAS)

Luego vamos a utilizar la librera de survival para obtener el estimador Kaplan-Meier de la funcion de supervivencia

library(survival)

#definimos un tiempo de supervivencia especificando el tiempo de falla y censura
times.covid <- with(subset, Surv(TIME, CENSURA))

# calculamos el estimador Kaplan-Meier por fecha de inicio de vacunacion
model1 <- survfit(times.covid~INICIO_VACUNA, data = subset)

Graficamos las funciones de supervivencia estimadas y su correspondiente intervalo de confianza.

library(ggfortify)
library(ggplot2)

mygraph <- autoplot(model1, censor = F, xlim = c(0,60))+ labs(colour = "INICIO VACUNA")  +
  scale_color_manual(labels = c("DESPUÉS","ANTES"), values = c('red', 'blue'))+ labs(x = "Días", y = "Probabilidad de Supervivencia") +  guides(fill=FALSE) 
print(mygraph)

De las gráficas anteriores se concluye lo siguiente:

  • A los 60 días de inicio de síntomas, al menos se estima que el 66.85% de las personas mayores de 60 años habían sobrevivido a la enfermedad, esto fue antes de la campañana de vacunación. Este porcentaje se incrementó hasta 82.32% para personas mayores de 60 años, despúes de la campañana de vacunación.

  • Haciendo una prueba log-rank se puede probar que existen diferencias signficativas entre las dos curvas de supervivencia. Es decir, si hay un efecto estadísticamente significativo de la vacunación para este segmento de la población.

  • Viendo el decaimiento de las curvas, se observa que las probabilidades de supervivencia se estabilizan después de 20 días. En otras palabras en los primeros 20 días se observa el mayor número de muertes, siendo un descenso más pronunciado antes del inicio de la vacunación.

3.1 Por Sexo

Ahora considerando el sexo de la persona

# calculamos el estimador Kaplain-Meir 
model2 <- survfit(times.covid ~ as.factor(SEXO), data = subset)

mygraph <- autoplot(model2, censor = F, xlim = c(0,60))+ labs(colour = "SEXO")  +guides(fill=FALSE) +
  scale_color_manual(labels = c("MUJERES","HOMBRES"), values = c('orchid', 'blue'))+ labs(x = "Días", y = "Probabilidad de Supervivencia")  
print(mygraph)

En este caso se observa que al final de 20 días, un mayor porcentaje de mujeres sobrevivió.


  1. https://www.elfinanciero.com.mx/estados/campana-nacional-de-vacunacion-contra-covid-a-adultos-mayores-inicia-la-proxima-semana-amlo/↩︎

  2. Kleinbaum, D.G., Klein, M.(2005). Survival Analysis A Selfing_Learning text. Springer-Verlag, 2nd. edition. ↩︎