Curvas de Supervivencia
Álvaro Alonso Fernández, Departamento de Ciencias de la Vida, Universidad de Alcalá, España
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
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
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
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
Publicar un comentario