You are on page 1of 26

Proyecto de Supervivencia

Aceves Vzquez Laura Lorena


Alarcn Gonzlez Edgar Gerardo
27 de octubre de 2017

Cargaremos las siguientes paqueteras:


#Paqueteras
library(foreign)
library(survival)
library(KMsurv)
library(knitr)
library(polycor)
library(corrplot)
library(MASS)
#Cargamos la base de datos
data(std)
#Ajustamos los niveles
levels(std$race)<-c(1,0)
levels(std$marital)<-c(2,1,0)

Contexto de la base.

Un problema importante que se presenta en ciertas subpoblaciones es la aparicin de enfermedades de


transmisin sexual (ETS). Incluso si se ignoran los efectos letales del Sndrome de Inmunodeficiencia Adquirida
(SIDA), otras enfermedades de transmisin sexual an tienen un impacto significativo en la morbilidad de la
comunidad.
Dos de stas enfermedades de transmisin sexual son el foco de la investigacin plasmada en la base de datos:
gonorrea y clamidia. stas enfermedades son de especal inters porque a menudo son asintomticas en la
mujer y, si no se tratan, pueden provocar complicaciones, incluida la esterilidad.
Ambas enfermedades pueden prevenirse fcilmente y tratarse de manera efectiva. Por lo tanto, es un misterio
por qu la incidencia de estas enfermedades sigue siendo alta en varias subpoblaciones. Una teora es que
un grupo central de individuos experimenta reinfecciones, por lo tanto, acta como reserva natural del
organismo de la enfermedad y transfiere la enfermedad a individuos no infectados.
El propsito de la base de datos es identificar aquellos factores que estn relacionados con el tiempo hasta la
reinfeccin por gonorrea o clamidia, dada una infeccin inicial de gonorrea o clamidia. Se sigui una muestra
de 877 individuos con un diagnstico inicial de gonorrea o clamidia para la reinfeccin.
Si se pueden identificar los factores relacionados con un mayor riesgo de reinfeccin, entonces, las intervenciones
podran estar dirigidas a aquellas personas que estn en mayor riesgo de reinfeccin. Esto, a su vez, debera
reducir el tamao del grupo central y, por lo tanto, reducir la incidencia de las enfermedades.
La base de datos se encuentra en la paquetera KMsurv de R y los datos que se encuentran en ella fueron
proporcionados con base en lo estipulado en el libro:
Klein and Moeschberger (1997) Survival Analysis Techniques for Censored and truncated data, Springer.

1
Las variables que tiene nuestra base de datos son los siguientes:
[,1] obs: Nmero de observacin.
[,2] race: Raza (0 = Blanca, 1 = Negra).
[,3] marital: Estado conyugal (0 = soltero, 1 = casado, 2 = divorciado).
[,4] age: Edad.
[,5] iinfct: Infeccin inicial (1 = Gonorrea, 2 = Clamidia, 3 = Ambos).
[,6] yschool: Aos de estudio.
[,7] npartner: Nmero de parejas.
[,8] os12m: Sexo oral dentro de los 12 meses anteriores a la primera infeccin (0 = No, 1 = S).
[,9] os30d: Sexo oral dentro de los 30 das anteriores a la primera infeccin (0 = No, 1 = S).
[,10] rs12m: Sexo anal dentro de los 12 meses anteriores a la primera infeccin (0 = No, 1 = S).
[,11] rs30d: Sexo anal dentro de los 30 das anteriores a la primera infeccin (0 = No, 1 = S).
[,12] abdpain: Presencia de dolor abdominal (0 = No, 1 = S).
[,13] discharge: Presencia de secrecin (0 = No, 1 = S).
[,14] dysuria: Dolor al orinar (Disuria) (0 = No, 1 = S).
[,15] condom: Uso de condn (1 = Siempre, 2 = A veces, 3 = Nunca).
[,16] itch: Presencia de comezn (1 = S, 0 = No).
[,17] lesion: Presencia de lesiones (1 = S, 0 = No).
[,18] rash: Presencia de salpullido (1 = S, 0 = No).
[,19] lymph: Presencia de linfomas (1 = S, 0 = No).
[,20] vagina: Irregularidades en exmenes vaginales (1 = S, 0 = No).
[,21] dchexam: Secreciones durante el examen (1 = S, 0 = No).
[,22] abnode: Nodos anormales en el examen (1 = S, 0 = No).
[,23] rinfct: Present reinfeccin (1 = S, 0 = No).
[,24] time: Tiempo hasta una nueva reinfeccin (Das).
Observemos un fragmento de la base de datos seleccionada:
kable(std[c(43,539),1:12])

obs race marital age yschool iinfct npartner os12m os30d rs12m rs30d abdpain
43 43 0 0 19 12 2 2 0 0 0 0 0
539 539 1 0 18 12 2 1 0 0 0 0 0

kable(std[c(43,539),13:24])

discharge dysuria condom itch lesion rash lymph vagina dchexam abnode rinfct time
43 1 0 2 1 0 0 0 0 1 0 0 418
539 1 0 2 0 0 0 0 0 1 0 1 1

