10 votos

Cómo generar datos de supervivencia con covariables dependientes del tiempo utilizando R

Quiero generar el tiempo de supervivencia a partir de un modelo de riesgos proporcionales de Cox que contiene covariables dependientes del tiempo. El modelo es

$h(t|X_i) =h_0(t) \exp(\gamma X_i + \alpha m_{i}(t))$

donde $X_i$ se genera a partir de Binomial(1,0.5) y $m_{i}(t)=\beta_0 + \beta_1 X_{i} + \beta_2 X_{i} t$ .

Los valores reales de los parámetros se utilizan como $\gamma = 1.5, \beta_0 = 0, \beta_1 = -1, \beta_2 = -1.5, h_0(t) = 1$

Para las covariables independientes del tiempo (es decir $h(t|X_i) =h_0(t) \exp(\gamma X_i) $ He generado lo siguiente

#For time independent case
# h_0(t) = 1
gamma <- -1
u <- runif(n=100,min=0,max=1)
Xi <- rbinom(n=100,size=1,prob=0.5)
T <- -log(u)/exp(gamma*Xi)

¿Puede alguien ayudarme a generar datos de supervivencia con covariantes temporales?

0 votos

¿Qué tipo de función es $m_i(t)$ ? ¿Es continuo? ¿Constante a trozos? Probablemente se necesitará un algoritmo diferente en función de ello.

0 votos

$m_{i}(t)$ es una covariable dependiente del tiempo, para simplificar se puede considerar una relación proporcional con el tiempo.

0 votos

He editado mi pregunta, considerando una función de $m_i(t)$

10voto

Cerin Puntos 197

De acuerdo con tu código R, estás asumiendo una distribución exponencial (peligro constante) para tu peligro de referencia. Por lo tanto, sus funciones de peligro son:

$$ h\left(t \mid X_i\right) = \begin{cases} \exp{\left(\alpha \beta_0\right)} & \text{if $X_i = 0$,} \\ \exp{\left(\gamma + \alpha\left(\beta_0+\beta_1+\beta_2 t\right)\right)} & \text{if $X_i = 1$.} \end{cases} $$

A continuación, los integramos con respecto a $t$ para obtener la función de riesgo acumulado:

$$ \begin{align} \Lambda\left(t\mid X_i\right) &= \begin{cases} t \exp{\left(\alpha \beta_0\right)} & \text{if $X_i=0$,} \\ \int_0^t{\exp{\left(\gamma + \alpha\left(\beta_0+\beta_1+\beta_2 \tau\right)\right)} \,d\tau} & \text{if $X_i=1$.} \end{cases} \\ &= \begin{cases} t \exp{\left(\alpha \beta_0\right)} & \text{if $X_i=0$,} \\ \exp{\left(\gamma + \alpha\left(\beta_0+\beta_1\right)\right)} \frac{1}{\alpha\beta_2} \left(\exp\left(\alpha\beta_2 t\right)-1\right) & \text{if $X_i=1$.} \end{cases} \end{align} $$

Esto nos da las funciones de supervivencia:

$$ \begin{align} S\left(t\right) &= \exp{\left(-\Lambda\left(t\right)\right)} \\ &= \begin{cases} \exp{\left(-t \exp{\left(\alpha \beta_0\right)}\right)} & \text{if $X_i=0$,} \\ \exp{\left(-\exp{\left(\gamma + \alpha\left(\beta_0+\beta_1\right)\right)} \frac{1}{\alpha\beta_2} \left(\exp\left(\alpha\beta_2 t\right)-1\right)\right)} & \text{if $X_i=1$.} \end{cases} \end{align} $$

A continuación, se genera por muestreo $X_i$ y $U\sim\mathrm{Uniform\left(0,1\right)}$ sustituyendo $U$ para $S\left(t\right)$ y reordenando la fórmula apropiada (basada en $X_i$ ) para simular $t$ . Esto debería ser un álgebra sencilla que puedes codificar en R, pero por favor hazme saber por medio de un comentario si necesitas más ayuda.

1 votos

Muchas gracias por el álgebra. Voy a codificar en R y me pondré en contacto con usted para obtener más ayuda.

0 votos

Qué respuesta tan perfecta, @tristan. Tenía una pregunta similar y encontré tu respuesta. Simplemente impresionante.

0 votos

@tristan Estoy un poco confundido sobre el significado de alfa en la primera ecuación que das donde Xi = 0. ¿Te importaría ampliar un poco eso? Gracias.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X