Tal y como lo entiendo, después de algunos mensajes, se podría considerar tu problema como un análisis de Supervivencia, y por lo tanto emplear las funciones "Surv" y "coxph", si consideramos que "bmi" medido en cada entrevista es un buen "proxi" de la edad cronológica del individuo, tal como parecen indicar las correcciones que pones en el mensaje.

Aun asi me chirría un poco, ¿porque no usar la edad al evento o censura como seria lo habitual, si se dispusiera de ella?. Si no se dispone de ella habria que valorar si es mejor usar el "bmi" o quizás la "altura" como mejor variable proxi de la edad. Si se dispone de la edad, se podria buscar una manera de introducir el "bmi" medido en cada observación como variable tiempo dependiente (por ejemplo los incrementos anuales medios del "bmi" entre observaciones). El "bmi0" en principio parece una co-variable tiempo independiente, si todo los sujetos son valorados a una edad equivalente a comienzo del estudio.

Con respeto, a mi comentarios sobre la imprecisa datación del tiempo (o la variable proxi que se use) en los abandonos, me confundí un poco al mezclar "bmi0", con "bmi. Aun asi, sigo viendo problemas si la relación de edad y bmi no lineal, si no logística como supongo.

He reformado tu código un poco y planteado otra alternativa de análisis de un modelo único con interación:

## ++++++++++++++++++++++
load('~/Escritorio/dataframe.Rdata')
require(survival)
require(dplyr)
df0$apoe4 <-  relevel(df0$apoe4,ref='no-E4')

fff <-  function (x){
  dfx<- filter(df0,df0$bmi0==x)
  surv2=Surv(dfx$bmi,dfx$MetS)
  km2=survfit(surv2~dfx$apoe4)##start.time=20,type='kaplan')
  cox=list(coxph(surv2~dfx$apoe4))
}
modelos <-  sapply(levels(df0$bmi0),fff )
pp <- t(sapply(modelos, function(e) coef(summary(e)) ))
colnames(pp) <- c( 'coef:E4/no.E4','exp(coef)','se(coef)',  'z', 'Pr(>|z|)')
pp


## Alternativa:
## Graficar funciones de supervivencia de KM
S    <- Surv(df0$bmi,df0$MetS)
km0  <- survfit(S~df0$apoe4+df0$bmi0)

plot(km0,lty=2:1,col=2:4,xlim=c(20,41),xlab='BMI at event date',main=x,mark.time = F)
etq<- as.vector(t(outer( c('E4.','no-E4'),levels(df0$bmi0), FUN='paste')))
legend('bottomleft',etq,lty=rep(2:1,each=3), col=2:4)

## realiza un COX con interacion,
## no equivalente a la realiazion de tres modelos distintito para cada bmi0
(coxph(S~df0$apoe4 * df0$bmi0))

## ++++++++++++++++++++++


Respondo también a la lista, que en el anterior mensaje no hice por error.

On 18/08/15 12:07, JM Arbones wrote:
Hola Francisco,
Muchas gracias por tu ayuda. Te intento contestar a tus sugerencias.

Con los datos contenidos en le data.frame de la dirección del enlace yo no clasificaría este problema de "análisis de supervivencia", ya que no se dispone, o no se ha incluido, la variable tiempo de observación: (0,7,10,15,20 y 25 años)

Utilicé el termino análisis de supervivencia porque intentaba utilizar las herramientas propias de este tipo de análisis (regresión de Cox, riesgo cumulativos, etc).


