Objetivo general:
Comprender y aplicar las principales formas de expresar el pronóstico, incluyendo la supervivencia a 5 años, el método actuarial (tablas de vida), el método de Kaplan-Meier, la mediana de supervivencia y la supervivencia relativa.
El pronóstico describe la probabilidad de que ocurra un desenlace futuro en personas con una enfermedad determinada. En epidemiología clínica, el pronóstico suele expresarse mediante:
El análisis de supervivencia permite estudiar no solamente si ocurre un evento, sino también cuándo ocurre.
El pronóstico es una predicción del curso futuro de una enfermedad tras su inicio. Su cuantificación es vital para establecer prioridades clínicas y comparar la eficacia de distintas terapias.
Es el desenlace que se desea estudiar.
Ejemplos:
Tiempo desde:
hasta:
Un individuo es censurado cuando:
Censura no significa pérdida de información total. Significa que sabemos que el paciente estuvo vivo y libre del evento hasta el día X, pero después de ese día, ya no podemos asegurar qué pasó. Censurar es reconocer que el paciente aportó tiempo de bienestar al estudio.
Es el porcentaje de pacientes que siguen vivos 5 años después del inicio del tratamiento o del diagnóstico.
Limitaciones: No refleja qué ocurrió durante esos 5 años (por ejemplo, si la mayoría murió en el primer año o en el cuarto).
Sesgo por adelanto (Lead-time bias): El cribado puede detectar la enfermedad antes, aumentando la supervivencia aparente sin retrasar realmente el momento de la muerte.
La proporción de individuos vivos después de un tiempo determinad; es decir que utiliza la supervivencia real de los pacientes seguidos en el tiempo.
Método Actuarial: Agrupa los datos en intervalos fijos (ej. anuales). Es útil cuando no se conoce el momento exacto del evento, sino el intervalo en que ocurrió.
Suposición clave: Se asume que no ha habido cambios en la eficacia del tratamiento durante el periodo de estudio.
\[ \text{Supervivencia observada} = \frac{\text{Número de personas vivas}}{\text{Número inicial de personas}} \]
Expresa la probabilidad acumulada de sobrevivir durante varios intervalos.
A diferencia del actuarial, no usa intervalos predeterminados. El intervalo termina cada vez que ocurre un evento (muerte), lo que permite usar el punto exacto en el tiempo. Es el estándar actual en publicaciones científicas.
Es el tiempo en el cual la mitad (50%) de la cohorte de estudio ha experimentado el evento de interés. Se prefiere sobre la media porque los tiempos de supervivencia no suelen seguir una distribución normal y la media puede verse afectada por valores extremos.
Es el cociente entre la supervivencia observada en los pacientes y la supervivencia esperada si hubieran tenido la misma experiencia de mortalidad que la población general (ajustada por edad, sexo, etc.). Esto permite aislar el efecto de la enfermedad específica frente a otras causas de muerte.
El objetivo de esta sección es construir una tabla de vida actuarial en una hoja de cálculo, aplicando los ajustes por pérdidas de seguimiento para obtener la supervivencia acumulada real.
Si un paciente es censurado porque se mudó de ciudad y no pudimos contactarlo, ¿podría ser que se mudó porque se sentía mejor o porque estaba tan grave que buscó otra opción? ¿Cómo afectaría esto a nuestra curva si todos los que se pierden en realidad hubieran muerto?
En una hoja de Excel nueva, configure los encabezados en la primera fila (A1 hasta H1) de la siguiente manera:
| Celda | Encabezado |
|---|---|
| A1 | Año (\(x\)) |
| B1 | Vivos al inicio (\(l_x\)) |
| C1 | Muertos (\(d_x\)) |
| D1 | Perdidos (\(w_x\)) |
| E1 | Número Efectivo en Riesgo (\(l'_x\)) |
| F1 | Prop. que falleció (\(q_x\)) |
| G1 | Prop. que sobrevivió (\(p_x\)) |
| H1 | Supervivencia Acumulada (\(P_x\)) |
Ingrese los datos observados en las columnas correspondientes:
| Año (\(x\)) | Vivos (\(l_x\)) | Muertos (\(d_x\)) | Perdidos (\(w_x\)) |
|---|---|---|---|
| 1 | 375 | 178 | 0 |
| 2 | 197 | 83 | 43 |
| 3 | 71 | 19 | 16 |
| 4 | 36 | 7 | 13 |
| 5 | 16 | 2 | 6 |
Colóquese en la fila 2 e ingrese las siguientes fórmulas. Luego, arrástrelas hacia abajo hasta la fila 6.
En la celda E2, reste la mitad de los perdidos al total de vivos:
=B2 - (0.5 * D2)
¿Por qué multiplicamos por 0.5? Porque asumimos que, en promedio, las personas que se perdieron durante el año, lo hicieron a la mitad del mismo. Así, les damos el crédito de haber sobrevivido medio año antes de desaparecer del radar.
En la celda F2, divida los muertos entre el número efectivo:
=C2 / E2
En la celda G2, reste la proporción de fallecidos a la unidad:
=1 - F2
Es igual a la supervivencia del primer intervalo:
=G2
Multiplique la acumulada anterior por la supervivencia actual:
=H2 * G3
Si los cálculos son correctos, su tabla final en Excel debería verse así (valores redondeados):
| Año | \(l_x\) | \(d_x\) | \(w_x\) | \(l'_x\) | \(q_x\) | \(p_x\) | \(P_x\) (Acumulada) |
|---|---|---|---|---|---|---|---|
| 1 | 375 | 178 | 0 | 375.0 | 0.475 | 0.525 | 0.525 |
| 2 | 197 | 83 | 43 | 175.5 | 0.473 | 0.527 | 0.277 |
| 3 | 71 | 19 | 16 | 63.0 | 0.302 | 0.698 | 0.193 |
| 4 | 36 | 7 | 13 | 29.5 | 0.237 | 0.763 | 0.147 |
| 5 | 16 | 2 | 6 | 13.0 | 0.154 | 0.846 | 0.124 |
El análisis de supervivencia también puede realizarse fácilmente en R, permitiendo automatizar cálculos y reproducir resultados de manera precisa. En esta sección se construirá la misma tabla de vida actuarial desarrollada previamente en Excel.
Abra R o RStudio y cree un nuevo script. No es necesario instalar paquetes adicionales para este ejemplo, ya que utilizaremos únicamente funciones básicas de R.
Ingrese los datos observados de la cohorte utilizando vectores y
construya un data.frame.
# Crear vectores con los datos observados
anio <- 1:5
lx <- c(375, 197, 71, 36, 16)
dx <- c(178, 83, 19, 7, 2)
wx <- c(0, 43, 16, 13, 6)
# Construir la base de datos
tabla_vida <- data.frame(
Anio = anio,
Vivos = lx,
Muertos = dx,
Perdidos = wx
)
# Mostrar la tabla inicial
tabla_vida
## Anio Vivos Muertos Perdidos
## 1 1 375 178 0
## 2 2 197 83 43
## 3 3 71 19 16
## 4 4 36 7 13
## 5 5 16 2 6
El método actuarial ajusta el denominador restando la mitad de los sujetos perdidos durante el intervalo.
tabla_vida$Riesgo_Efectivo <- tabla_vida$Vivos - (0.5 * tabla_vida$Perdidos)
La fórmula aplicada es:
\[ l'_x = l_x - \left(\frac{1}{2}\right)w_x \]
Se divide el número de fallecidos entre el número efectivo en riesgo.
tabla_vida$qx <- tabla_vida$Muertos / tabla_vida$Riesgo_Efectivo
La fórmula utilizada es:
\[ q_x = \frac{d_x}{l'_x} \]
La probabilidad de supervivencia del intervalo corresponde a:
tabla_vida$px <- 1 - tabla_vida$qx
La expresión matemática es:
\[ p_x = 1 - q_x \]
La supervivencia acumulada se obtiene multiplicando sucesivamente las probabilidades de supervivencia de cada intervalo.
En R, esto puede hacerse fácilmente utilizando la función
cumprod().
tabla_vida$Px_acumulada <- cumprod(tabla_vida$px)
La lógica matemática es:
\[ P_x = P_{x-1} \times p_x \]
Para mejorar la presentación de los resultados, redondee los valores decimales.
tabla_vida$qx <- round(tabla_vida$qx, 3)
tabla_vida$px <- 1 - tabla_vida$qx
tabla_vida$px <- round(tabla_vida$px, 3)
tabla_vida$Px_acumulada <- cumprod(tabla_vida$px)
tabla_vida$Px_acumulada <- round(tabla_vida$Px_acumulada, 3)
tabla_vida$Riesgo_Efectivo <- round(tabla_vida$Riesgo_Efectivo, 1)
Finalmente, visualice la tabla actuarial completa.
tabla_vida
## Anio Vivos Muertos Perdidos Riesgo_Efectivo qx px Px_acumulada
## 1 1 375 178 0 375.0 0.475 0.525 0.525
## 2 2 197 83 43 175.5 0.473 0.527 0.277
## 3 3 71 19 16 63.0 0.302 0.698 0.193
## 4 4 36 7 13 29.5 0.237 0.763 0.147
## 5 5 16 2 6 13.0 0.154 0.846 0.125
La salida en R debería verse aproximadamente así:
| Año | Vivos | Muertos | Perdidos | Riesgo_Efectivo | qx | px | Px_acumulada |
|---|---|---|---|---|---|---|---|
| 1 | 375 | 178 | 0 | 375.0 | 0.475 | 0.525 | 0.525 |
| 2 | 197 | 83 | 43 | 175.5 | 0.473 | 0.527 | 0.277 |
| 3 | 71 | 19 | 16 | 63.0 | 0.302 | 0.698 | 0.193 |
| 4 | 36 | 7 | 13 | 29.5 | 0.237 | 0.763 | 0.147 |
| 5 | 16 | 2 | 6 | 13.0 | 0.154 | 0.846 | 0.124 |
El análisis actuarial muestra que la supervivencia acumulada disminuye progresivamente a lo largo de los cinco años de seguimiento.
Al finalizar el período, la probabilidad acumulada de supervivencia es:
\[ P_5 = 0.124 \]
Esto significa que aproximadamente el 12,4% de la cohorte original permanece viva al final del quinto año de observación.
El Método de Kaplan-Meier, también conocido como el método de “límite de producto”, permite calcular la probabilidad de supervivencia en cohortes donde los eventos ocurren en momentos específicos del tiempo. A diferencia del método actuarial, no utiliza intervalos predefinidos.
La fórmula del estimador de Kaplan-Meier es:
\[S(t) = \prod_{t_i \le t} \left( 1 - \frac{d_i}{n_i} \right)\]
Donde:
El objetivo de esta sección es reproducir la Tabla 6.10 de Gordis utilizando el método de Kaplan-Meier en Excel, calculando manualmente la supervivencia acumulada en cada tiempo donde ocurre una muerte.
A diferencia de la tabla actuarial, el método Kaplan-Meier:
La supervivencia acumulada se calcula mediante:
\[ S(t) = \prod \left(\frac{n_i - d_i}{n_i}\right) \]
Donde:
En una hoja nueva de Excel, ingrese los datos individuales de seguimiento.
| Columna | Contenido |
|---|---|
| A | Tiempo de seguimiento (meses) |
| B | Estado |
| C | Observación |
1 = muerte0 = censura| Tiempo | Estado | Observación |
|---|---|---|
| 4 | 1 | Murió |
| 10 | 1 | Murió |
| 14 | 1 | Murió |
| 24 | 1 | Murió |
| 6 | 0 | Censurado |
| 18 | 0 | Censurado |
Ahora cree una segunda tabla resumen similar a la Tabla 6.10 de Gordis.
| Columna | Encabezado |
|---|---|
| E | Tiempo de muerte |
| F | Número vivo en riesgo (\(n_i\)) |
| G | Número que murió (\(d_i\)) |
| H | Proporción que murió |
| I | Proporción que sobrevivió |
| J | Supervivencia acumulada |
En la columna E coloque únicamente los tiempos donde ocurrió una muerte.
| E |
|---|
| 4 |
| 10 |
| 14 |
| 24 |
El número en riesgo corresponde a todos los pacientes que permanecen bajo seguimiento inmediatamente antes de cada muerte.
En F2:
=COUNTIF($A$2:$A$7,">="&E2)
Luego arrastre la fórmula hacia abajo.
| Tiempo | En riesgo (\(n_i\)) |
|---|---|
| 4 | 6 |
| 10 | 4 |
| 14 | 3 |
| 24 | 1 |
En este ejemplo ocurre una muerte en cada tiempo.
En G2:
=COUNTIFS($A$2:$A$7,E2,$B$2:$B$7,1)
Arrastre hacia abajo.
| Tiempo | Muertes (\(d_i\)) |
|---|---|
| 4 | 1 |
| 10 | 1 |
| 14 | 1 |
| 24 | 1 |
La proporción que murió se calcula mediante:
\[ \frac{d_i}{n_i} \]
En H2:
=G2/F2
Arrastre hacia abajo.
| Tiempo | Proporción que murió |
|---|---|
| 4 | 0.167 |
| 10 | 0.250 |
| 14 | 0.333 |
| 24 | 1.000 |
La probabilidad de sobrevivir en cada intervalo es:
\[ 1 - \frac{d_i}{n_i} \]
En I2:
=1-H2
Arrastre hacia abajo.
| Tiempo | Proporción que sobrevivió |
|---|---|
| 4 | 0.833 |
| 10 | 0.750 |
| 14 | 0.667 |
| 24 | 0.000 |
La supervivencia acumulada se obtiene multiplicando las probabilidades de supervivencia sucesivas.
En J2:
=I2
En J3:
=J2*I3
Arrastre hacia abajo.
La tabla final debería verse así:
| Tiempo | \(n_i\) | \(d_i\) | Proporción que murió | Proporción que sobrevivió | Supervivencia acumulada |
|---|---|---|---|---|---|
| 4 | 6 | 1 | 0.167 | 0.833 | 0.833 |
| 10 | 4 | 1 | 0.250 | 0.750 | 0.625 |
| 14 | 3 | 1 | 0.333 | 0.667 | 0.417 |
| 24 | 1 | 1 | 1.000 | 0.000 | 0.000 |
La curva Kaplan-Meier muestra cómo disminuye progresivamente la probabilidad de supervivencia a medida que ocurren las muertes.
Por ejemplo:
\[ 0.833 \times 0.750 = 0.625 \]
Esto significa que aproximadamente el 62,5% de la cohorte permanece viva después de 10 meses de seguimiento.
A continuación, se presenta el código para procesar estos datos. Este bloque debe ser ejecutado en RStudio para generar la tabla y la figura.
# Definir paquetes
paquetes <- c("survival", "survminer", "knitr", "kableExtra")
# Instalación condicional especificando el repositorio (Mirror)
faltantes <- paquetes[!(paquetes %in% installed.packages()[,"Package"])]
if(length(faltantes)) {
install.packages(faltantes, repos = "[https://cloud.r-project.org](https://cloud.r-project.org)")
}
# 4. Cargar librerías
library(survival)
library(survminer)
library(knitr)
library(kableExtra)
# 5. Crear dataset basado en el ejemplo de Gordis (Tabla 6.10)
# Se asume una cohorte de 10 pacientes con muertes y censuras (+).
datos_km <- data.frame(
id = 1:10,
tiempo = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
estado = c(1, 0, 1, 1, 0, 1, 1, 0, 1, 1) # 1: muerte, 0: censura
)
# 6. Crear el objeto de supervivencia
# R marca automáticamente los datos censurados (estado = 0)
obj_surv <- Surv(time = datos_km$tiempo, event = datos_km$estado)
# 7. Ajustar el modelo de Kaplan-Meier
fit_km <- survfit(obj_surv ~ 1)
# 8. Mostrar la tabla de supervivencia (Equivalente a Tabla 6.10)
summary(fit_km)
## Call: survfit(formula = obj_surv ~ 1)
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 1 10 1 0.900 0.0949 0.7320 1.000
## 3 8 1 0.787 0.1340 0.5641 1.000
## 4 7 1 0.675 0.1551 0.4303 1.000
## 6 5 1 0.540 0.1731 0.2881 1.000
## 7 4 1 0.405 0.1747 0.1739 0.943
## 9 2 1 0.202 0.1677 0.0399 1.000
## 10 1 1 0.000 NaN NA NA
El siguiente código genera la figura estándar utilizada en publicaciones médicas para expresar el pronóstico:
ggsurvplot(
fit_km,
data = datos_km,
conf.int = TRUE,
surv.median.line = "hv",
risk.table = TRUE,
# AÑADE ESTO:
censor = TRUE, # Asegura que se vean las marcas
censor.shape = "|", # Usa una línea vertical o cruz (+) para identificar censuras
censor.size = 5,
xlab = "Meses de seguimiento",
ylab = "Probabilidad de Supervivencia",
title = "Curva de Kaplan-Meier: Identificando las Censuras",
ggtheme = theme_light()
)
## Ignoring unknown labels:
## • fill : "Strata"
## Ignoring unknown labels:
## • fill : "Strata"
## Ignoring unknown labels:
## • fill : "Strata"
## Ignoring unknown labels:
## • fill : "Strata"
## Ignoring unknown labels:
## • colour : "Strata"
summary), notarás que el número en riesgo disminuye para
el siguiente evento, pero no se calcula un escalón de descenso en la
curva en ese punto exacto.