2
Comenzamos creando una base alternativa, que tome a las variables categricas como tal, de la siguiente
manera:
#ets factores
ets<-std
#factores
for (i in c(2,3,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)){
ets[,i]<-factor(ets[,i])
}

1. Anlisis Descriptivo

Comenzaremos dando un vistazo general a lo que tiene nuestra basede datos:


summary(ets[,-1])

## race marital age yschool iinfct npartner


## 1:585 2: 60 Min. :13.00 Min. : 6.00 1:140 Min. : 0.000
## 0:292 1: 28 1st Qu.:17.00 1st Qu.:10.00 2:396 1st Qu.: 1.000
## 0:789 Median :19.00 Median :12.00 3:341 Median : 1.000
## Mean :20.64 Mean :11.43 Mean : 1.267
## 3rd Qu.:22.00 3rd Qu.:12.00 3rd Qu.: 1.000
## Max. :48.00 Max. :18.00 Max. :19.000
## os12m os30d rs12m rs30d abdpain discharge dysuria condom itch
## 0:589 0:678 0:826 0:848 0:751 0:472 0:763 1: 54 0:714
## 1:288 1:199 1: 51 1: 29 1:126 1:405 1:114 2:511 1:163
## 3:312
##
##
##
## lesion rash lymph vagina dchexam abnode rinfct time
## 0:848 0:854 0:865 0:781 0: 48 0:863 0:530 Min. : 1.0
## 1: 29 1: 23 1: 12 1: 96 1:829 1: 14 1:347 1st Qu.: 70.0
## Median : 247.0
## Mean : 369.5
## 3rd Qu.: 571.0
## Max. :1529.0

Observemos aqu, que tenemos un primer problema que podra afectar a nuestro modelo deseado (Riesgos
proporcionales de Cox), ya que tenemos, de la variable rinfct que representa a el estatus de la observacin,
ms censuras que fallas, de tal manera que nuestros resultados podran no ser del todo certeros.
Otro par de observaciones importantes que debemos considerar, es que tenemos al menos un individuo que
tiene un tiempo de falla de 1 da, lo cual es muy poco comparado con el mximo de la muestra, 1529, por lo
que stos podran ser datos atpicos, a su vez, hay un individuo que ha tenido 19 parejas sexuales! no es de
cuestionarse porqu se enferm. Tenemos una baja cantidad de mujeres casadas y una alta que presentan
dolor al orinar sto es algo que tambin podra afectar nuestra muestra y durante la seleccin de variables.
Para lograr dar un vistazo ms grfico, realizaremos lo siguiente:

3
Grficos de barras
#barras
par(mfrow = c(2, 2))
for (i in c(2,3,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)){
barplot(table(ets[,i]), main = names(ets)[i],col = c("blue", "gold"))
}

race marital os30d rs12m


300

400

400
300
0

0
1 0 2 1 0 0 1 0 1

iinfct os12m rs30d abdpain

700
300
200

400

0 300
0

0
1 2 3 0 1 0 1 0 1

discharge dysuria lesion rash


700

400

400
200

0 300
0

0
0 1 0 1 0 1 0 1

condom itch lymph vagina


700
500

400
400
300
0 200

1 2 3 0 1 0 1 0 1

dchexam abnode
400

400
0

0 1 0 1

rinfct
300
0

0 1

De lo anterior, podemos ver cmo en la mayoria de los datos categricos, tenemos un sesgo hacia algna de
las cateoras, por lo que hay muchas mujeres que siguen una moda, algunas excepciones (parcialmente)
de sto pueden verse en las variables: iinfct y discharge, pues son aquellas que tienen lo ms cercano a un
balance entre sus categoras.

4
Grficos de caja
#Grficos de caja
par(mfrow = c(1, 2))
for (i in c(4,5,7,24)){
if(i %in% c(4,7)){
boxplot(ets[,i], main = names(ets)[i], col = "blue")}
else{boxplot(ets[,i], main = names(ets)[i], col ="yellow")}
}

age yschool

18
15 20 25 30 35 40 45

16
14
12
10
8
6

npartner time
1500
15

1000
10

500
5
0

De sta manera podemos observar el comportamiento de nuestras variables continuas, notemos que para la
edad, tenemos una gran cantidad de outliers lo que significa que hay muchas mujeres adultas que presentaron
la enfermedad, lo interesante se sigue de sto, dada la informacin obtenida, las mujeres tienen un grado de
estudios acumulado en 12, lo cual querra decir que hay una gran cantidad de mujeres que no terminaron la
preparatoria o que salieron en el primer ao de la licenciatura (segn el pas o escuela en la que estuvieron),
esto, a pesar de que a penas la media de la variable age es de 19 aos.
Otro factor notable, es el del nmero de parejas, salvo contadas excepciones, prcticamente todas las mujeres
afirman haber tenido no ms de una pareja, recordemos que todas las mujeres de ste estudio ya presentaron
al menos una vez la enfermedad y que tienen en promedio 20.64 aos de edad.