No creo muy adecuado remplazar la variable tiempo (hasta aparición del evento u censura por la variable "bmi" (Body Mass Index), esto solo se podría hacer si confirmáramos la existencia de una fuerte correlación entre el BMI y el tiempo de seguimiento, lo cual no creo que sea del todo correcto, al menos en las especie humana (si es esta especie de la que estamos hablando).

El ~90% de los miembros de la cohorte de 4800 individuos tuvieron un incremento de BMI positivo a lo largo de los 25 años de seguimiento. Al correlacionar la media de todos los BMI's en cada punto de observacion con los años de seguimiento, me sale una r= 0.98, p=0.0004.



Por otro lado, si existiera una fuerte asociación entre el "bmi0" y el tiempo de seguimiento (lo que permitiría usar "bmi0" en lugar del tiempo, aun quedaría el problema de que en los datos proporcionados la censura por abandono (del tipo censura por intervalo, que puede ocurrir en edades tempranas) no es distinguible de de la censura por cierre del estudio (censura por la derecha, y que esta asociado siempre al tiempo 25). Este echo hace muy difícil, si no imposible, llegar a conclusiones fiables con la información suministrada.
Esto no lo entiendo muy bien, el bmi que estoy utilizando para hacer el análisis es el que tiene cada individuo cuando ocurre el evento, o en caso de que no tengan el evento, el bmi que tienen al final del estudio o cuando lo abandonan. Otra duda que me surge es si debería utilizar una censura por la izquierda, por que cada individuo empieza con un bmi distinto. ?quizás debería utilizar solo el intervalo de bmi que recorre cada individuo?



Con respecto al código suministrado, la función "filter" produce un error en mi sistema, supongo que se encuentra redefinida en parte del código no enviado.
filter es del paquete dplyr, creo que en este caso se podría utilizar subset del paquete base.


Un saludo y, otra vez, gracias por la ayuda y sugerencias.

Jose Miguel




On 02/08/15 19:19, JM ARBONES wrote:
Hola a todos,
-Estoy estudiando el efecto de dos genotipos (~tratamientos) en la aparición de síndrome metabólico (MetS) con datos longitudinales recogidos a tiempo 0,7,10,15,20 y 25 años.

-He hecho un dataframe con las siguientes variables
MetS: Síndrome Metabólico (Si=1,No=0)
bmi: Indice de masa corporal (IMC) cuando se produce la conversión a MetS+ . Para los que permancen MetS-, esta variable indica el bmi cuando hay censura (por abandono del estudio o al finalizar el estudio en el año 25). bmi0: IMC al inicio del estudio (categórica, levels=normal/overweight/obese)
apoE4: Genotipo de interés (E4, no-E4)

-Mi hipótesis es que la interacción genotipo~MetS depende del IMC al principio del estudio. Concretamente, individuos 'overweight' al inicio del estudio y con el genotipo E4 hacen la conversión a MetS+ a valores de IMC mas bajos que los que tienen el genotipo no-E4. Este fenómeno no ocurriría en los 'normal' y 'obese'.

-He creado unos objetos Surv, pero en lugar de utilizar el tiempo hasta evento (MetS+) estoy utilizando el bmi hasta el evento. Las gráficas que resultan al hacer el análisis de supervivencia parecerían confirmar mi hipótesis, pero no se si lo que estoy haciendo es una aberración estadística. Tampoco se si los coeficientes de la regresión de Cox tienen sentido al no utilizar la variable tiempo.

?Alguien me podría 1)decir si lo que estoy haciendo tiene sentido y 2) como interpretar los resultados (regresión de Cox y gráficas)? Si a alguien se anima a contestar, adjunto un link con los datos (.Rdata) y el script que he utilizado en el análisis.


https://www.dropbox.com/s/d96itird8ms42yx/dataframe.Rdata?dl=0 <https://www.dropbox.com/s/d96itird8ms42yx/dataframe.Rdata?dl=0>

sapply(levels(df0$bmi0),function (x){ #####SURVIVAL CURVE
   dfx=filter(df0,bmi0==x)
      surv2=Surv(dfx$bmi,dfx$MetS)
   km2=survfit(surv2~dfx$apoe4)##start.time=20,type='kaplan')
plot(km2,lty=2:1,xlim=c(20,41),xlab='BMI at onset',main=x,mark.time = F)
   legend('bottomleft',c('E4','no-E4'),lty=2:1)
   cox=list(coxph(surv2~relevel(dfx$apoe4,ref='no-E4')))
})

sapply(levels(df0$bmi0),function (x){ #####CUMULATIVE HAZARDs
   dfx=filter(df0,bmi0==x)
      surv2=Surv(dfx$bmi,dfx$MetS)
   km2=survfit(surv2~dfx$apoe4)
plot(km2,lty=2:1,xlim=c(20,41),xlab='BMI at onset',main=x,mark.time = F,fun='cumhaz')
   legend('topleft',c('E4','no-E4'),lty=2:1)
   })

Muchas gracias y un saludo

Jose Miguel

-------------------------------------------------------------------

Jose Miguel Arbones-Mainar, PhD
Unidad de Investigación Traslacional
Instituto Aragones de Ciencias de la Salud
Hospital Universitario Miguel Servet
Pº Isabel la Católica, 1-3
50009 Zaragoza (Spain)
Tel: +34 976 769 565
Fax: +34 976 769 566
www.adipofat.com <http://www.adipofat.com/>




-----------------------------------------------------------------------------------
Jose Miguel Arbones-Mainar
www.adipofat.com <http://www.adipofat.com/>







    [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es





--
+--------------------------------------------------------------
| Francisco J. Viciana Fernández
| Coordinador del Registro de Población
| Servicio de Estadísticas Demográficas y Sociales
| Instituto de Estadística y Cartografía de Andalucía
| Leonardo Da Vinci, nº 21. Isla de La Cartuja.
| 41071 SEVILLA.
| [email protected]
+--------------------------------------------------------------

_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a