Análisis de Supervivencia

Curvas de Supervivencia

Introducción

Vamos a analizar el efecto del tiempo sobre la mortalidad de los individuos de una población. Para ello se dispone de los animales de forma individual en grupos tratados con diferentes concentraciones. Con el paso del tiempo se monitoriza la mortalidad de los animales (1 muerto 0 vivo). Las curvas nos permiten evaluar el tiempo en el que ocurre un evento y si existen diferencias entre concentraciones, sexos, clases de tamaño, etc.

Utilizaremos una matriz de datos con tres concentraciones (0, 2 y 3), dos sexos (1, 2), seis tamaños (1 a 6) y una respuesta (muerto=1 vs vivo=0, es decir “dead” vs “censored”). También veremos que se pueden testar la diferencias por medio del modelo de regresión Cox PH, el cual analiza la influencia de una variable sobre la supervivencia.

Otro parámetro de interés es el Cociente de Riesgo (hazard ratio), el cual nos indica la influencia del aumento del factor en la probabilidad de supervivencia.

Este análisis es adecuado para estudios de ecotoxicología, germinación, supervivencia de plantas frente a tratamientos de desecación, etc.

Autor: Álvaro Alonso Fernández

Videotutoriales con R y otros

Activar paquetes y obtener nuestros datos

Empezamos cargando los paquetes necesarios:

library(survminer)
## Loading required package: ggplot2
## Loading required package: ggpubr
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(survival)

Ahora fijamos directorio y cargamos los datos que se encuentran en un fichero .csv:

#Fijamos el directorio de trabajo
setwd(dir = "F:/R/MARKDOWN-Blog/Pruebashtml/")

#leemos el fichero de datos
nuestrosdatos1<-read.csv("kaplan-meier-TIME.csv", sep=";")
str(nuestrosdatos1)
## 'data.frame':    432 obs. of  5 variables:
##  $ concentration: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ time         : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ response     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ sex          : int  1 2 1 2 1 2 1 2 1 2 ...
##  $ size         : int  1 2 3 4 5 6 1 2 3 4 ...
head(nuestrosdatos1)
##   concentration time response sex size
## 1             0    1        0   1    1
## 2             0    1        0   2    2
## 3             0    1        0   1    3
## 4             0    1        0   2    4
## 5             0    1        0   1    5
## 6             0    1        0   2    6
Hay que estar atento a todos los comandos

Probabilidad de supervivencia por concentración y tiempo

Creamos un objeto en el que analizamos la respuesta (muerte-no muerte) frente al tiempo en función de la concentración de tóxico. El “summary” nos ofrece el resumen de los resultados de nuestro análisis.