5
Coplots
A continuacin mostraremos el comportamiento que tienen algunas de stas variables de manera conjunta,
consideraremos las variables continuas age y time como ejes coordenados, luego, condicionaremos bajo la
variable rinfct y otras que nos podran ser de inters ms adelante:
#Coplots
par(mfrow = c(2, 2))
for (i in c(2,3,9,12,15,20)){
coplot(ets[,24]~ets[,4]|ets[,i]*ets[,23], col="red",xlab=c("",names(ets)[i]), ylab=c("","estatus"))}

race marital

0 0
1
1 2

15 20 25 30 35 40 45 15 25 35 45 15 25 35 45
1000

1000
1

1
500

500
estatus

estatus
0

0
1000

1000
0

0
500

500
0

0
15 20 25 30 35 40 45 15 25 35 45

os30d abdpain

1 1

0 0

15 20 25 30 35 40 45 15 20 25 30 35 40 45
1000

1000
1

1
500

500
estatus

estatus
0

0
1000

1000
0

0
500

500
0

15 20 25 30 35 40 45 15 20 25 30 35 40 45

condom vagina

3
1
2
0
1

15 25 35 45 15 25 35 45 15 20 25 30 35 40 45
1000

1000
1

1
500

500
estatus

estatus
0

0
1000

1000
0

0
500

500
0

15 25 35 45 15 20 25 30 35 40 45

En stos grficos podemos observar, bajo la concentracin de puntos en cada grfica condicional, que cada
categora tiene cierto sesgo, no hay algn comportamiento especfco que sea realmente considerable en stos
grficos que no se haya mencionado ya, pero s se pueden apreciar todos los factores antes resaltados, solo
que divididos por su correspondiente seccin.

6
Corplot
Por ltimo observemos la correlacin que tienen nuestros datos, recordemos que la mayora de los datos
que tenemos son categricos con menos de 8 categoras (cantidad que segn algunos libros es suficiente para
considerar una variable categrica como continua), por lo que la correlacin de Pearson no es la ms adecuada,
necesitaremos entonces la correlacin dada mediante el mtodo polycor, el cul considera ste detalle y ser
calculado gracias a la funcin hetcor, resultado que ser representado mediante el siguiente grfico:

#Corplot
correlacion<-hetcor(ets[,-1])[1]
brl =round(correlacion$correlations,2)
corrplot(brl,method="square",type="upper")

discharge

dchexam
npartner

abdpain

condom
yschool

abnode
dysuria
marital

os12m

vagina
rs12m
os30d

lymph
lesion
rs30d

rinfct
iinfct
race

rash

time
age

itch
1
race
marital
age 0.8
yschool
iinfct 0.6
npartner
os12m 0.4
os30d
rs12m
rs30d 0.2
abdpain
discharge 0
dysuria
condom 0.2
itch
lesion
rash 0.4
lymph
vagina 0.6
dchexam
abnode 0.8
rinfct
time
1

Vemos que en general nuestras variables no tienen una correlacin realmente significativa, por lo que la
existencia de multicolinealidad es realmente despreciable, sin embargo, s presentamos casos particulares
que muestran ste fenmeno, quiz el ms marcado se encuentra entre las variables abnode y rs12m, donde se
percibe una correlacin negativa.
Notemos que otro par de ejemplos suceden entre las variables que explican si se tuvo tanto sexo oral como
anal en das o meses anteriores, sto es claro, ya que si se tuvo alguna relacin de ste estilo en los ltimos 30
das antes de presentar por primera vez la enfermedad, directamente implicara que se tuvo durante los 12
meses anteriores, recordemos que stas variables simplemente son del tipo booleanas.
La ltima observacin que destacaremos es que la variable marital tiene correlacin considerable con otras
variables, sto quiz nos pueda indicar que sta puede explicarlas de alguna manera, para ver formalmente lo
dicho anteriormente, procederemos a buscar un modelo que ajuste a nuestros datos.

7
2. Tabla de vida y Kaplan-Meier

Mostramos un grfico comparativo entre la supervivencia obtenida mediante Kaplan-Meier y Tabla de vida,
por ahora nos limitaremos a mostrar cmo se ve su comportamiento sin entrar mucho en los detalles del
clculo de cada una de stas funciones. La tabla de vida est construida con intervalos de tamao 10.
#Kaplan-Meier
km_toda <- survfit(Surv(time,as.numeric(rinfct))~1,
type = "kaplan-meier", conf.type="log-log",
conf.int=0.95, data=ets)
#Tabla de vida
intervalo = 10 ; tis <- c(seq(0, max(ets$time)+intervalo, intervalo), NA) ; dis = c() ; y=0
for(i in seq(0,max(ets$time)+intervalo,intervalo)){
dis = c(dis, sum(ets$rinfct[which((y) < ets$time & ets$time <= i)]==1)) ; y = i}
qis = c() ; y=0
for(i in seq(0,max(ets$time)+intervalo,intervalo)){
qis = c(qis, sum(ets$rinfct[which((y) < ets$time & ets$time <= i)]==0)) ; y=i}
brl <- lifetab(tis, nrow(ets), qis, dis)[,5]
plot(brl~tis[-length(tis)],main="Comparacin de Supervivencias", xlab="tiempo",
ylab="S(t)", col="red", col.main="darkred",
col.lab="darkred", type = "s")
lines(km_toda, col="blue", conf.int=F,lwd=2)
legend("bottomleft",c("Kaplan-Meier", "Tabla de vida"),col = c("blue","red"),lty = 1,lwd=2,
text.font =6,box.lty=10,bty="n",horiz = F, text.width = 10)

