Autor: Álvaro Alonso Fernández
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)


1 Introducción-Nuestros datos

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.

Haremos un análisis de supervivencia. Nada que ver con un apocalipsis zombi…..aunque también se podría aplicar para ese caso

2 Activar paquetes y obtener nuestros datos

Empezamos cargando los paquetes necesarios survminer dplyr survival:

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/kaplan-meier-survminer package/")

#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

El dataframe que he creado tiene la siguiente información concentration time response sex size.

3 Probabilidad de supervivencia por concentración y tiempo

Creamos un objeto s en el que introducimos 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.

s<-survfit(Surv(time, response) ~ concentration, data = nuestrosdatos1)#Se puede crear un objeto con los datos "time" and "event" que permite manejar mejor nuestros datos.
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

Vemos como en la segunda concentración la supervivencia decae más rápido que en la primera concentración y que en el control.

4 Representación gráfica sencilla

La forma más simple de representación. El tiempo en el eje x y el evento en el eje y.

plot (s)

5 Representación gráfica mejorada

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

6 Intervalos de confianza y tabla de riesgo

Añadimos los intervalos de confianza a la figura anterior:

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

El p valor nos indica que hay diferencias en la supervivencia entre las concentraciones. Se puede simplificar la figura eliminando la tabla de riesgo con `risk.table=FALSE.

7 Influencia de un factor en la supervivencia

Veamos como afecta el sex a la supervivencia. Para ello indicamos con ~ sex este factor. En primer lugar tenemos que crear 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 para cada sexo
## 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)

8 Influencia de diferentes factores en la supervivencia

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

8.1 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.

8.2 Influencia de la concentración de tóxico

Ahora el efecto de la concentración:

fit2 <- coxph(Surv(time, response)~concentration, data=nuestrosdatos1)
fit2
## 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 (o en el factor que estemos analizando).

8.3 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

Los dos están influyendo en la supervivencia.

8.4 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.

8.5 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="Kaplan-Meier Curve")

9 Conclusiones

Una limitación de esta aproximación es que no permite hacer interacciones entre los factores de nuestro diseño experimental. Es un método de análisis 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, por tanto el efecto del tóxico es diferente, la primera probablemente sea más sensible que la segunda).

Creo que me he enterado de todo…


Espero que sea de utilidad.

10 CRÉDITOS

Álvaro Alonso Fernández

Departamento de Ciencias de la Vida

Universidad de Alcalá (España)