#Se puede crear un objeto con los datos "time" and "event" que permite manejar mejor nuestros datos:
s<-survfit(Surv(time, response) ~ concentration, data = nuestrosdatos1)
str(s)
## List of 17
##  $ n        : int [1:3] 144 144 144
##  $ time     : num [1:36] 1 2 3 4 5 6 7 8 9 10 ...
##  $ n.risk   : num [1:36] 144 132 120 108 96 84 72 60 48 36 ...
##  $ n.event  : num [1:36] 0 1 2 2 2 2 2 2 2 2 ...
##  $ n.censor : num [1:36] 12 11 10 10 10 10 10 10 10 10 ...
##  $ surv     : num [1:36] 1 0.992 0.976 0.958 0.938 ...
##  $ std.err  : num [1:36] 0 0.0076 0.0141 0.0193 0.0244 ...
##  $ cumhaz   : num [1:36] 0 0.00758 0.02424 0.04276 0.06359 ...
##  $ std.chaz : num [1:36] 0 0.00758 0.01401 0.01918 0.02418 ...
##  $ strata   : Named int [1:3] 12 12 12
##   ..- attr(*, "names")= chr [1:3] "concentration=0" "concentration=2" "concentration=3"
##  $ type     : chr "right"
##  $ logse    : logi TRUE
##  $ conf.int : num 0.95
##  $ conf.type: chr "log"
##  $ lower    : num [1:36] 1 0.978 0.949 0.922 0.894 ...
##  $ upper    : num [1:36] 1 1 1 0.995 0.984 ...
##  $ call     : language survfit(formula = Surv(time, response) ~ concentration, data = nuestrosdatos1)
##  - attr(*, "class")= chr "survfit"
s
## Call: survfit(formula = Surv(time, response) ~ concentration, data = nuestrosdatos1)
## 
##                   n events median 0.95LCL 0.95UCL
## concentration=0 144     21     NA      12      NA
## concentration=2 144     68     10       9      11
## concentration=3 144    101      8       8       9
summary(s)#nos ofrece la probabilidad de supervivencia por concentraci?n y tiempo
## Call: survfit(formula = Surv(time, response) ~ concentration, data = nuestrosdatos1)
## 
##                 concentration=0 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     2    132       1    0.992 0.00755        0.978        1.000
##     3    120       2    0.976 0.01377        0.949        1.000
##     4    108       2    0.958 0.01852        0.922        0.995
##     5     96       2    0.938 0.02288        0.894        0.984
##     6     84       2    0.916 0.02725        0.864        0.971
##     7     72       2    0.890 0.03188        0.830        0.955
##     8     60       2    0.860 0.03708        0.791        0.936
##     9     48       2    0.825 0.04334        0.744        0.914
##    10     36       2    0.779 0.05164        0.684        0.887
##    11     24       2    0.714 0.06458        0.598        0.852
##    12     12       2    0.595 0.09378        0.437        0.810
## 
##                 concentration=2 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    144       1   0.9931 0.00692       0.9796        1.000
##     2    132       3   0.9705 0.01455       0.9424        0.999
##     3    120       3   0.9462 0.01981       0.9082        0.986
##     4    108       5   0.9024 0.02689       0.8512        0.957
##     5     96       5   0.8554 0.03269       0.7937        0.922
##     6     84       6   0.7943 0.03872       0.7219        0.874
##     7     72       6   0.7281 0.04392       0.6469        0.820
##     8     60       7   0.6432 0.04915       0.5537        0.747
##     9     48       7   0.5494 0.05326       0.4543        0.664
##    10     36       8   0.4273 0.05626       0.3301        0.553
##    11     24       8   0.2849 0.05565       0.1942        0.418
##    12     12       9   0.0712 0.03823       0.0249        0.204
## 
##                 concentration=3 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    144       4    0.972  0.0137      0.94575       0.9994
##     2    132       5    0.935  0.0208      0.89542       0.9772
##     3    120       6    0.889  0.0272      0.83693       0.9435
##     4    108       6    0.839  0.0323      0.77830       0.9050
##     5     96       7    0.778  0.0373      0.70827       0.8547
##     6     84       9    0.695  0.0424      0.61635       0.7830
##     7     72      10    0.598  0.0462      0.51416       0.6960
##     8     60      10    0.499  0.0481      0.41265       0.6022
##     9     48      11    0.384  0.0478      0.30108       0.4904
##    10     36      11    0.267  0.0444      0.19256       0.3698
##    11     24      11    0.145  0.0363      0.08839       0.2364
##    12     12      11    0.012  0.0119      0.00173       0.0838
summary(s, times=seq(0, 6, 0.5))#Secuenciar la tabla de 0 a 6 de 0.5 en 0.5 tiempos
## Call: survfit(formula = Surv(time, response) ~ concentration, data = nuestrosdatos1)
## 
##                 concentration=0 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##   0.0    144       0    1.000 0.00000        1.000        1.000
##   0.5    144       0    1.000 0.00000        1.000        1.000
##   1.0    144       0    1.000 0.00000        1.000        1.000
##   1.5    132       0    1.000 0.00000        1.000        1.000
##   2.0    132       1    0.992 0.00755        0.978        1.000
##   2.5    120       0    0.992 0.00755        0.978        1.000
##   3.0    120       2    0.976 0.01377        0.949        1.000
##   3.5    108       0    0.976 0.01377        0.949        1.000
##   4.0    108       2    0.958 0.01852        0.922        0.995
##   4.5     96       0    0.958 0.01852        0.922        0.995
##   5.0     96       2    0.938 0.02288        0.894        0.984
##   5.5     84       0    0.938 0.02288        0.894        0.984
##   6.0     84       2    0.916 0.02725        0.864        0.971
## 
##                 concentration=2 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##   0.0    144       0    1.000 0.00000        1.000        1.000
##   0.5    144       0    1.000 0.00000        1.000        1.000
##   1.0    144       1    0.993 0.00692        0.980        1.000
##   1.5    132       0    0.993 0.00692        0.980        1.000
##   2.0    132       3    0.970 0.01455        0.942        0.999
##   2.5    120       0    0.970 0.01455        0.942        0.999
##   3.0    120       3    0.946 0.01981        0.908        0.986
##   3.5    108       0    0.946 0.01981        0.908        0.986
##   4.0    108       5    0.902 0.02689        0.851        0.957
##   4.5     96       0    0.902 0.02689        0.851        0.957
##   5.0     96       5    0.855 0.03269        0.794        0.922
##   5.5     84       0    0.855 0.03269        0.794        0.922
##   6.0     84       6    0.794 0.03872        0.722        0.874
## 
##                 concentration=3 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##   0.0    144       0    1.000  0.0000        1.000        1.000
##   0.5    144       0    1.000  0.0000        1.000        1.000
##   1.0    144       4    0.972  0.0137        0.946        0.999
##   1.5    132       0    0.972  0.0137        0.946        0.999
##   2.0    132       5    0.935  0.0208        0.895        0.977
##   2.5    120       0    0.935  0.0208        0.895        0.977
##   3.0    120       6    0.889  0.0272        0.837        0.944
##   3.5    108       0    0.889  0.0272        0.837        0.944
##   4.0    108       6    0.839  0.0323        0.778        0.905
##   4.5     96       0    0.839  0.0323        0.778        0.905
##   5.0     96       7    0.778  0.0373        0.708        0.855
##   5.5     84       0    0.778  0.0373        0.708        0.855
##   6.0     84       9    0.695  0.0424        0.616        0.783
que los datos no te agobien….