Comparacin de Supervivencias
1.0
0.8
0.6
S(t)

0.4

KaplanMeier
0.2

Tabla de vida

0 500 1000 1500

tiempo

Busquemos ahora si hay algn modelo paramtrico que pueda ajustar a estos datos.

8
3. Modelo paramtrico

Observemos entonces cmo se comporta la funcin de riesgo acumulado del modelo no-paramtrico:
#Observamos qu sucede con la siguiente transformacin:
lnsupkm <- log(km_toda$surv)
modelo <- lm(lnsupkm[1:(length(lnsupkm)-1)] ~ km_toda$time[1:(length(km_toda$time)-1)])
plot(lnsupkm[1:(length(lnsupkm)-1)] ~ km_toda$time[1:(length(km_toda$time)-1)],
main = "Aproximacin a modelo paramtrico", ylab = "", xlab = "t",
col.main="darkred", col.lab="darkred")
abline(modelo, col = "blue")

Aproximacin a modelo paramtrico


0.0
0.5
1.0
1.5
2.0

0 500 1000 1500

#ajustamos un modelo exponencial:


theta <- sum(km_toda$time)/(sum(km_toda$n.event)) #Estadstico mximo verosmil con censuras.
supexp<- exp(-1/theta*km_toda$time)

Vemos que, de manera emprica y salvo algunos outliers, la funcin de hecho podra ajustar a un modelo
paramtrico exponencial, intentemos comparar los modelos para verificarlo.

Comparacin de Modelos ETS


1.0
0.8
0.6
S(t)

0.4

KaplanMeier
Tabla de vida
0.2

Exponencial

0 500 1000 1500

tiempo

El resultado no es del todo ptimo, ste modelo subestima por mucho la supervivencia, de tal manera que
podramos jugar con los outliers e intentar ajustar un mejor modelo, sin embargo, para fines del proyecto,
sto ser omitido.

9
4. Modelo de Cox

Primero vamos a contruir un modelo de Cox que contenga a todas las variables de manera general.

H0 : i = 0 Vs H1 : i 6= 0

coef Pr(>|z|)
as.numeric(std$race) -0.15345 0.27019
as.numeric(std$marital) 0.21199 0.14144
std$age 0.01005 0.46610
std$yschool -0.13259 0.00067
std$iinfct -0.11332 0.13754
std$npartner 0.08405 0.10781
std$os12m -0.21924 0.30030
std$os30d -0.33446 0.16120
std$rs12m -0.01256 0.97725
std$rs30d -0.13821 0.80649
std$abdpain 0.21927 0.15739
std$discharge 0.13081 0.24996
std$dysuria 0.18920 0.21882
std$condom -0.20540 0.03399
std$itch -0.17038 0.26549
std$lesion -0.20385 0.53798
std$rash -0.01187 0.97581
std$lymph -0.00073 0.99893
std$vagina 0.36953 0.03446
std$dchexam -0.46047 0.04544
std$abnode 0.08571 0.84097

Aqu podemos ver que existen muchas variables no del todo significativas, por ahora, las que parecer tener un
p-value aceptable son: yschool, condom, dchexam y abnode, sin embargo, no podemos simplemente eliminar
las dems variables.
Hemos realizado una pequea encuesta a dos estudiantes de medicina, Cruces Velzquez Michelle Amaranta
del 4to ao de la carrera de mdico cirujano en la facultad de medicina de la Universidad Nacional Autnoma
de Mxico (UNAM) y Ortiz Vargas Andrea Nayeli, titulada en la licenciatura de criminalstica y estudiante
de medicina en la misma facultad; les mostramos nuestra base de datos y con base en sus conocimientos
generales, sugieren que las variables ms pueden influir en el modelo son:
condom : Trivialmente.
vagina : Cualquier padecimiento fuera de lo normal es un foco de atencin en stos casos.
dchexam: Las secreciones son un sintoma de ste tipo de bacterias, ms cuando es por contagio.
iinfct : Se tiene que estar conciente de cul fue la infeccin inicial, fcil presentar una reinfeccin.
rs12m y os12m : Generalmente son practicadas por parejas homosexuales que tienden a promiscuidad
y a no utilizar condn.
Nos comentaron que la principal razn por la cual escogieron stas variables primordialmente, es porque son
caractersticas que pueden causar y responder al hecho de que una persona presente alguna enfermedad de
transmisin sexual.
Observaremos con cuidado el comportamiento de stas variables e intentemos ajustar un modelo que sea
adecuado para sta base de datos en particular.

10
Para lograr un ptimo seleccionamiento de variables, utilizaremos la funcin stepAIC
#Con base en el AIC se hace la saleccin de variables.
stepAIC(Cox_todas,direction="both")

Observemos el AIC y BIC que se nos ofrecen entre el primer modelo y el obtenido mediante la funcin
anterior:
Todas las variables:
#Primer modelo con todas las variables
Cox_todas$call

## coxph(formula = Surv(std$time, std$rinfct) ~ as.numeric(std$race) +


