[R-es] Gráfico tiempos de supervivencia

Griera gr|er@ @end|ng |rom y@ndex@com
Vie Jul 19 15:03:18 CEST 2019


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 using 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 using 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 using 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 using r-project.org<mailto:
> > r-help-es-request using r-project.org> escribió:
> > >
> > > Envíe los mensajes para la lista R-help-es a
> > >         r-help-es using r-project.org<mailto:r-help-es using 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 using r-project.org<mailto:
> > r-help-es-request using r-project.org>
> > >
> > > Puede contactar con el responsable de la lista escribiendo a:
> > >         r-help-es-owner using r-project.org<mailto:
> > r-help-es-owner using 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 using yandex.com><mailto:griera using yandex.com>
> > > To: Lista R <r-help-es using r-project.org><mailto:r-help-es using r-project.org>
> > > Subject: [R-es] Gráfico tiempos de supervivencia
> > > Message-ID: <20190718101842.280414d5 using 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 using r-project.org<mailto:R-help-es using 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 using telefonica.com<mailto:
> > pedro.concejerocerezo using 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 using r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> 
> 
> -- 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es



Más información sobre la lista de distribución R-help-es