13.1 Covariables y modelos de supervivencia no paramétricos
En muchas aplicaciones de análisis de supervivencia, además de comparar dos curvas marginales de supervivencia, interesa estudiar cómo influyen variables exógenas (covariables) sobre el riesgo de falla. En el capítulo anterior vimos el test de rango logarítmico para comparar dos grupos sin asumir explícitamente una forma paramétrica para cada función de supervivencia. Para ello introdujimos la alternativa de Lehmann, definida mediante
\[
S_{1}(t)=\bigl[S_{0}(t)\bigr]^{\psi},
\]
y observamos que esta relación entre supervivencias se traduce, a través de la ecuación
Esta última ecuación se conoce como la suposición de riesgos proporcionales entre los dos grupos. Bajo ella, la razón de riesgos \(\psi\) cuantifica de manera uniforme la diferencia entre sus funciones de riesgo a lo largo del tiempo: si \(\psi>1\), el grupo 1 tiene un riesgo mayor que el grupo 0 en todo instante, y si \(\psi<1\) ocurre lo contrario.
Para generalizar este planteamiento e incorporar información de covariables, se escribe la constante de proporcionalidad \(\psi\) en función de un vector de covariables \(z=(z_{1},\dots,z_{p})\). La forma más utilizada es la parametrización exponencial:
donde \(\beta=(\beta_{1},\dots,\beta_{p})^{T}\) es el vector de coeficientes que mide el efecto de cada covariable sobre el riesgo. Bajo esta formulación, la covariable \(j\) con valor \(z_{j}\) multiplica el riesgo basal \(h_{0}(t)\) por el factor \(e^{z_{j}\beta_{j}}\), manteniendo la proporción constante a lo largo del tiempo.
En conjunto, el modelo de riesgos proporcionales se expresa como
\(h_{0}(t)\) es la función de riesgo basal no parametrizada, común a todos los individuos.
\(\exp(z\beta)\) es el factor de ajuste dependiente de las covariables que escala uniformemente esa curva basal.
Este modelo, propuesto originalmente por Cox, permite estimar los coeficientes \(\beta\) sin especificar una forma paramétrica para \(h_{0}(t)\), utilizando la denominada verosimilitud parcial. De este modo, se pueden incorporar variables explicativas al análisis de supervivencia con datos censurados, extendiendo el alcance de las regresiones clásicas (lineal o logística) a escenarios temporales donde no se asume distribución paramétrica para la supervivencia basal.
13.2 Comparación de dos distribuciones de supervivencia mediante verosimilitud parcial
Para ajustar un modelo de riesgos proporcionales sin especificar la forma de la función de riesgo basal, se recurre a la verosimilitud parcial, que sólo involucra los tiempos de falla (censuras no aportan factores). A cada tiempo de falla \(t_{j}\) (ordenados de menor a mayor) le corresponde un conjunto de individuos “en riesgo” justo antes de \(t_{j}\), denotado por \(R_{j}\). Bajo el modelo de riesgos proporcionales, la tasa de riesgo del sujeto \(i\) en \(t_{j}\) se escribe como
En el caso de comparar dos grupos (control versus tratamiento), basta con tomar \(z_{i}=0\) para controles y \(z_{i}=1\) para tratados, de modo que \(\psi_{i}=1\) en el grupo control y \(\psi_{i}=\psi=e^{\beta}\) en el grupo experimental.
13.2.1 Probabilidad condicional en cada tiempo de falla
Supongamos que, en el primer tiempo de falla \(t_{1}\), el paciente \(i\in R_{1}\) es el que falla. La probabilidad condicional de que justo ese individuo falle antes que los otros en riesgo es
donde el factor \(h_{0}(t_{1})\) se anula en numerador y denominador. Tras ese evento, todos los sujetos que fallaron o fueron censurados antes del siguiente fallo forman el nuevo riesgo residual \(R_{2}\), y se repite el mismo razonamiento para obtener
Obsérvese que los tiempos exactos no intervienen, sino sólo el orden de las fallas y la pertenencia de cada sujeto al grupo control ( \(\psi_{i}=1\) ) o tratamiento ( \(\psi_{i}=\psi\) ). Además, la función de riesgo basal \(h_{0}(t)\) queda completamente fuera de esta expresión.
13.2.3 Ejemplo sintético
En un ejemplo del capítulo anterior teníamos seis pacientes: tres en control (\(\psi_{i}=1\)) y tres en tratamiento (\(\psi_{i}=\psi\)). Los tiempos de falla ordenados fueron 6, 10, 15 y 25, sin empates. El riesgo inicial es \(R_{1}={1,2,3,4,5,6}\), con \(\psi_{1}=\psi_{2}=\psi_{4}=1\) y \(\psi_{3}=\psi_{5}=\psi_{6}=\psi\). En cada etapa:
En \(t_{1}=6\) falla el paciente 1 (control), por lo que
Tras eso, el paciente 1 sale de riesgo y, además, el paciente 2 (control) queda censurado en \(t=7\). Queda entonces \(R_{2}={3,4,5,6}\), con dos controles (\(\psi=1\)) y dos tratados (\(\psi\)). En \(t_{2}=10\) falla el paciente 3 (tratado), así que
El estimador de máxima verosimilitud parcial ( MPLE ) \(\hat\beta\) es el valor que maximiza \(\ell(\beta)\). Nótese que, aunque ésta es una “verosimilitud”, no es una función de probabilidad en el sentido clásico, pues no contiene factores para tiempos censurados; sin embargo, todas las derivaciones estadísticas (puntuales, errores estándar, tests) se obtienen de forma análoga a una verosimilitud ordinaria.
13.2.4 Búsqueda de \(\hat\beta\) en R
Para hallar \(\hat\beta\) usamos optim(), indicando que maximizemos la función. Por ejemplo:
plsimple <-function(beta){ psi <-exp(beta) result <- (beta-log(3*psi+3)-log(3*psi +1)-log(2*psi +1))return(result)}# Se busca el máximo de plsimple en el intervalo [-3, 1]res <-optim(par=0, fn=plsimple, method="L-BFGS-B",lower=-3, upper=1,control=list(fnscale=-1))res$par # valor de beta que maximiza la log-verosimilitud parcial
[1] -1.326129
En este ejemplo el resultado fue \(\hat\beta\approx -1.326\), de donde \(\hat\psi = e^{-1.326}\approx 0.265\) mide la razón de riesgos estimada entre el grupo experimental y el control.
13.2.5 Relación con el test de rango logarítmico
Al derivar \(\ell(\beta)\) respecto a \(\beta\) y evaluarlo en \(\beta=0\), se obtiene el estadístico score correspondiente. En efecto, esa derivada coincide con la suma de \((d_{0j}-e_{0j})\) a lo largo de los tiempos de falla y, por tanto, equivale al estadístico clásico del test de rango logarítmico. Esto explica por qué el test de rango log—rank surge como prueba score en este modelo de Cox: para \(H_{0}:\beta=0\), el score \(U(\beta)|_{\beta=0}\) es asintóticamente normal con varianza dada por la información de Fisher. Así, sin conocer \(h_{0}(t)\), podemos contrastar \(H_{0}:\beta=0\) frente a \(H_{A}:\beta\neq0\) usando el estadístico score o la razón de verosimilitudes parciales.
13.3 Pruebas de hipótesis basadas en la verosimilitud parcial
En el contexto del modelo de riesgos proporcionales, se pueden derivar analogías de las tres pruebas habituales en teoría de la verosimilitud—Wald, score y razón de verosimilitudes—empleando la verosimilitud parcial. Aunque la teoría subyacente es más compleja que en el caso de verosimilitud completa, en la práctica estas pruebas suelen arrojar resultados muy similares.
Denotemos por
\[
l(\beta)
\]
la log–verosimilitud parcial, por
\[
S(\beta)=l'(\beta)
\]
la función score, y por
\[
I(\beta) = -l''(\beta) = -S'(\beta)
\]
la información observada, que mide la curvatura de la log–verosimilitud en cada valor de \(\beta\). El valor \(\hat\beta\) que maximiza \(l(\beta)\) es el estimador de máxima verosimilitud parcial (MPLE).
13.3.0.1 La prueba de Wald
La prueba de Wald se basa en la aproximación normal de \(\hat\beta\). Su estadístico es
Así, para contrastar \(H_{0}:\beta=0\) frente a una alternativa bilateral, se rechaza \(H_{0}\) si \(\lvert Z_{W}\rvert > z_{\alpha/2}\). Equivalentemente,
En particular, en este modelo de Cox, la prueba score coincide con el test de rango logarítmico.
13.3.0.3 La prueba de razón de verosimilitudes
La prueba de razón de verosimilitudes compara los valores de la log–verosimilitud parcial bajo la hipótesis nula \(\beta=0\) y bajo la estimación \(\hat\beta\). El estadístico es
\[
\Lambda \;=\; 2\bigl[l(\hat\beta)\;-\;l(0)\bigr]
\;\sim\;\chi^{2}_{1}\quad(\text{aprox. bajo }H_{0}).
\]
Una ventaja de este test es su invarianza ante transformaciones monótonas de \(\beta\) (por ejemplo, usar \(\psi=e^{\beta}\)).
13.3.1 Ejemplo (continuación)
En la sección anterior se obtuvo la log–verosimilitud parcial
correspondiente a los datos sintéticos de seis pacientes (tres controles y tres tratados). Usando la función coxph() de R se obtienen los siguientes resultados:
Call:
coxph(formula = Surv(tt, delta) ~ trt)
n= 6, number of events= 4
coef exp(coef) se(coef) z Pr(>|z|)
trt -1.3261 0.2655 1.2509 -1.06 0.289
exp(coef) exp(-coef) lower .95 upper .95
trt 0.2655 3.766 0.02287 3.082
Concordance= 0.7 (se = 0.116 )
Likelihood ratio test= 1.21 on 1 df, p=0.3
Wald test = 1.12 on 1 df, p=0.3
Score (logrank) test = 1.27 on 1 df, p=0.3
A continuación se muestran los cálculos numéricos en R de cada prueba, usando funciones para derivar la log–verosimilitud parcial definida como plsimple:
library(numDeriv)## 1) Prueba score (Score) en beta = 0score0 <-grad(func=plsimple, x=0) # S(0)info0 <--hessian(func=plsimple, x=0) # I(0), la informaciónchisq_S <- (score0^2) / info0pval_S <-pchisq(chisq_S, df=1, lower.tail=FALSE)## 2) Prueba de Waldbetahat <- result.cox$coefficients # ̂β obtenido por optim o coxphinfo_b <--hessian(func=plsimple, x=betahat)se_b <-1/sqrt(info_b) # desviación estándar de ̂βZ_wald <- betahat / se_bpval_W <-2*pnorm(abs(Z_wald), lower.tail=FALSE)## 3) Prueba de razón de verosimilitudesloglik_hat <-plsimple(betahat)loglik_0 <-plsimple(0)chisq_LR <-2* (loglik_hat - loglik_0)pval_LR <-pchisq(chisq_LR, df=1, lower.tail=FALSE)
13.4 Verosimilitud parcial con múltiples covariables
Cuando deseamos incluir varios predictores en el modelo de riesgos proporcionales, extendemos lo visto en la sección anterior definiendo para cada individuo \(i\):
Un vector de covariables \(z_{i} = (z_{i1}, z_{i2}, \dots, z_{ip})'\).
Un vector de coeficientes \(\beta = (\beta_{1}, \beta_{2}, \dots, \beta_{p})'\).
La razón de riesgos de \(i\) respecto al riesgo “base” se escribe \[
\psi_{i} \;=\; \exp\bigl(z_{i}'\,\beta\bigr),
\] de modo que el riesgo instantáneo del sujeto \(i\) en tiempo \(t\) es \[
h_{i}(t) \;=\; h_{0}(t)\,\psi_{i},
\] donde \(h_{0}(t)\) es el riesgo basal no parametrizado.
Sea \(\{t_{1} < t_{2} < \cdots < t_{D}\}\) el conjunto de los \(D\) tiempos de falla observados. Para cada tiempo de falla \(t_{j}\), definimos el conjunto en riesgo\[
R_{j} \;=\; \{\,\text{todos los individuos aún “vivos” justo antes de }t_{j}\}.
\] De ese conjunto, precisamente uno falla en \(t_{j}\).
13.4.1 Verosimilitud parcial
La verosimilitud parcial se construye producto de razones condicionales: en cada tiempo de falla \(t_{j}\), la probabilidad de que el sujeto \(i\in R_{j}\) sea quien falle es \[
\frac{h_{i}(t_{j})}{\sum_{k\in R_{j}} h_{k}(t_{j})}
\;=\;
\frac{h_{0}(t_{j})\,\psi_{i}}{\sum_{k\in R_{j}} h_{0}(t_{j})\,\psi_{k}}
\;=\;
\frac{\psi_{i}}{\sum_{k\in R_{j}} \psi_{k}},
\] pues el factor \(h_{0}(t_{j})\) se cancela en numerador y denominador.
Si etiquetamos con \(\delta_{j}=1\) al individuo que efectivamente falla en \(t_{j}\), la verosimilitud parcial total resulta \[
L(\beta)
\;=\;
\prod_{j=1}^{D}
\frac{\psi_{j}}{\sum_{k\in R_{j}} \psi_{k}},
\] donde \(\psi_{j} = \exp\bigl(z_{j}'\beta\bigr)\) corresponde al individuo que falla en \(t_{j}\).
Sólo aparecen los tiempos de falla, no los censurados.
El orden de los tiempos importa, pero no sus valores numéricos exactos.
13.4.2 Función score e información
Para derivar estimadores y pruebas, necesitamos la función score \[
S(\beta)
\;=\;
\frac{\partial \ell(\beta)}{\partial \beta}
\;\in\;\mathbb{R}^{p},
\] cuyas componentes son, para \(l=1,\dots,p\), \[
S_{l}(\beta)
\;=\;
\frac{\partial \ell(\beta)}{\partial \beta_{l}}
\;=\;
\sum_{j=1}^{D}
\Biggl[
z_{j\,l}
\;-\;
\frac{\sum_{k\in R_{j}}
z_{k\,l}\,\exp(z_{k}'\beta)}
{\sum_{k\in R_{j}} \exp(z_{k}'\beta)}
\Biggr].
\] Intuitivamente, en cada tiempo de falla \(t_{j}\) se resta el valor observado \(z_{j\,l}\) menos el “promedio ponderado” de \(z_{\,\cdot\,l}\) en el riesgo \(R_{j}\). Cuando sólo hay una covariable binaria, \(S(\beta=0)\) coincide con el estadístico de rango logarítmico.
La matriz de información observada (o Hessiano negativo) es \[
I(\beta)
\;=\;
-\,\frac{\partial^{2}\ell(\beta)}{\partial \beta\,\partial \beta'}
\;=\;
-\,\frac{\partial S(\beta)}{\partial \beta'}
\;\in\;\mathbb{R}^{p\times p}.
\] Cada entrada \([I(\beta)]_{l,m} = -\,\frac{\partial^{2}\ell}{\partial\beta_{l}\,\partial\beta_{m}}\). En la práctica, \(I(\beta)\) se evalúa numéricamente o a través del software, y su inversa aproxima la matriz de varianzas y covarianzas de \(\hat\beta\).
13.4.3 Pruebas de hipótesis multivariantes
Sea \(\hat\beta\) el valor que maximiza \(\ell(\beta)\). Para contrastar \[
H_{0}: \beta = 0
\quad\text{versus}\quad
H_{A}: \beta \neq 0,
\] podemos usar las tres formas clásicas:
Prueba de Wald \[
X_{W}^{2}
\;=\;
\hat{\beta}' \,I(\hat{\beta})\,\hat{\beta}
\;\sim\;\chi^{2}_{p}\quad(\text{aprox. bajo }H_{0}).
\] Equivalente a formar \(Z_{l} = \hat\beta_{l}/\mathrm{s.e.}(\hat\beta_{l})\) y comparar contra \(\chi^{2}\).
Prueba score (Score) \[
X_{S}^{2}
\;=\;
S(0)'\;I(0)^{-1}\;S(0)
\;\sim\;\chi^{2}_{p}\quad(\text{aprox. bajo }H_{0}).
\] Evalúa la pendiente de \(\ell(\beta)\) en \(\beta=0\) versus su varianza.
Prueba de razón de verosimilitudes \[
X_{LR}^{2}
\;=\;
2\,\bigl[\ell(\hat\beta)\;-\;\ell(0)\bigr]
\;\sim\;\chi^{2}_{p}\quad(\text{aprox. bajo }H_{0}).
\] Es invariante a reparametrizaciones (por ejemplo, si se usa \(\psi=\exp(\beta)\)).
En todos los casos, si \(p>1\), el estadístico se compara contra \(\chi^{2}_{p}\).
Nota práctica.
La mayoría de paquetes (por ejemplo, coxph() en R) reportan directamente \(\hat\beta\), sus errores estándar, y los valores de \(\chi^{2}\) para las tres pruebas, junto con el valor–\(p\).
13.5 Estimación de la función de supervivencia basal
Tras ajustar un modelo de riesgos proporcionales, queremos reconstruir la supervivencia “base” (cuando todos los covariables valen cero). Primero, la tasa de riesgo basal en cada tiempo de falla \(t_{i}\) se estima como \[
\hat{h}_{0}(t_{i})
\;=\;
\frac{d_{i}}
{\sum_{j\in R_{i}} \exp\bigl(z_{j}'\,\hat\beta\bigr)},
\]
donde:
\(d_{i}\) es el número de eventos en \(t_{i}\).
\(R_{i}\) es el conjunto de individuos en riesgo justo antes de \(t_{i}\).
\(\hat\beta\) son los coeficientes estimados.
Si sólo hay un grupo (\(\beta=0\)), esto coincide con el estimador de Nelson–Aalen: \[
\hat{h}_{0}(t_{i}) = \frac{d_{i}}{|R_{i}|}.
\]
Para obtener la supervivencia basal acumulada, definimos \[
\hat{H}_{0}(t)
\;=\;
\sum_{t_{j}\le t} \hat{h}_{0}(t_{j}),
\qquad
\hat{S}_{0}(t)
\;=\;
\exp\bigl[-\hat{H}_{0}(t)\bigr].
\]
Esta \(\hat{S}_{0}(t)\) corresponde a la supervivencia de un individuo con \(z=0\). Si algún covariable no puede significar “cero” (ej., edad), su interpretación es limitada.
Para un individuo con vector de covariables \(z\), la supervivencia condicional es \[
\hat{S}(t \mid z)
\;=\;
\bigl[\hat{S}_{0}(t)\bigr]^{\exp\bigl(z'\,\hat\beta\bigr)}.
\]
En R, la función basehaz() extrae la hazard acumulada basal; conviene usar centered=FALSE para que calcule \(H_{0}(t)\) en \(\beta=0\) (el valor por defecto centra en la media de los covariados, lo cual no siempre es apropiado para variables categóricas).
13.6 Manejo de tiempos de supervivencia empatados
En la práctica, pueden aparecer “ties” (empates) en los tiempos de falla por dos razones distintas:
Tiempo continuo registrado con redondeo.
Si los tiempos verdaderos son continuos pero se registran en días, semanas o meses enteros, varios individuos pueden compartir el mismo valor registrado aunque en realidad sus tiempos difieran ligeramente.
Tiempo verdaderamente discreto.
Cuando el evento sólo puede ocurrir en intervalos discretos (p. ej., número de ciclos o de compresiones hasta fallo).
En ambos casos, el tratamiento de los empates en el ajuste del modelo de riesgos proporcionales difiere ligeramente. A continuación se describen los dos enfoques principales, y luego se mencionan dos aproximaciones prácticas para datos con muchos empates.
Si suponemos que los tiempos son contínuos pero están redondeados, podemos aplicar el modelo usual \[
h(t;z) \;=\; e^{z\,\beta}\,h_{0}(t),
\]
y escribir la verosimilitud parcial como producto de factores “marginales” para cada tiempo de falla distinto. Cuando \(r\) sujetos fallan simultáneamente en \(t_i\),
Nombramos a los individuos en riesgo justo antes de \(t_i\) como \(R_i\).
Enumeramos todas las posibles permutaciones de ordenamiento entre esos \(r\) sujetos que fallan primero dentro de ese conjunto.
Cada término de la verosimilitud parcial en \(t_i\) es la suma de probabilidades correspondientes a cada posible ordenamiento.
Por ejemplo, si en \(t=1\) dos pacientes del grupo tratado fallan de entre 10 en riesgo (4 tratados y 6 control):
Los hazard ratios son \(\exp(\beta)\) para tratados y \(1\) para controles.
Hay dos sujetos tratados que podrían fallar en cualquier orden; la contribución “marginal” es \[
L_{1}(\beta)
\;=\;
\frac{e^{\beta}}{4\,e^{\beta} + 6}\,\cdot\,\frac{e^{\beta}}{3\,e^{\beta} + 6}
\;+\;
\frac{e^{\beta}}{4\,e^{\beta} + 6}\,\cdot\,\frac{e^{\beta}}{3\,e^{\beta} + 6}
\;=\;
2 \cdot \frac{e^{2\beta}}{(4\,e^{\beta} + 6)\,(3\,e^{\beta} + 6)}.
\]
Para cada tiempo de falla con \(r>1\) empates, se repite este procedimiento, sumando sobre todas las permutaciones de tamaño \(r\).
Este método se llama marginal o Breslow exacto, y coincide con la solución “exacta” para el caso continuo redondeado.
Si los tiempos son verdaderamente discretos, conviene formular un modelo de riesgos discretos tipo logístico: \[
\frac{h(t;z)}{1 - h(t;z)} \;=\; e^{z\,\beta}\,\frac{h_{0}(t)}{1 - h_{0}(t)}.
\]
Cuando \(r\) sujetos fallan simultáneamente en \(t_i\) y hay \(\binom{n_i}{r}\) formas de elegirlos:
El numerador de la contribución parcial es el producto de los hazard ratios de los \(r\) sujetos que realmente fallan.
El denominador es la suma, sobre todas las \(\binom{n_i}{r}\) posibles selecciones de \(r\) individuos de entre los \(n_i\) en riesgo, del correspondiente producto de hazard ratios.
Por ejemplo, si en \(t=1\) dos tratados fallan de entre 10 en riesgo:
Numerador: \(e^{2\beta}\).
Denominador: \(\displaystyle \sum_{\substack{(i,j)\subset R_1}} \psi_i\,\psi_j \;=\; 6\,e^{2\beta} \;+\; 24\,e^{\beta} \;+\; 15,\)
donde hay 6 pares ambos tratados, 24 pares mixtos y 15 pares ambos control.
Este enfoque se denomina exacto discreto (o “Breslow exacto discreto”). Con pocas observaciones se puede enumerar, pero si hay muchos empates se vuelve computacionalmente costoso.
13.6.3 Aproximaciones para muchos empates
Cuando hay demasiados empates para enumerar, conviene usar aproximaciones que eviten la suma sobre permutaciones completas:
Aproximación de Breslow.
Se simplifica el denominador para que sólo dependa del total en riesgo \(n_i\), elevándolo a la potencia \(r\). En el ejemplo con dos empates en \(t=1\): \[
L_{1}^{\text{Breslow}}(\beta)
\;=\;
\frac{\binom{2}{2}\,e^{2\beta}}{\bigl(4\,e^{\beta} + 6\bigr)^{2}}
\;=\;
\frac{2\,e^{2\beta}}{\bigl(4\,e^{\beta} + 6\bigr)^{2}},
\]
y análogamente para otros tiempos con \(r=2\).
Aproximación de Efron.
Refina la anterior corrigiendo parcialmente el denominador para reflejar cuántos sujetos “ya han fallado” dentro del mismo tiempo. Por ejemplo, para dos empates en \(t=1\): \[
L_{1}^{\text{Efron}}(\beta)
\;=\;
\frac{e^{\beta}}{4\,e^{\beta}+6}\;\times\;
\frac{e^{\beta}}{\bigl(4\,e^{\beta}+6\bigr) \;-\; \tfrac{1}{2}\,(2\,e^{\beta})}
\;=\;
\frac{e^{\beta}}{4\,e^{\beta} + 6}\;\times\;
\frac{e^{\beta}}{3\,e^{\beta} + 6},
\]
donde en el segundo factor se restan “a mitad” los dos sujetos que fallarán. De modo similar para otros tiempos con empates.
Tanto Breslow como Efron dan valores muy cercanos al método exacto discreto, pero con notable ahorro computacional cuando hay muchos empates.
13.7 Truncamiento a la izquierda
En muchos estudios clínicos es relevante medir el tiempo desde el diagnóstico hasta el evento (muerte o censura) en lugar de desde el ingreso al ensayo. Cuando los pacientes se inscriben en el estudio un tiempo después del diagnóstico, los casos con supervivencia muy corta (que fallecerían antes de inscribirse) no se observan. Este sesgo se conoce como truncamiento a la izquierda.
Para ilustrar, consideremos un ensayo hipotético con seis pacientes, donde:
tt es el tiempo desde el ingreso hasta el evento,
status indica muerte (1) o censura (0),
grp es el indicador de tratamiento (0=control, 1=experimental),
backTime es el tiempo retrospectivo hasta el diagnóstico (negativo):
Call:
coxph(formula = Surv(tm.enter, tm.exit, status, type = "counting") ~
grp)
coef exp(coef) se(coef) z p
grp -1.073 0.342 1.235 -0.869 0.385
Likelihood ratio test=0.81 on 1 df, p=0.3677
n= 6, number of events= 4
El resultado confirma de nuevo un efecto no significativo (\(p\approx0.37\)), pero ahora referenciado a la supervivencia desde diagnóstico.
De manera similar, en los datos de Channing House, al comparar supervivencia de hombres y mujeres condicionando a alcanzar cierta edad de ingreso, es imprescindible usar el enfoque de start time en Surv() para evitar estimaciones sesgadas cuando el riesgo inicial varía con la edad:
Call:
coxph(formula = Surv(entryYears, exitYears, cens, type = "counting") ~
sex, data = channing68)
coef exp(coef) se(coef) z p
sexMale 0.2733 1.3143 0.1762 1.552 0.121
Likelihood ratio test=2.3 on 1 df, p=0.1292
n= 451, number of events= 172
13.8 Ajuste por covariables
En análisis de supervivencia, además del tratamiento o intervención principal, a menudo disponemos de múltiples variables clínicas, demográficas o biomarcadores que pueden influir en el tiempo hasta el evento. En ensayos aleatorizados, la aleatorización debe equilibrar los factores de confusión, pero suele ser conveniente incluirlas en el modelo para corregir posibles desbalances y comprender el efecto de estas covariables. En estudios observacionales, el ajuste por covariables es esencial para estimar sin sesgos el efecto de la intervención y explorar el papel de otros factores.
13.8.1 Ejemplo: corrección de un confusor genético
Consideremos los datos simulados donde el genotipo (“mutant”/“wt”) confunde la estimación del efecto del tratamiento. Primero ajustamos un modelo de Cox sin tener en cuenta el genotipo:
Call:
coxph(formula = Surv(ttAll, status) ~ trt)
coef exp(coef) se(coef) z p
trttreatment 0.4639 1.5902 0.1173 3.955 7.64e-05
Likelihood ratio test=15.51 on 1 df, p=8.198e-05
n= 300, number of events= 300
Este resultado sugiere (incorrectamente) que el tratamiento aumenta el riesgo (\(e^{0.464}=1.59\)). Al estratificar por genotipo, corregimos esta interpretación:
coxph(Surv(ttAll, status) ~ trt +strata(genotype))
Call:
coxph(formula = Surv(ttAll, status) ~ trt + strata(genotype))
coef exp(coef) se(coef) z p
trttreatment -0.4530 0.6357 0.1643 -2.757 0.00584
Likelihood ratio test=7.66 on 1 df, p=0.005655
n= 300, number of events= 300
Ahora \(\hat\beta<0\), indicando que el tratamiento reduce la tasa de fallo dentro de cada genotipo. Finalmente, podemos incluir el genotipo como covariable:
coxph(Surv(ttAll, status) ~ trt + genotype)
Call:
coxph(formula = Surv(ttAll, status) ~ trt + genotype)
coef exp(coef) se(coef) z p
trttreatment -0.4523 0.6361 0.1634 -2.768 0.00563
genotypewt -1.5676 0.2085 0.1825 -8.589 < 2e-16
Likelihood ratio test=93.39 on 2 df, p=< 2.2e-16
n= 300, number of events= 300
Aquí, además del efecto corregido del tratamiento, cuantificamos que el genotipo “wt” tiene un riesgo menor que el “mutant”.
13.9 Covariables categóricas y continuas
En modelos de riesgos proporcionales, además de variables indicadoras para comparar dos grupos, es habitual incorporar covariables adicionales que reflejen características del paciente, como edad, género o raza. Una covariable continua (por ejemplo, edad) cuantifica cambios en el log–hazard por unidad de la variable, mientras que una covariable categórica de \(L\) niveles se introduce mediante \(L-1\) variables dummy comparadas con un nivel de referencia.
Sea \(z_{i}=(z_{i1},\dots,z_{ik})^\top\) el vector de \(k\) covariables del sujeto \(i\), donde algunos \(z_{ij}\) son indicadores (0/1) y otros numéricos. El modelo de riesgos proporcionales se escribe
de modo que el hazard ratio relativo a la línea base es \(\psi_{i}=e^{z_{i}^{\prime}\beta}\). Entonces:
Para una covariable continua\(z_{ij}\), \(\beta_{j}\) es el cambio de log–hazard por unidad de \(z_{ij}\).
Para un dummy\(z_{j\ell}\) que indica el nivel \(\ell\) de una variable con referencia nivel 0, \(\beta_{j\ell}\) compara el hazard de nivel \(\ell\) frente al de referencia.
Es posible mejorar el modelo incluyendo:
Transformaciones o términos polinomiales de covariables continuas (e.g. \(\log z\), \(z^{2}\)) si la relación no es lineal.
Interacciones entre covariables, por ejemplo \(z_{a}\times z_{b}\), para capturar efectos no aditivos.
13.9.1 Ejemplo: ajuste de un modelo de Cox con covariables continua y discreta.
En este ejemplo generamos un conjunto de datos de supervivencia con dos covariables —raza (tres niveles: “white”, “black” y “other”) y edad (continua)— para ilustrar cómo se ajusta un modelo de riesgos proporcionales de Cox y cómo se recuperan los valores verdaderos de los efectos.
Primero creamos 60 edades uniformes entre 40 y 80 años, y asignamos por igual 20 observaciones a cada nivel de raza, tomando “white” como categoría de referencia. A continuación, definimos el tasa de fallo de cada sujeto mediante un modelo lineal en la escala logarítmica:
de modo que la edad incrementa la tasa de fallo en un 5 % por año y las razas “black” y “other” elevan la tasa en un factor \(e^1\) y \(e^2\), respectivamente. Simulamos entonces tiempos de supervivencia exponenciales sin censura y ajustamos el modelo de Cox:
set.seed(123)age <-runif(n =60, min =40, max =80)race <-factor(rep(c("white","black","other"), each =20))race <-relevel(race, ref ="white")X <-model.matrix(~ race + age)[,-1] #Ilustración de la matroz de diseñolog.rate <--4.5+c(rep(0,20), rep(1,20), rep(2,20)) +0.05* agett <-rexp(n =60, rate =exp(log.rate))status <-rep(1, 60)library(survival)result.cox <-coxph(Surv(tt, status) ~ race + age)summary(result.cox)
Call:
coxph(formula = Surv(tt, status) ~ race + age)
n= 60, number of events= 60
coef exp(coef) se(coef) z Pr(>|z|)
raceblack 1.37357 3.94941 0.37288 3.684 0.00023 ***
raceother 2.55178 12.82995 0.45654 5.589 2.28e-08 ***
age 0.07686 1.07989 0.01555 4.943 7.70e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
raceblack 3.949 0.25320 1.902 8.202
raceother 12.830 0.07794 5.243 31.393
age 1.080 0.92602 1.047 1.113
Concordance= 0.759 (se = 0.031 )
Likelihood ratio test= 44.54 on 3 df, p=1e-09
Wald test = 36.16 on 3 df, p=7e-08
Score (logrank) test = 38.87 on 3 df, p=2e-08
El ajuste recupera coeficientes muy cercanos a los valores de simulación. Estos resultados muestran que, ajustando por edad, la raza “black” multiplica el riesgo de muerte por ≈ 3.94 y “other” por ≈ 12.82 respecto a “white”, mientras que cada año adicional aumenta el hazard en un 8% aproximadamente. Los valores p confirman la significación estadística de todos los efectos.
13.10 Pruebas de hipótesis para modelos anidados
Cuando ajustamos varios modelos de Cox que difieren en las covariables incluidas, sólo podemos comparar aquellos cuyos conjuntos de predictores sean anidados: es decir, que las covariables de un modelo reducido estén contenidas en el modelo completo.
En el ejemplo de los datos pharmacoSmoking consideramos tres modelos:
Modelo A: sólo ageGroup4
Modelo B: sólo employment
Modelo C: ageGroup4 + employment
Modelos A y B quedan ambos anidados en C, pero A y B entre sí no lo están, por lo que no pueden compararse directamente.
13.10.1 Ajuste y log-verosimilitudes
Al ajustar cada modelo con coxph obtenemos estas log-verosimilitudes parciales (logLik):
Para evaluar si, por ejemplo, ageGroup4 aporta información adicional a un modelo que ya contiene employment, comparamos A (reducido) contra C (completo). El estadístico de razón de verosimilitudes es
y concluimos que ageGroup4 por sí sola es altamente significativa.
13.11 Criterio de Información de Akaike (AIC) para modelos no anidados
Cuando disponemos de muchos predictores potenciales, el procedimiento paso a paso (stepwise) basado en p-valores presenta varios problemas:
Comparaciones múltiples: los p-valores dejan de tener la interpretación usual al evaluar sucesivos modelos (p-valor condicionales en modelo anterior).
Anidamiento: sólo son válidas para comparar modelos anidados.
Una alternativa más robusta para buscar el modelo “óptimo” es el Akaike Information Criterion (AIC), definido como
\[
\mathrm{AIC} = -2\,\ell(\hat\beta)\;+\;2\,k
\]
donde
- \(\ell(\hat\beta)\) es la log-verosimilitud parcial evaluada en el M.P.L.E.,
- \(k\) el número de parámetros.
El primer término mide el ajuste al dato (menor \(-2\,\ell\) = mejor ajuste) y el segundo penaliza la complejidad (más parámetros = mayor penalización). Por tanto, un modelo con AIC más baja es preferible.
13.11.1 Ejemplo con pharmacoSmoking
Habiendo ajustado los tres modelos anidados de la sección anterior:
AIC(modelA.coxph)
[1] 766.086
AIC(modelB.coxph)
[1] 774.2464
AIC(modelC.coxph)
[1] 765.5194
El mejor según AIC es el Modelo C (ageGroup4 + employment), seguido muy de cerca por A.
13.11.2 Selección paso a paso guiada por AIC
En lugar de usar p-valores, podemos usar la función step() con criterio AIC:
Cuya tabla de coeficientes (result.step) confirma la significancia de los predictores retenidos.
Nota:
El BIC (Bayesian Information Criterion) sustituye la penalización \(2k\) por \(k\log(n)\), favoreciendo modelos aún más parsimoniosos cuando \(n\) es grande.
Ninguno de estos criterios sustituye un marco de validación externa; siempre conviene evaluar el desempeño predictivo en datos no usados para ajuste.