## as.numeric(std$marital) + std$age + std$yschool + std$iinfct +
## std$npartner + std$os12m + std$os30d + std$rs12m + std$rs30d +
## std$abdpain + std$discharge + std$dysuria + std$condom +
## std$itch + std$lesion + std$rash + std$lymph + std$vagina +
## std$dchexam + std$abnode)
AIC(Cox_todas)

## [1] 4118.7
BIC(Cox_todas)

## [1] 4199.536

AICTodas = 4118.7 BICTodas = 4199.536

Bajo la funcin stepAIC():


#stepAIC(Cox_todas,direction="both")
Cox_mod$call

## coxph(formula = Surv(std$time, std$rinfct) ~ as.numeric(std$marital) +


## std$yschool + std$os30d + std$abdpain + std$condom + std$vagina +
## std$dchexam)
AIC(Cox_mod)

## [1] 4101.011
BIC(Cox_mod)

## [1] 4127.957

AICmod = 4101.011 BICmod = 4127.957

Observemos que tenemos una reduccin de variables y tambin en el AIC considerablemente, justo eso es
lo que busca la funcin stepAIC ; sto es conocido como el Criterio de la informacin de Akaike el
cul, en pocas palabras, nos ayudar a escoger las variables que mejor expliquen el modelo, considerando la
reduccin de dimensin.
A su vez, ste modelo coincide, en su mayora, con lo que las estudiantes de medicina proponan, por lo que
nos quedaremos con ste ltimo modelo con la finalidad de obtener una informacin estadstica apegada un
poco ms a la parte terica. Se recomienda, en un estudio profesional, ver ms a fondo la base de datos e
intentar explorar ms, la metodologa realizada en particular para ste proyecto no es necesariamente la que
se debe elegir para el mbito profesional, sin embargo, ste ejemplificar un punto de partida.

11
Dado el modelo seleccionado, mostraremos la funcin de riesgo acumulado, as como la de supervivencia
obtenida con stas variables.
Funcin de Riesgo Acumulado
#Riesgo acumulado
plot(hazard~time, data = basehaz(Cox_mod, centered = T),
col = "green", type = "s", xlab = "t", ylab = "H(t)", main = "Riesgo acumulado con Cox")

2.0
1.5
Riesgo acumulado con Cox
H(t)

1.0
0.5
0.0

0 500 1000 1500

Funcin de Supervivencia
#Supervivencia
plot(exp(-hazard)~time, data = basehaz(Cox_mod, centered = T),
col = "green", type = "s", xlab = "t", ylab = "S(t)", main = "Supervivencia con Cox")
lines(brl~tis[-length(tis)], col="red", type = "s")
lines(km_toda, col="blue", conf.int=F,lwd=2)
legend("bottomleft",c("Kaplan-Meier", "Tabla de vida", "Modelo de Cox"),col = c("blue","red", "green"),
lty = 1,lwd=2,text.font =6,box.lty=10,bty="n",horiz = F, text.width = 10)

Supervivencia con Cox


1.0
0.8
0.6
S(t)

0.4

KaplanMeier
0.2

Tabla de vida
Modelo de Cox

0 500 1000 1500

Ahora procederemos a realizar un anlisis a fondo de nuestro modelo de Cox.

12
5. Coeficientes por variable: Grficos y Pruebas de Hipteis

Veamos entonces los coeficientes que tenemos con el modelo seleccionado:


Cox_mod_factor <- coxph(Surv(ets$time,as.numeric(ets$rinfct))~ets$marital+ets$yschool+
ets$os30d+ets$abdpain+ets$condom+ets$vagina+ets$dchexam)
resumen <- summary(Cox_mod_factor)
kable(round(resumen$coefficients[,c(1,2,5)],5))

coef exp(coef) Pr(>|z|)


ets$marital1 0.00780 1.00784 0.98518
ets$marital0 0.32570 1.38500 0.21040
ets$yschool -0.12785 0.87999 0.00017
ets$os30d1 -0.54002 0.58274 0.00045
ets$abdpain1 0.31316 1.36774 0.03541
ets$condom2 -0.03001 0.97043 0.89684
ets$condom3 -0.29196 0.74680 0.22251
ets$vagina1 0.40879 1.50500 0.01538
ets$dchexam1 -0.41778 0.65851 0.05997

De lo anterior, notamos que tenemos un coeficiente i para cada una de las categoras en caso de venir de
una variable de ste estilo, en este caso, la nica variable del tipo continuo es yschool, adems, notemos que
el p-value de todas es aceptable, con la excepcin de las variables marital y condom, pensamos que sto se le
atribuye a que debemos estar concientes que la base de datos se encuentra un poco sesgada en cada una de
las variables., adems, recordemos una vez ms que las mujeres de ste estudio ya se enfermaron una primera
vez, por lo que el mal uso de un condn o el hecho de estar solteras no suena a algo fuera de lo comn.
Comencemos estratificando la variable yschool, para observar los cambios entre el nivel de estudio:
yschool [6 : 11] : Secundaria y Preparatoria
yschool [12 : 15] : Universidad
yschool [12 : 15] : Posgrado
Estimador KaplanMeier: yschool
1.0
0.8
0.6
S(t)
^

