Hola Francisco: Muchas gracias por este refinamiento.
Tienes razón, el gráfico de Lexis representa mucho mejor los datos. Y gracias por el código. Lo guardo también para el futuro. Saludos On Thu, 8 Aug 2019 09:42:50 +0200 Francisco Viciana <[email protected]> wrote: > Hola, aunque con un poco de retraso, hago una aportación a este hilo: > > Si tienes un problema con dos escalas de tiempo sobre las que > evolucionan las lineas de seguimiento, creo que es mejor que hacer un > solo gráfico en forma de diagrama de Lexis, que dos gráficos > independientes. Muestro ejemplo usando el paquete "Epi": > > # Código ---------------------------------------------------- > > #---- Generar Datos ---- > rm(list = ls()) > set.seed(20) > XTIEMPO_2 = c(38, 2, 34, 29, 30, 3, 14, 8, 18, 31) # Per fe el gràfic > amb t=0 > set.seed(30) > XTIEMPO_0 = sample(1:40, 10, replace=F) > XTIEMPO_F = XTIEMPO_0 + XTIEMPO_2 > set.seed(20) > XDEF = as.factor(sample(c("Mort", "Viu"), 10, replace=T)) > > DATOS <- data.frame ( > ID = c (1:10) > , TIEMPO_0 = XTIEMPO_0 > , TIEMPO_F = XTIEMPO_F > , TIEMPO_2 = XTIEMPO_2 # Per fe el gràfic amb t=0 > , DEF = XDEF > ) > > > names(DATOS)[2:5] <- c('marriage.age', > 'output.age', > 'duration','output') > > DATOS$output <- factor(DATOS$output,levels = c('Casado','Viu','Mort')) > DATOS$entry <- factor('Casado',levels = c('Casado','Viu','Mort')) > > # Crea objeto Lexis: > library(Epi) > lx.Datos <- Lexis( entry=list(antiguedad.del.matrimonio=0, > edad=marriage.age), > exit=list(edad=output.age), > entry.status = entry , > exit.status = output ,id=ID,data=DATOS,merge=F) > > #---- Muestra datos originales y transformados > DATOS > lx.Datos > > #---- Grafica: ---- > > plot.Lexis(lx.Datos,time.scale = 1:2,col='blue') > with(lx.Datos, points(x=lex.dur,y=edad+lex.dur, > pch=c(NA,19,3)[as.integer(lex.Xst)], > col=1 )) > grid() > legend('bottomright',legend = levels(lx.Datos$lex.Xst)[-1], > pch=c(19,3),col=1) > > ## ---------------------------------------------- > > On 19/7/19 15:03, Griera wrote: > > Hola: > > > > Por si a alguien le interesa para un curso, aquí coloco la versión > > definitiva de los dos gráficos que quería hacer (uno en escala del tiempo > > del calendario y la otra el tiempo de seguimiento) realizados gracias a la > > ayuda > > de Carlos Ortega. > > > > Muchas gracias y saludos. > > > > # Código ---------------------------------------------------- > > set.seed(20) > > # TIEMPO_2 = sample(1:40, 10, replace=F) > > XTIEMPO_2 = c(38, 2, 34, 29, 30, 3, 14, 8, 18, 31) # Per fe el gràfic amb > > t=0 > > set.seed(30) > > XTIEMPO_0 = sample(1:40, 10, replace=F) > > XTIEMPO_F = XTIEMPO_0 + XTIEMPO_2 > > set.seed(20) > > # XDEF = as.factor(sample(c(0,1), 10, replace=T)) > > XDEF = as.factor(sample(c("Mort", "Viu"), 10, replace=T)) > > > > DATOS <- data.frame ( > > ID = c (1:10) > > , TIEMPO_0 = XTIEMPO_0 > > , TIEMPO_F = XTIEMPO_F > > , TIEMPO_2 = XTIEMPO_2 # Per fe el gràfic amb t=0 > > , DEF = XDEF > > ) > > > > library(ggplot2) > > > > ## Gràfic amb temps calendari > > ggplot( data = DATOS ) + > > geom_point( aes(x = TIEMPO_F, y = ID , shape = DEF), size = 5 ) + > > geom_segment( aes( x = TIEMPO_0, y = ID, xend = TIEMPO_F, yend = ID ) > > ) + > > scale_shape_manual (values = c(4, 16)) + > > xlim (0, 70) + > > xlab ("Data (temps del calendari)") + > > ylab ("Persones") + > > guides(colour = FALSE) + > > labs(shape = ' ', values = c(4, 16)) + > > scale_y_discrete() + > > theme_classic() + > > theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) > > ## Modificat > > str (DATOS) > > ggplot( data = DATOS ) + > > geom_point( aes(x = TIEMPO_2, y = ID , shape = DEF), size = 5 ) + > > scale_shape_manual (values = c(4, 16)) + > > geom_segment( aes( x = 0, y = ID, xend = TIEMPO_2, yend = ID ) ) + > > xlim (0, 70) + > > xlab ("Temps de seguiment") + > > ylab ("Persones") + > > guides(colour = FALSE) + > > labs(shape = ' ', values = c(4, 16)) + > > scale_y_discrete() + > > theme_classic() > > > > # Código ---------------------------------------------------- > > > > > > On Thu, 18 Jul 2019 14:21:24 +0200 > > Carlos Ortega <[email protected]> wrote: > > > >> Hola, > >> > >> Sí, lo puedes hacer de esta forma... > >> > >> #----------------- > >> set.seed(20) > >> DATOS <- data.frame ( > >> ID = c (1:10) > >> , TIEMPO = sample(1:40, 10, replace=F) > >> , DEF = as.factor(sample(c(0,1), 10, replace=T)) > >> ) > >> > >> library(ggplot2) > >> > >> ggplot( data = DATOS ) + > >> geom_point( aes(x = TIEMPO, y = ID , shape = DEF, color = DEF), size = > >> 5 > >> ) + > >> geom_segment( aes( x = 0, y = ID, xend = TIEMPO, yend = ID ) ) + > >> guides(colour = FALSE) + > >> labs(shape = 'LEGEND') + > >> scale_y_discrete() + > >> theme_minimal() > >> #----------------- > >> > >> E incluso puedes reproducirlo usando fuentes parecidas a la de los comics > >> con el paquete "xkcd". > >> > >> Saludos, > >> Carlos Ortega > >> www.qualityexcellence.es > >> > >> > >> > >> El jue., 18 jul. 2019 a las 13:05, Griera-yandex (<[email protected]>) > >> escribió: > >> > >>> Hola Pedro: > >>> > >>> Gracias por la ayuda. No conocía esta manera más elegante de mostrar las > >>> curvas de Kaplan-Meier. Te la compro. > >>> > >>> En realidad quería mostrar un gráfico con la longitud de les tiempos de > >>> seguimiento y al final un símbolo para indicar el estado. Seria un gráfico > >>> similar a: > >>> > >>> https://miro.medium.com/max/700/1*yHhG4TVcAAi29Ln88t0_5Q.png > >>> > >>> Pero no encuentro la manera de hacerlo. Igual no se puede. > >>> > >>> Muchas gracias y saludos. > >>> > >>> On Thu, 18 Jul 2019 10:28:37 +0000 > >>> PEDRO CONCEJERO CEREZO <[email protected]> wrote: > >>> > >>>> Hola, te vale esto? Es forma estandar de representar graficos > >>> supervivencia > >>>> Basado en esto: > >>>> > >>>> https://rviews.rstudio.com/2017/09/25/survival-analysis-with-r/ > >>>> > >>>> set.seed(20) > >>>> > >>>> DATOS <- data.frame ( > >>>> ID = c (1:10) > >>>> , TIEMPO = sample(1:40, 10, replace=F) > >>>> , DEF = sample(0:1, 10, replace=T) > >>>> ) > >>>> > >>>> DATOS > >>>> > >>>> library(survival) > >>>> > >>>> DATOS$DEF <- as.numeric(DATOS$DEF) > >>>> DATOS$TIEMPO <- as.numeric(DATOS$TIEMPO) > >>>> > >>>> s <- Surv(DATOS$TIEMPO, DATOS$DEF) > >>>> head(s) > >>>> > >>>> ## Kaplan-Meier estimator. > >>>> km <- survfit(s ~ 1, > >>>> data = DATOS, > >>>> conf.type = "log-log") > >>>> > >>>> ## Show object > >>>> km > >>>> > >>>> summary(km) > >>>> > >>>> plot(km) > >>>> > >>>> # Instala las librerías necesarias: > >>>> library(ranger) > >>>> library(ggplot2) > >>>> library(dplyr) > >>>> library(ggfortify) > >>>> > >>>> autoplot(km) > >>>> > >>>> > >>>> El 18/07/2019 a las 12:00, [email protected]<mailto: > >>> [email protected]> escribió: > >>>> Envíe los mensajes para la lista R-help-es a > >>>> [email protected]<mailto:[email protected]> > >>>> > >>>> Para subscribirse o anular su subscripción a través de la WEB > >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>>> > >>>> O por correo electrónico, enviando un mensaje con el texto "help" en > >>>> el asunto (subject) o en el cuerpo a: > >>>> [email protected]<mailto: > >>> [email protected]> > >>>> Puede contactar con el responsable de la lista escribiendo a: > >>>> [email protected]<mailto: > >>> [email protected]> > >>>> Si responde a algún contenido de este mensaje, por favor, edite la > >>>> linea del asunto (subject) para que el texto sea mas especifico que: > >>>> "Re: Contents of R-help-es digest...". Además, por favor, incluya en > >>>> la respuesta sólo aquellas partes del mensaje a las que está > >>>> respondiendo. > >>>> > >>>> > >>>> Asuntos del día: > >>>> > >>>> 1. Gráfico tiempos de supervivencia (Griera-yandex) > >>>> > >>>> ---------------------------------------------------------------------- > >>>> > >>>> Message: 1 > >>>> Date: Thu, 18 Jul 2019 10:18:42 +0200 > >>>> From: Griera-yandex <[email protected]><mailto:[email protected]> > >>>> To: Lista R <[email protected]><mailto:[email protected]> > >>>> Subject: [R-es] Gráfico tiempos de supervivencia > >>>> Message-ID: <20190718101842.280414d5@debian-dde> > >>>> Content-Type: text/plain; charset="utf-8" > >>>> > >>>> Buenos días a todos: > >>>> > >>>> Alguien me puede ayudar a hacer (si se puede) con unos datos similares a: > >>>> > >>>> set.seed(20) > >>>> DATOS <- data.frame ( > >>>> ID = c (1:10) > >>>> , TIEMPO = sample(1:40, 10, replace=F) > >>>> , DEF = sample(0:1, 10, replace=T) > >>>> );DATOS > >>>> > >>>> un gráfico que muestre los tiempos de supervivencia similar a: > >>>> https://miro.medium.com/max/700/1*yHhG4TVcAAi29Ln88t0_5Q.png > >>>> > >>>> Lo he intentado con la función followup.plot del paquete > >>>> "epiDisplay" ( > >>> https://cran.r-project.org/web/packages/epiDisplay/index.html), > >>>> pero no encuentro la forma. > >>>> > >>>> Muchas gracias y saludos. > >>>> > >>>> > >>>> > >>>> > >>>> ------------------------------ > >>>> > >>>> Subject: Pié de página del digest > >>>> > >>>> _______________________________________________ > >>>> R-help-es mailing list > >>>> [email protected]<mailto:[email protected]> > >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>>> > >>>> > >>>> ------------------------------ > >>>> > >>>> Fin de Resumen de R-help-es, Vol 125, Envío 7 > >>>> ********************************************* > >>>> > >>>> > >>>> -- > >>>> Pedro Concejero > >>>> Telefónica CDO - 4th Platform - Internal Use Cases > >>>> E-mail: [email protected]<mailto: > >>> [email protected]> > >>>> skype: pedro.concejero > >>>> twitter @ConcejeroPedro<https://twitter.com/ConcejeroPedro> > >>>> linkedin pedroconcejero<http://www.linkedin.com/in/pedroconcejero/es> > >>>> eRReRo feliz, me puedes encontrar en gRupo R madRid < > >>> http://madrid.r-es.org/?s=concejero&searchsubmit.x=21&searchsubmit.y=13> > >>>> ________________________________ > >>>> > >>>> Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, > >>>> > >>> puede contener información privilegiada o confidencial y es para uso > >>> exclusivo de la persona o entidad de destino. Si no es usted. el > >>> destinatario indicado, queda notificado de que la lectura, utilización, > >>> divulgación y/o copia sin autorización puede estar prohibida en virtud de > >>> la legislación vigente. Si ha recibido este mensaje por error, le rogamos > >>> que nos lo comunique inmediatamente por esta misma vía y proceda a su > >>> destrucción. > >>>> The information contained in this transmission is privileged and > >>> confidential information intended only for the use of the individual or > >>> entity named above. If the reader of this message is not the intended > >>> recipient, you are hereby notified that any dissemination, distribution or > >>> copying of this communication is strictly prohibited. If you have received > >>> this transmission in error, do not read it. Please immediately reply to > >>> the > >>> sender that you have received this communication in error and then delete > >>> it. > >>>> Esta mensagem e seus anexos se dirigem exclusivamente ao seu > >>> destinatário, pode conter informação privilegiada ou confidencial e é para > >>> uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o > >>> destinatário indicado, fica notificado de que a leitura, utilização, > >>> divulgação e/ou cópia sem autorização pode estar proibida em virtude da > >>> legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos > >>> o comunique imediatamente por esta mesma via e proceda a sua destruição > >>>> [[alternative HTML version deleted]] > >>>> > >>>> _______________________________________________ > >>>> R-help-es mailing list > >>>> [email protected] > >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>> _______________________________________________ > >>> R-help-es mailing list > >>> [email protected] > >>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>> > >> > >> -- > >> Saludos, > >> Carlos Ortega > >> www.qualityexcellence.es > > _______________________________________________ > > R-help-es mailing list > > [email protected] > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > -- > +-------------------------------------------------------------- > | Francisco J. Viciana Fernández > | Dpto. Indicadores Demográficos > | 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
