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 <cof en 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 (<griera en 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.concejerocerezo en telefonica.com> 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, r-help-es-request en r-project.org<mailto:
r-help-es-request en r-project.org> escribió:
EnvÃe los mensajes para la lista R-help-es a
r-help-es en r-project.org<mailto:r-help-es en 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-request en r-project.org<mailto:
r-help-es-request en r-project.org>
Puede contactar con el responsable de la lista escribiendo a:
r-help-es-owner en r-project.org<mailto:
r-help-es-owner en 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 <griera en yandex.com><mailto:griera en yandex.com>
To: Lista R <r-help-es en r-project.org><mailto:r-help-es en r-project.org>
Subject: [R-es] Gráfico tiempos de supervivencia
Message-ID: <20190718101842.280414d5 en 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" (
pero no encuentro la forma. Muchas gracias y saludos. ------------------------------ Subject: Pié de página del digest
_______________________________________________ R-help-es mailing list R-help-es en r-project.org<mailto:R-help-es en 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.concejerocerezo en telefonica.com<mailto:
pedro.concejerocerezo en 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 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 R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
_______________________________________________ R-help-es mailing list R-help-es en 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 en 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.viciana en juntadeandalucia.es +-------------------------------------------------------------- ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: franciscoj_viciana.vcf Type: text/x-vcard Size: 4 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20190808/c07f7445/attachment.vcf>