0.4
0.2

Secu_Prep
Universidad
Posgrado
0.0

0 500 1000 1500

tiempo

yschool = 0.12785 eyschool = 0.87999 p value = 0.00017

Como eyschool < 1 el riesgo disminuye conforme aumentan los aos de estudio. Lo cual tiene sentido ya que
al aumentar la escolaridad aumentan la edad, la madurez y la educacin.

13
Como la mayora de las variables que estamos manejando son categricas, debemos realizar un anlisis con
detenimiento de cada una, por lo que debemos comprobar si la supervivencia es la misma bajo las categoras,
como se realiza a continuacin:
Como ya sabemos, se puede utilizar una prueba Log-Rank y Wilcoxon para verificar:

H0 : Sx = Sy Vs H1 : Sx 6= Sy

En ste caso, y debido a que los resultados entre ambas pruebas son finalmente los mismos, mostraremos los
resultados de la prueba Log-Rank.
marital

Estimador KaplanMeier: Marital


1.0
0.8
0.6
S(t)
^

0.4
0.2

Solteros
Casados
Divorciados
0.0

0 500 1000 1500

tiempo

kable(round(resumen$coefficients[1:2,c(1,2,5)],5))

coef exp(coef) Pr(>|z|)


ets$marital1 0.0078 1.00784 0.98518
ets$marital0 0.3257 1.38500 0.21040

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$marital,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$marital,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$marital=2 60 16 25.1 3.32 3.59
## ets$marital=1 28 9 14.3 1.98 2.11
## ets$marital=0 789 322 307.5 0.68 6.02
##
## Chisq= 6 on 2 degrees of freedom, p= 0.0492
Rechazamos H0 a un nivel de significancia = 5%
Observemos que la categora base es la 2 = divorciados, los coeficientes nos indican que el riesgo crece para
las dems categoras con respecto a sta.

14
os30d

Estimador KaplanMeier: os30d


1.0
0.8
0.6
S(t)
^

0.4
0.2

No sexo oral
Si sexo oral
0.0

0 500 1000 1500

tiempo

kable(as.data.frame(t(round(resumen$coefficients[4,c(1,2,5)],5)),row.names = "ets$os30d1"))

coef exp(coef) Pr(>|z|)


ets$os30d1 -0.54002 0.58274 0.00045

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$os30d,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$os30d,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$os30d=0 678 295 260.8 4.49 18.2
## ets$os30d=1 199 52 86.2 13.58 18.2
##
## Chisq= 18.2 on 1 degrees of freedom, p= 2.03e-05

Rechazamos H0 a un nivel de significancia = 5%

Observemos que la categora base es la 0 = No, los coeficientes nos indican que el riesgo disminuye para la
otra categora con respecto a sta.

15
abdpain

Estimador KaplanMeier: abdpain


1.0
0.8
0.6
S(t)
^

0.4
0.2

No dolor abdominal
Si dolor abdominal
0.0

0 500 1000 1500

tiempo

kable(as.data.frame(t(round(resumen$coefficients[5,c(1,2,5)],5)),row.names = "ets$abdpain11"))

coef exp(coef) Pr(>|z|)


ets$abdpain11 0.31316 1.36774 0.03541

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$abdpain,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$abdpain,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$abdpain=0 751 291 303.7 0.527 4.24
## ets$abdpain=1 126 56 43.3 3.693 4.24
##
## Chisq= 4.2 on 1 degrees of freedom, p= 0.0394

Rechazamos H0 a un nivel de significancia = 5%

Observemos que la categora base es la 0 = No, los coeficientes nos indican que el riesgo aumenta para la
otra categora con respecto a sta.

16
condom

Estimador KaplanMeier: Condom


1.0
0.8
0.6
S(t)
^

0.4
0.2

Siempre
A veces
Nunca
0.0

0 200 400 600 800 1000 1200 1400

tiempo

kable(round(resumen$coefficients[6:7,c(1,2,5)],5))

coef exp(coef) Pr(>|z|)


ets$condom2 -0.03001 0.97043 0.89684
ets$condom3 -0.29196 0.74680 0.22251

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$condom,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$condom,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$condom=1 54 21 19.3 0.154 0.164
## ets$condom=2 511 210 185.0 3.369 7.338
## ets$condom=3 312 116 142.7 4.993 8.606
##
## Chisq= 8.6 on 2 degrees of freedom, p= 0.0133

Rechazamos H0 a un nivel de significancia = 5%

Observemos que la categora base es la 1 = Siempre, los coeficientes nos indican que el riesgo disminuye
para las otras categoras con respecto a sta. sto carece de sentido, sin embargo, eso nos advierte el p-value
de sta variable.

17
vagina

Estimador KaplanMeier: vagina


1.0
0.8
0.6
S(t)
^

0.4
0.2

No
S
0.0

0 500 1000 1500

tiempo

kable(as.data.frame(t(round(resumen$coefficients[8,c(1,2,5)],5)),row.names = "ets$vagina1"))

coef exp(coef) Pr(>|z|)


