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 <c...@qualityexcellence.es> 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 (<gri...@yandex.com>) 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 <pedro.concejerocer...@telefonica.com> wrote:Hola, te vale esto? Es forma estandar de representar graficossupervivenciaBasado 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, r-help-es-requ...@r-project.org<mailto:r-help-es-requ...@r-project.org> escribió:Envíe los mensajes para la lista R-help-es a r-help-es@r-project.org<mailto:r-help-es@r-project.org> 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: r-help-es-requ...@r-project.org<mailto:r-help-es-requ...@r-project.org>Puede contactar con el responsable de la lista escribiendo a: r-help-es-ow...@r-project.org<mailto:r-help-es-ow...@r-project.org>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 <gri...@yandex.com><mailto:gri...@yandex.com> To: Lista R <r-help-es@r-project.org><mailto:r-help-es@r-project.org> 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 R-help-es@r-project.org<mailto:R-help-es@r-project.org> 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: pedro.concejerocer...@telefonica.com<mailto:pedro.concejerocer...@telefonica.com>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 andconfidential 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 seudestinatá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 R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es_______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es-- Saludos, Carlos Ortega www.qualityexcellence.es_______________________________________________ R-help-es mailing list R-help-es@r-project.org 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. | franciscoj.vici...@juntadeandalucia.es +--------------------------------------------------------------
<<attachment: franciscoj_viciana.vcf>>
_______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es