2 votos

Modelización del índice de peligrosidad en R

Estoy escribiendo mi tesis sobre la predicción de quiebra Pr(Y=1) a través de una puntuación de sentimiento que he calculado (x1) y una variable de control llamada Z-Score (x2). Sin embargo tengo muchas dudas sobre cómo integrar mis datos en la fórmula de R que he encontrado. Este es mi código:

library(survival)
## Add survival object. status = 1 is bankruptcy
WRDS$SurvObj <- with(WRDS, Surv(as.numeric(DEL == 1)))

## model
res.cox1 <- coxph(SurvObj ~ SCORE10K+TIME+Z, data =  WRDS)
summary(res.cox1)

El siguiente es mi conjunto de datos, x1,x2,x3 ,x4 & x5 son subvariables que utilicé para crear Z, así que no las tengas en cuenta:

    CIK TIME DEL SCORE10K SCOREMDA AbsDiff   x1    x2   x3        x4   x5         Z
1 10254    1   0     0.69     0.13    0.56 0.24 -0.36 0.15 20.578713 0.39 13.016228
2 10254    2   0     0.66     0.13    0.53 0.25 -0.16 0.20 10.676150 0.45  7.591690
3 10254    3   0     0.65     0.18    0.47 0.02 -0.07 0.12  5.063745 0.33  3.690247
4 10254    4   0     0.62     0.19    0.43 0.06  0.03 0.20  6.476520 0.38  5.039912
5 20629    1   0     0.70     0.26    0.44 0.57  1.15 0.12  4.859852 1.34  6.945911
6 20629    2   0     0.74     0.30    0.44 0.61  1.17 0.13  6.950391 1.26  8.229235

¿Es correcto introducir mis variables continuas SCORE10K y Z junto con la variable TIME? ¿O eso ya está integrado en la función a través del objeto Supervivencia? (DEL es mi variable binaria que muestra si hay quiebra Y=1).

El TIEMPO se codifica como 1,2,3,4 para cada empresa, y cada empresa tiene una puntuación para una duración de 4 años antes de entrar en quiebra, O NO. Mi muestra incluye 50 empresas que quiebran en el año 4 y una muestra sana de 100 empresas que también tienen puntuaciones para los mismos 4 años. Así que en total tengo 600 puntos de datos, pero sólo 150 "puntos de datos específicos de la empresa".

También he pensado en el modelo logit de efectos aleatorios, pero en este caso nos enfrentamos realmente a un análisis de supervivencia, si no me equivoco.

EDITAR después de la entrada :

He descubierto que, debido a la estructura de mi conjunto de datos, la función cox.zph del modelo de Cox estima que mi varianza es igual a 0, ya que todos mis sucesos por defecto Y=1 ocurren en el último periodo t=4. Esto invalida el modelo técnicamente, aunque teóricamente tenga sentido utilizar un modelo de riesgo.

Si echa un vistazo a mi conjunto de datos, eso sólo significa que DEL=1 sólo ocurre en TIME=4, SI es que ocurre.

Ya no puedo añadir puntos de datos por falta de tiempo, así que me pregunto si tengo que cambiar la estructura de los puntos de datos o si hay alguna forma de evitar que el modelo de Cox no pueda estimar mis tasas de supervivencia.

2voto

Yuval Sp Puntos 316

En primer lugar, como una forma más cómoda:

model.coxph <- coxph(Surv(TIME, DEL) ~ SCORE10K + Z, ties="exact", data=WRDS)

Tenga en cuenta varias cosas importantes:

  1. Su TIME no puede utilizarse en el modelo Cox. Es la propiedad subyacente del mismo. Si se hace correctamente, creo que R arrojará un error si lo hace.
  2. Utiliza el ties="exact" para manejar adecuadamente el hecho de que utilice un pequeño número de intervalos de tiempo discretos. Generalmente, coxph se ocupa del tiempo continuo. Véase el documentación coxph para más información al respecto.
  3. No me queda claro si tiene covariables dependientes del tiempo en sus datos. Si es así, debe añadir start_time y end_time a la Surv función.

En segundo lugar, sólo para asegurarse de que los datos se construyen correctamente, se puede ver aquí para ver ejemplos de conjuntos de datos y análisis en función del tiempo, o aquí de lo contrario. El último enlace contiene información excelente sobre el análisis general de riesgos de Cox y, lo que es más importante, sobre la comprobación de los supuestos de proporcionalidad.

Editar Después de ver tu conjunto de datos

Así que DO tienen covariables dependientes del tiempo. Asegúrese de ver el texto de Therneau (primer enlace más arriba). En cualquier caso, necesita crear una segunda variable TIEMPO para abarcar el marco temporal de cada fila. Si cada ID único (empresa) tiene 4 filas (o menos si se produjo el evento), sólo tiene que añadir una variable de tiempo 1-lagged of 1-added como: WRDS$TIME_2 <- WRDS$TIME + 1 . A continuación, introduzca tanto la hora de inicio como la de finalización en Surv función:

model.coxph <- coxph(Surv(TIME, TIME_2, DEL) ~ SCORE10K + Z, ties="exact", data=WRDS)

Por último, compruebe si se infringe el supuesto proporcional utilizando cox.zph . Usted puede ver cómo hacer frente a las pruebas y el manejo de ellos aquí(con un poco de auto-promoción descarada): [ Modelo de Cox ampliado y cox.zph

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