ets$vagina1 0.40879 1.505 0.01538

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$vagina,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$vagina,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$vagina=0 781 306 319.6 0.576 7.32
## ets$vagina=1 96 41 27.4 6.716 7.32
##
## Chisq= 7.3 on 1 degrees of freedom, p= 0.0068

Rechazamos H0 a un nivel de significancia = 5%

Observemos que la categora base es la 0 = No, los coeficientes nos indican que el riesgo aumenta para las
otras categoras con respecto a sta.

18
dchexam

Estimador KaplanMeier: dchexam


1.0
0.8
0.6
S(t)
^

0.4
0.2

No
S
0.0

0 200 400 600 800 1000

tiempo

kable(as.data.frame(t(round(resumen$coefficients[9,c(1,2,5)],5)),row.names = "ets$dchexam1"))

coef exp(coef) Pr(>|z|)


ets$dchexam1 -0.41778 0.65851 0.05997

#Log Rank
survdiff(formula=Surv(ets$time,as.numeric(ets$rinfct))~ets$dchexam,data=ets,rho=0)

## Call:
## survdiff(formula = Surv(ets$time, as.numeric(ets$rinfct)) ~ ets$dchexam,
## data = ets, rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## ets$dchexam=0 48 22 14.8 3.488 3.66
## ets$dchexam=1 829 325 332.2 0.156 3.66
##
## Chisq= 3.7 on 1 degrees of freedom, p= 0.0558

No rechazamos H0 a un nivel de significancia = 5%

Observemos que la categora base es la 0 = No, los coeficientes nos indican que el riesgo disminuye para
las otras categoras con respecto a sta.
Las interpretaciones podran ser algo ilgicas, quiz debido a la cantidad de censuras o el
sesgamiento que tiene nuestra base.

19
6. Verificar supuestos del modelo de Cox

Riesgos Proporcionales
Para sta parte, buscamos que, dada la manera en que justo dividimos nuestra base en la seccin anterior,
las transformaciones, realizadas a continuacin, se vean paralelas, al menos graficamente, procedemos a
mostrar entonces evidencia de riesgos proporcionales.
marital

Riesgos proporcionales Marital


0
1
log(log(S(t)))

2
3
4

Solteros
Casados
5

Divorciados

0 2 4 6

log(t)

sta variable podra causar conflicto con la categora 2 = Divorciados, que es la que cruza a las dems.
os30d

Riesgos proporcionales os30d


1
0
1
log(log(S(t)))

2
3
4

No
5

0 2 4 6

log(t)

En ste caso parece no haber problemas.

20
abdpain

Riesgos proporcionales abdpain


1
0
1
log(log(S(t)))

2
3
4

No
5

0 2 4 6

log(t)

Tampoco pareciera haber problemas con sta variable categrica.


condom

Riesgos proporcionales Condom


0
1
log(log(S(t)))

2
3

Siempre
A veces
Nunca
4

1 2 3 4 5 6 7

log(t)

sta variable tiene un problema en la cola debido a la categora 1 = Siempre.

21
vagina

Riesgos proporcionales Vagina


1
0
1
log(log(S(t)))

2
3
4

No
5

0 2 4 6

log(t)

Tampoco pareciera haber problemas con sta variable categrica.


dchexam

Riesgos proporcionales dchexam


0
1
log(log(S(t)))

2
3

No
S
4

0 1 2 3 4 5 6 7

log(t)

Aqu tampoco tenemos mayor problema.

22
yschool

Riesgos proporcionales yschool

0
1
log(log(S(t)))

2
3
4

SecuPrep
5

Licenciatura
Posgrado
6

0 2 4 6

log(t)

Aqu s presentamos un par de problemas:


Al principio con los de educacin media superior y superior.
Con los que tienen un nivel de estudios ms alto.
Consideraremos que no tuvimos demasiados errores en sta prueba y procederemos con los dems anlisis.
Schoenfield

H0 : "Los riesgos son proporcionales" Vs H1 : "Los riesgos NO son proporcionales"

#Schoenfield
residuales <- cox.zph(Cox_mod_factor)
kable(residuales$table)

rho chisq p
ets$marital1 0.0436902 0.6441141 0.4222250
ets$marital0 0.0029273 0.0030787 0.9557510
ets$yschool 0.0161157 0.0888853 0.7655991
ets$os30d1 -0.0505402 0.9053069 0.3413627
ets$abdpain1 -0.0035929 0.0044739 0.9466718
ets$condom2 0.0620178 1.3443904 0.2462612
ets$condom3 0.0746003 1.9272690 0.1650575
ets$vagina1 -0.0484245 0.8104720 0.3679808
ets$dchexam1 0.0178061 0.1100749 0.7400589
GLOBAL NA 5.0347391 0.8312695

Podemos notar que los p value de cada variable son, sin ser del todo estrictos, mayores a = 5%, lo cual
significa que podemos aceptar la hiptesis nula, dndonos as el resultado de que los datos realmente tienen
el comportamiento deseado.

23
Residuales de Devianza
Para ver sto, buscamos que la mayora de los datos a lo ms se encuentren dentro del intervalo [3, 3].
#Devianza
dev.res <- residuals(Cox_mod_factor,type="deviance")
plot(dev.res,col="blue",pch=19,main="Residuos de devianza",col.main="blue",
xlab="id",ylab="Dev.res",col.lab="darkblue", ylim = c(-5,5))
abline(h=c(-2,2),col="red")
abline(h=c(-3,3),col="magenta")

