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