Autor: Álvaro Alonso Fernández
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)
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.
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
.
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.
La forma más simple de representación. El tiempo en el eje x y el evento en el eje y.
plot (s)
library(survminer)#cargamos el paquete survminer
ggsurvplot(s)
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
.
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)
Vamos a comparar con la Regresión Cox PH el efecto de diferentes factores en la supervivencia.
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.
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).
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.
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.
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")
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).
Espero que sea de utilidad.
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)