Residuos de devianza
4
2
Dev.res

0
2
4

0 200 400 600 800

id

#identify(dev.res,labels=ets$obs,col="darkgreen")

obs race marital age yschool iinfct npartner os12m os30d rs12m rs30d abdpain
143 143 1 0 29 13 3 0 0 0 0 0 0
539 539 1 0 18 12 2 1 0 0 0 0 0
842 842 0 0 15 9 2 1 0 0 0 0 0

discharge dysuria condom itch lesion rash lymph vagina dchexam abnode rinfct time
143 1 0 2 0 0 0 0 0 1 0 1 1
539 1 0 2 0 0 0 0 0 1 0 1 1
842 1 0 2 0 0 0 0 0 0 0 1 1

Aqu podemos ver que los sujetos 143, 539 y 842 son datos atpicos, resultan ser las mujeres que se infectaron
en 1 da, lo cual posiblemente sea la causa de que se encuentran aqu, sin embargo, nuestros datos en general
se encuentran dentro de las bandas que nos solicita la devianza.

24
Cox-Snell (bajo Residuos de Martingalas)
Por ltimo realizaremos la siguiente prueba, en sta, se evala el ajuste global del modelo planteado, si el
modelo de regresin de Cox es adecuado, entonces las estimaciones del tiempo de supervivencia de nuestro
modelo vendrn dadas por un estimador de la funcin de supervivencia, el cual, deber ser similar al obtenido
mediante Kaplan-Meier, en pocas palabras, graficando la funcin de sobrevivencia que hemos propuesto,
contra la que se estim mediante K-M, deberamos poder ver puntos que se encuentren lo ms cercano posible
a la recta identidad:

#Cox-Snell
cs.res <-as.numeric(ets$rinfct)-resid(Cox_mod_factor,type="martingale")
gofcs<-survfit(coxph(Surv(cs.res,as.numeric(ets$rinfct))~1),type="kaplan-meier")
plot(gofcs$time,-log(gofcs$surv), xlab="Residuos Cox-Snell",
ylab="Riesgo acumulado",main="Bondad de ajuste",
col.main="blue",col.lab="magenta")
abline(-1,1,col='red')
abline(lm(-log(gofcs$surv)[-length(-log(gofcs$surv))]~
gofcs$time[-length(-log(gofcs$surv))]), col = "blue")
legend("topleft", legend=c("Regresin lineal", "Recta identidad"),
col=c("blue","red"), lwd=2)

Bondad de ajuste
2.5

Regresin lineal
Recta identidad
2.0
Riesgo acumulado

1.5
1.0
0.5
0.0

1.0 1.5 2.0 2.5 3.0

Residuos CoxSnell

Podemos observar que los resultados parecen ser favorables, de hecho, el ajuste con la regresin de los datos
asemejan de gran manera la recta identidad solo que desfasada, as, el modelo es adecuado y los supuestos de
Cox para modelos proporcionales se cumplen, sin ser tan estrictos.

25
7. Conclusiones

Los siguientes puntos son los que consideramos ms importantes con respecto a nuestra base de datos:
El hecho de que haya ms censuras que fallas, podra ser la principal causa de que los detalles que tiene
ste anlisis existan.
Los datos que presenta sta base tienen mucho sesgo en casi todas las covariables, habramos que
explorar ms al respecto para saber lidiar con ese detalle.
Parece ser que el fenmeno que se est modelando podra comportarse de manera exponencial, al menos
dentro de los primeros 100 das.
La base de datos puede presentar resultados que parecieran sonar ilgicos, es necesario explorar a fondo
la base para encontrar una manera de hacer que suenen ms realistas.
En general el modelo de Cox parece ser que se puede adaptar de manera adecuada.
El libro que tiene la informacin de sta base de datos no facilita tanto contexto de la misma, nicamente
expone la razn de ser de la base, sera muy til si conocieramos ms detalles al respecto.
Tenemos datos en extremo atpicos en algunos puntos, es necesario explorar el modelo sin ellos y
repetirlo de tal manera que sto no tenga por qu sesgar la supervivencia.
Es sospechoso que dado que la mediana de la edad es 19 aos, prcticamente todas las mujeres
contagiadas de stas enfermedades tienen nicamente una pareja, probablemente sto tambin influya
mucho en el modelo, se tendra que tener un mayor contexto de la base de datos, quiz es de hace ya
mucho tiempo.
La mayora de las mujeres que presentan stas enfermedades son jvenes, sin embargo, la edad como tal
no parece explicar mucho de ste feneno.
De todas, lo que parece explicar mejor el fenmeno, es la variable yschool, lo cual querra decir que ste
fenmeno se est dando principalmente en aquellas mujeres que no tienen educacin.
Se necesita mucha experiencia con bases de datos y/o en el tema para poder manejar qu tan estrictos
ser con las pruebas que se realizan, en ste caso la verdad es que se fue bastante flexible, pero no tiene
por qu ser as.

26

You might also like