Representación gráfica

Figura muy sencilla

plot (s)

Mejoramos la figura

library(survminer)#cargamos el paquete survminer
ggsurvplot(s)

Intervalos de confianza y tabla de riesgo

##Se pueden añadir intervalos de confianza a nuestro ejemplo:

ggsurvplot(s, conf.int=TRUE, pval=TRUE, risk.table=TRUE, #intervalo confianza y p valor for the log-rank test
           legend.labs=c("C0", "C2","C3"), legend.title="Treatment",  
           palette=c("dodgerblue2", "orchid2","red"), #colores tratamientos
           title="Kaplan-Meier Curve", 
           risk.table.height=.35)##tabla y altura de la misma

Podemos quitar la tabla de riesgo con el argumento risk.table=FALSE

ggsurvplot(s, conf.int=TRUE, pval=TRUE, risk.table=FALSE, #intervalo confianza y p valor for the log-rank test
           legend.labs=c("C0", "C2","C3"), legend.title="Treatment",  
           palette=c("dodgerblue2", "orchid2","red"), #colores tratamientos
           title="Kaplan-Meier Curve", 
           risk.table.height=.35)##tabla y altura de la misma

El p valor nos indica que hay diferencias en la supervivencia entre las concentraciones.

Influencia de un factor en la supervivencia

Veamos como afecta el sexo a la supervivencia. Para ello indicamos con ~ sex este factor. En primer lugar la tabla con la probabilidad de supervivencia para cada sexo en función del tiempo transcurrido:

###ordenar seg?n sexo (la concentraci?n no se tiene en cuenta como factor)
s2<-survfit(Surv(time, response) ~ sex, data = nuestrosdatos1)
str(s2)
## List of 17
##  $ n        : int [1:2] 216 216
##  $ time     : num [1:24] 1 2 3 4 5 6 7 8 9 10 ...
##  $ n.risk   : num [1:24] 216 198 180 162 144 126 108 90 72 54 ...
##  $ n.event  : num [1:24] 2 6 6 7 8 11 11 12 12 12 ...
##  $ n.censor : num [1:24] 16 12 12 11 10 7 7 6 6 6 ...
##  $ surv     : num [1:24] 0.991 0.961 0.929 0.889 0.839 ...
##  $ std.err  : num [1:24] 0.00658 0.01418 0.01982 0.02591 0.03286 ...
##  $ cumhaz   : num [1:24] 0.00926 0.03956 0.0729 0.11611 0.17166 ...
##  $ std.chaz : num [1:24] 0.00655 0.014 0.01952 0.02545 0.03215 ...
##  $ strata   : Named int [1:2] 12 12
##   ..- attr(*, "names")= chr [1:2] "sex=1" "sex=2"
##  $ type     : chr "right"
##  $ logse    : logi TRUE
##  $ conf.int : num 0.95
##  $ conf.type: chr "log"
##  $ lower    : num [1:24] 0.978 0.934 0.893 0.845 0.787 ...
##  $ upper    : num [1:24] 1 0.988 0.965 0.935 0.895 ...
##  $ call     : language survfit(formula = Surv(time, response) ~ sex, data = nuestrosdatos1)
##  - attr(*, "class")= chr "survfit"
s2
## Call: survfit(formula = Surv(time, response) ~ sex, data = nuestrosdatos1)
## 
##         n events median 0.95LCL 0.95UCL
## sex=1 216    112      9       9      10
## sex=2 216     78     11      10      12
summary(s2)#nos ofrece la probabilidad de supervivencia por concentraci?n y tiempo
## Call: survfit(formula = Surv(time, response) ~ sex, data = nuestrosdatos1)
## 
##                 sex=1 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    216       2   0.9907 0.00652       0.9780        1.000
##     2    198       6   0.9607 0.01362       0.9344        0.988
##     3    180       6   0.9287 0.01840       0.8933        0.965
##     4    162       7   0.8886 0.02302       0.8446        0.935
##     5    144       8   0.8392 0.02758       0.7869        0.895
##     6    126      11   0.7659 0.03285       0.7042        0.833
##     7    108      11   0.6879 0.03698       0.6191        0.764
##     8     90      12   0.5962 0.04043       0.5220        0.681
##     9     72      12   0.4968 0.04267       0.4199        0.588
##    10     54      12   0.3864 0.04349       0.3099        0.482
##    11     36      12   0.2576 0.04198       0.1872        0.355
##    12     18      13   0.0716 0.02959       0.0318        0.161
## 
##                 sex=2 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1    216       3    0.986 0.00796        0.971        1.000
##     2    198       3    0.971 0.01161        0.949        0.994
##     3    180       5    0.944 0.01640        0.913        0.977
##     4    162       6    0.909 0.02111        0.869        0.952
##     5    144       6    0.871 0.02527        0.823        0.922
##     6    126       6    0.830 0.02920        0.775        0.889
##     7    108       7    0.776 0.03365        0.713        0.845
##     8     90       7    0.716 0.03798        0.645        0.794
##     9     72       8    0.636 0.04293        0.557        0.726
##    10     54       9    0.530 0.04817        0.444        0.633
##    11     36       9    0.398 0.05262        0.307        0.515
##    12     18       9    0.199 0.05374        0.117        0.338

Se ve que el sexo influye en la supervivencia. Los machos sobreviven menos que las hembras. En la siguiente figura veremos que ese factor es significativo:

ggsurvplot(s2, conf.int=TRUE, pval=TRUE, risk.table=TRUE,
           legend.labs=c("Male", "Female"), legend.title="Sex",  
           palette=c("dodgerblue2", "orchid2"), 
           title="Kaplan-Meier Curve", 
           risk.table.height=.35)

Influencia de diferentes factores en la supervivencia

Vamos a comparar con la Regresión Cox PH el efecto de diferentes factores en la supervivencia.

Influencia del sexo

Primero vamos a ver el efecto del sexo:

fit <- coxph(Surv(time, response)~sex, data=nuestrosdatos1)
fit
## Call:
## coxph(formula = Surv(time, response) ~ sex, data = nuestrosdatos1)
## 
##        coef exp(coef) se(coef)      z      p
## sex -0.4032    0.6682   0.1476 -2.732 0.0063
## 
## Likelihood ratio test=7.59  on 1 df, p=0.005855
## n= 432, number of events= 190

El p valor es significativo, la supervivencia es diferente en función del sexo.

Influencia de la concentración

Ahora el efecto de la concentración:

fit2 <- coxph(Surv(time, response)~concentration, data=nuestrosdatos1)
fit2###la respuesta es diferente con la concentraci?n
## Call:
## coxph(formula = Surv(time, response) ~ concentration, data = nuestrosdatos1)
## 
##                  coef exp(coef) se(coef)     z        p
## concentration 0.56218   1.75450  0.07551 7.445 9.69e-14
## 
## Likelihood ratio test=70.02  on 1 df, p=< 2.2e-16
## n= 432, number of events= 190

El p valor es significativo, la concentración influye en la supervivencia.

El “exp(coef)” es el “Hazard ratio” que indica el efecto multiplicativo por cada incremento en la variable, es decir por un aumento de 1 en la concentración aumenta 1.75 el daño en la supervivencia.

Influencia de la concentración y el sexo

Ahora veamos el efecto de la concentración y el sexo juntos en el modelo:

fit3 <- coxph(Surv(time, response)~concentration+sex, data=nuestrosdatos1)
fit3
## Call:
## coxph(formula = Surv(time, response) ~ concentration + sex, data = nuestrosdatos1)
## 
##                   coef exp(coef) se(coef)      z       p
## concentration  0.56452   1.75860  0.07545  7.482 7.3e-14
## sex           -0.42184   0.65584  0.14781 -2.854 0.00432
## 
## Likelihood ratio test=78.31  on 2 df, p=< 2.2e-16
## n= 432, number of events= 190

Influencia de la concentración, sexo y tamaño

Ahora veamos el efecto de la concentración, sexo y tamaño juntos en el modelo:

fit4 <- coxph(Surv(time, response)~concentration+sex+size, data=nuestrosdatos1)
fit4
## Call:
## coxph(formula = Surv(time, response) ~ concentration + sex + 
##     size, data = nuestrosdatos1)
## 
##                   coef exp(coef) se(coef)      z        p
## concentration  0.56143   1.75318  0.07544  7.442 9.92e-14
## sex           -0.19147   0.82575  0.15516 -1.234    0.217
## size          -0.22668   0.79717  0.04667 -4.857 1.19e-06
## 
## Likelihood ratio test=103  on 3 df, p=< 2.2e-16
## n= 432, number of events= 190

En este caso influye la concentración y el tamaño pero no el sexo.

Representaciones gráficas

Podemos hacer complejas representaciones de todos los factores:

s3<-survfit(Surv(time, response) ~ size, data = nuestrosdatos1)
str(s3)
## List of 17
##  $ n        : int [1:6] 72 72 72 72 72 72
##  $ time     : num [1:72] 1 2 3 4 5 6 7 8 9 10 ...
##  $ n.risk   : num [1:72] 72 66 60 54 48 42 36 30 24 18 ...
##  $ n.event  : num [1:72] 2 5 5 5 5 5 5 5 5 5 ...
##  $ n.censor : num [1:72] 4 1 1 1 1 1 1 1 1 1 ...
##  $ surv     : num [1:72] 0.972 0.899 0.824 0.747 0.67 ...
##  $ std.err  : num [1:72] 0.0199 0.0405 0.0562 0.071 0.0864 ...
##  $ cumhaz   : num [1:72] 0.0278 0.1035 0.1869 0.2795 0.3836 ...
##  $ std.chaz : num [1:72] 0.0196 0.0392 0.0541 0.0681 0.0825 ...
##  $ strata   : Named int [1:6] 12 12 12 12 12 12
##   ..- attr(*, "names")= chr [1:6] "size=1" "size=2" "size=3" "size=4" ...
##  $ type     : chr "right"
##  $ logse    : logi TRUE
##  $ conf.int : num 0.95
##  $ conf.type: chr "log"
##  $ lower    : num [1:72] 0.935 0.83 0.738 0.65 0.565 ...
##  $ upper    : num [1:72] 1 0.973 0.92 0.859 0.793 ...
##  $ call     : language survfit(formula = Surv(time, response) ~ size, data = nuestrosdatos1)
##  - attr(*, "class")= chr "survfit"
s3
## Call: survfit(formula = Surv(time, response) ~ size, data = nuestrosdatos1)
## 
##         n events median 0.95LCL 0.95UCL
## size=1 72     57      8       6       9
## size=2 72     37     10       8      11
## size=3 72     24     11      10      12
## size=4 72     31     10       9      12
## size=5 72     31     10       9      11
## size=6 72     10     12      11      NA
summary(s3)
## Call: survfit(formula = Surv(time, response) ~ size, data = nuestrosdatos1)
## 
##                 size=1 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     72       2   0.9722  0.0194      0.93499        1.000
##     2     66       5   0.8986  0.0364      0.83003        0.973
##     3     60       5   0.8237  0.0463      0.73784        0.920
##     4     54       5   0.7474  0.0531      0.65030        0.859
##     5     48       5   0.6696  0.0579      0.56525        0.793
##     6     42       5   0.5899  0.0610      0.48169        0.722
##     7     36       5   0.5079  0.0625      0.39901        0.647
##     8     30       5   0.4233  0.0625      0.31685        0.565
##     9     24       5   0.3351  0.0607      0.23497        0.478
##    10     18       5   0.2420  0.0563      0.15337        0.382
##    11     12       5   0.1412  0.0476      0.07290        0.273
##    12      6       5   0.0235  0.0229      0.00349        0.158
## 
##                 size=2 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     72       2   0.9722  0.0194       0.9350        1.000
##     2     66       2   0.9428  0.0278       0.8898        0.999
##     3     60       3   0.8956  0.0374       0.8252        0.972
##     4     54       3   0.8459  0.0451       0.7620        0.939
##     5     48       3   0.7930  0.0515       0.6981        0.901
##     6     42       3   0.7364  0.0573       0.6322        0.858
##     7     36       3   0.6750  0.0625       0.5629        0.809
##     8     30       3   0.6075  0.0673       0.4889        0.755
##     9     24       3   0.5316  0.0718       0.4079        0.693
##    10     18       4   0.4134  0.0764       0.2879        0.594
##    11     12       4   0.2756  0.0759       0.1607        0.473
##    12      6       4   0.0919  0.0588       0.0262        0.322
## 
##                 size=3 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     2     66       1    0.985  0.0150       0.9558        1.000
##     3     60       1    0.968  0.0220       0.9263        1.000
##     4     54       1    0.951  0.0280       0.8973        1.000
##     5     48       1    0.931  0.0337       0.8670        0.999
##     6     42       2    0.886  0.0443       0.8037        0.978
##     7     36       2    0.837  0.0538       0.7380        0.950
##     8     30       3    0.753  0.0667       0.6334        0.896
##     9     24       3    0.659  0.0774       0.5237        0.830
##    10     18       3    0.549  0.0867       0.4032        0.748
##    11     12       3    0.412  0.0946       0.2628        0.646
##    12      6       4    0.137  0.0853       0.0406        0.464
## 
##                 size=4 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     1     72       1    0.986  0.0138        0.959        1.000
##     2     66       1    0.971  0.0201        0.933        1.000
##     3     60       2    0.939  0.0297        0.882        0.999
##     4     54       3    0.887  0.0406        0.811        0.970
##     5     48       3    0.831  0.0490        0.740        0.933
##     6     42       3    0.772  0.0563        0.669        0.890
##     7     36       3    0.708  0.0626        0.595        0.842
##     8     30       3    0.637  0.0684        0.516        0.786
##     9     24       3    0.557  0.0737        0.430        0.722
##    10     18       3    0.464  0.0785        0.333        0.647
##    11     12       3    0.348  0.0827        0.219        0.555
##    12      6       3    0.174  0.0822        0.069        0.439
## 
##                 size=5 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     4     54       1   0.9815  0.0183       0.9462        1.000
##     5     48       2   0.9406  0.0333       0.8775        1.000
##     6     42       4   0.8510  0.0522       0.7546        0.960
##     7     36       4   0.7565  0.0643       0.6403        0.894
##     8     30       4   0.6556  0.0729       0.5272        0.815
##     9     24       4   0.5463  0.0786       0.4121        0.724
##    10     18       4   0.4249  0.0813       0.2921        0.618
##    11     12       4   0.2833  0.0792       0.1637        0.490
##    12      6       4   0.0944  0.0606       0.0269        0.332
## 
##                 size=6 
##  time n.risk n.event survival std.err lower 95% CI upper 95% CI
##     7     36       1    0.972  0.0274        0.920        1.000
##     8     30       1    0.940  0.0414        0.862        1.000
##     9     24       2    0.861  0.0652        0.743        0.999
##    10     18       2    0.766  0.0862        0.614        0.955
##    11     12       2    0.638  0.1093        0.456        0.893
##    12      6       2    0.425  0.1428        0.220        0.821
ggsurvplot(s3, conf.int=TRUE, pval=TRUE, risk.table=FALSE, 
           title="Kaplan-Meier Curve")

Lo mismo de antes más complejo:

s4<-survfit(Surv(time, response) ~ size+concentration+sex, data = nuestrosdatos1)
ggsurvplot(s4, conf.int=TRUE, pval=TRUE, risk.table=FALSE, 
           title="")

Conclusiones

Una limitación de esta aproximación es que no permite hacer interacciones entre los factores de nuestro diseño experimental.

Adecuado para datos de mortalidad a nivel de individuo (0 o 1, también puede ser 1 o 2, es decir “censored” vs “dead”, no respuesta vs respuesta).

Dos poblaciones pueden sufrir la misma mortalidad final acumulada pero la forma de hacerlo a lo largo del tiempo puede ser diferente (por ejemplo, en una de las poblaciones los individuos mueren muy rápido al principio y en la otra lo hacen de forma gradual).

Comentarios

Entradas populares