library(survival)
library(survminer)
## Loading required package: ggplot2
## Loading required package: ggpubr
## Loading required package: magrittr
library(ISwR)
##
## Attaching package: 'ISwR'
## The following object is masked from 'package:survival':
##
## lung
str(melanom)
## 'data.frame': 205 obs. of 6 variables:
## $ no : int 789 13 97 16 21 469 685 7 932 944 ...
## $ status: int 3 3 2 3 1 1 1 1 3 1 ...
## $ days : int 10 30 35 99 185 204 210 232 232 279 ...
## $ ulc : int 1 2 2 2 1 1 1 1 1 1 ...
## $ thick : int 676 65 134 290 1208 484 516 1288 322 741 ...
## $ sex : int 2 2 2 1 2 2 2 2 1 1 ...
attach(melanom)
head(melanom)
## no status days ulc thick sex
## 1 789 3 10 1 676 2
## 2 13 3 30 2 65 2
## 3 97 2 35 2 134 2
## 4 16 3 99 2 290 1
## 5 21 1 185 1 1208 2
## 6 469 1 204 1 484 2
melanom.surv <- Surv(days, status==1)
melanom.km <- survfit(melanom.surv ~ 1, data = melanom, type = "kaplan-meier")
summary(melanom.km)
## Call: survfit(formula = melanom.surv ~ 1, data = melanom, type = "kaplan-meier")
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 185 201 1 0.995 0.00496 0.985 1.000
## 204 200 1 0.990 0.00700 0.976 1.000
## 210 199 1 0.985 0.00855 0.968 1.000
## 232 198 1 0.980 0.00985 0.961 1.000
## 279 196 1 0.975 0.01100 0.954 0.997
## 295 195 1 0.970 0.01202 0.947 0.994
## 386 193 1 0.965 0.01297 0.940 0.991
## 426 192 1 0.960 0.01384 0.933 0.988
## 469 191 1 0.955 0.01465 0.927 0.984
## 529 189 1 0.950 0.01542 0.920 0.981
## 621 188 1 0.945 0.01615 0.914 0.977
## 629 187 1 0.940 0.01683 0.907 0.973
## 659 186 1 0.935 0.01748 0.901 0.970
## 667 185 1 0.930 0.01811 0.895 0.966
## 718 184 1 0.925 0.01870 0.889 0.962
## 752 183 1 0.920 0.01927 0.883 0.958
## 779 182 1 0.915 0.01981 0.877 0.954
## 793 181 1 0.910 0.02034 0.871 0.950
## 817 180 1 0.904 0.02084 0.865 0.946
## 833 178 1 0.899 0.02134 0.859 0.942
## 858 177 1 0.894 0.02181 0.853 0.938
## 869 176 1 0.889 0.02227 0.847 0.934
## 872 175 1 0.884 0.02272 0.841 0.930
## 967 174 1 0.879 0.02315 0.835 0.926
## 977 173 1 0.874 0.02357 0.829 0.921
## 982 172 1 0.869 0.02397 0.823 0.917
## 1041 171 1 0.864 0.02436 0.817 0.913
## 1055 170 1 0.859 0.02474 0.812 0.909
## 1062 169 1 0.854 0.02511 0.806 0.904
## 1075 168 1 0.849 0.02547 0.800 0.900
## 1156 167 1 0.844 0.02582 0.794 0.896
## 1228 166 1 0.838 0.02616 0.789 0.891
## 1252 165 1 0.833 0.02649 0.783 0.887
## 1271 164 1 0.828 0.02681 0.777 0.883
## 1312 163 1 0.823 0.02713 0.772 0.878
## 1435 161 1 0.818 0.02744 0.766 0.874
## 1506 159 1 0.813 0.02774 0.760 0.869
## 1516 155 1 0.808 0.02805 0.755 0.865
## 1548 152 1 0.802 0.02837 0.749 0.860
## 1560 150 1 0.797 0.02868 0.743 0.855
## 1584 148 1 0.792 0.02899 0.737 0.851
## 1621 146 1 0.786 0.02929 0.731 0.846
## 1667 137 1 0.780 0.02963 0.725 0.841
## 1690 134 1 0.775 0.02998 0.718 0.836
## 1726 131 1 0.769 0.03033 0.712 0.831
## 1933 110 1 0.762 0.03085 0.704 0.825
## 2061 95 1 0.754 0.03155 0.694 0.818
## 2062 94 1 0.746 0.03221 0.685 0.812
## 2103 90 1 0.737 0.03290 0.676 0.805
## 2108 88 1 0.729 0.03358 0.666 0.798
## 2256 80 1 0.720 0.03438 0.656 0.791
## 2388 75 1 0.710 0.03523 0.645 0.783
## 2467 69 1 0.700 0.03619 0.633 0.775
## 2565 63 1 0.689 0.03729 0.620 0.766
## 2782 57 1 0.677 0.03854 0.605 0.757
## 3042 52 1 0.664 0.03994 0.590 0.747
## 3338 35 1 0.645 0.04307 0.566 0.735
ggsurvplot(fit = melanom.km, data = melanom, conf.int = T, title = "Curva de Supervivencia", xlab = "Tiempo", ylab = "Probabilidad de supervivencia", legend.title = "Estimación",
legend.labs = "Kaplan-Meier")
print(melanom.km, print.rmean = TRUE)
## Call: survfit(formula = melanom.surv ~ 1, data = melanom, type = "kaplan-meier")
##
## n events *rmean *se(rmean) median 0.95LCL 0.95UCL
## 205 57 4125 161 NA NA NA
## * restricted mean with upper limit = 5565
SEX.km <- survfit(Surv(days, status==1) ~ sex, data = melanom, type = "kaplan-meier")
SEX.km
## Call: survfit(formula = Surv(days, status == 1) ~ sex, data = melanom,
## type = "kaplan-meier")
##
## n events median 0.95LCL 0.95UCL
## sex=1 126 28 NA NA NA
## sex=2 79 29 NA 2388 NA
summary(SEX.km)
## Call: survfit(formula = Surv(days, status == 1) ~ sex, data = melanom,
## type = "kaplan-meier")
##
## sex=1
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 279 124 1 0.992 0.00803 0.976 1.000
## 295 123 1 0.984 0.01131 0.962 1.000
## 386 121 1 0.976 0.01384 0.949 1.000
## 469 120 1 0.968 0.01593 0.937 0.999
## 667 119 1 0.959 0.01775 0.925 0.995
## 817 118 1 0.951 0.01937 0.914 0.990
## 833 116 1 0.943 0.02087 0.903 0.985
## 858 115 1 0.935 0.02224 0.892 0.980
## 869 114 1 0.927 0.02351 0.882 0.974
## 872 113 1 0.919 0.02469 0.871 0.968
## 982 112 1 0.910 0.02580 0.861 0.962
## 1055 111 1 0.902 0.02684 0.851 0.956
## 1156 110 1 0.894 0.02782 0.841 0.950
## 1252 109 1 0.886 0.02875 0.831 0.944
## 1271 108 1 0.878 0.02963 0.821 0.938
## 1312 107 1 0.869 0.03046 0.812 0.931
## 1548 102 1 0.861 0.03134 0.802 0.924
## 1560 100 1 0.852 0.03218 0.791 0.918
## 1621 97 1 0.843 0.03303 0.781 0.911
## 1667 90 1 0.834 0.03396 0.770 0.903
## 1726 86 1 0.824 0.03493 0.759 0.896
## 1933 74 1 0.813 0.03619 0.745 0.887
## 2062 63 1 0.800 0.03785 0.729 0.878
## 2108 60 1 0.787 0.03950 0.713 0.868
## 2256 54 1 0.772 0.04137 0.695 0.858
## 2467 45 1 0.755 0.04386 0.674 0.846
## 3042 34 1 0.733 0.04787 0.645 0.833
## 3338 25 1 0.704 0.05419 0.605 0.818
##
## sex=2
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 185 76 1 0.987 0.0131 0.962 1.000
## 204 75 1 0.974 0.0184 0.938 1.000
## 210 74 1 0.961 0.0223 0.918 1.000
## 232 73 1 0.947 0.0256 0.898 0.999
## 426 72 1 0.934 0.0284 0.880 0.992
## 529 70 1 0.921 0.0310 0.862 0.984
## 621 69 1 0.908 0.0333 0.845 0.975
## 629 68 1 0.894 0.0354 0.827 0.966
## 659 67 1 0.881 0.0373 0.811 0.957
## 718 66 1 0.867 0.0390 0.794 0.947
## 752 65 1 0.854 0.0407 0.778 0.938
## 779 64 1 0.841 0.0422 0.762 0.928
## 793 63 1 0.827 0.0435 0.746 0.917
## 967 62 1 0.814 0.0448 0.731 0.907
## 977 61 1 0.801 0.0461 0.715 0.896
## 1041 60 1 0.787 0.0472 0.700 0.886
## 1062 59 1 0.774 0.0482 0.685 0.875
## 1075 58 1 0.761 0.0492 0.670 0.864
## 1228 57 1 0.747 0.0501 0.655 0.852
## 1435 55 1 0.734 0.0510 0.640 0.841
## 1506 53 1 0.720 0.0519 0.625 0.829
## 1516 51 1 0.706 0.0528 0.610 0.817
## 1584 50 1 0.692 0.0536 0.594 0.805
## 1690 47 1 0.677 0.0544 0.578 0.792
## 2061 32 1 0.656 0.0567 0.554 0.777
## 2103 29 1 0.633 0.0591 0.527 0.760
## 2388 25 1 0.608 0.0619 0.498 0.742
## 2565 22 1 0.580 0.0650 0.466 0.723
## 2782 21 1 0.553 0.0675 0.435 0.702
\[H_0 : S_1(t)=S_2(t)=...=S_k(t)\text{ para todo }t \leq \tau\] \[H_1: S_i(t_0) \neq S_j(t_0)\text{ para al menos un par i,j y tiempo }t_0\]
survdiff(Surv(days, status==1) ~ sex, data = melanom, rho = 0)
## Call:
## survdiff(formula = Surv(days, status == 1) ~ sex, data = melanom,
## rho = 0)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## sex=1 126 28 37.1 2.25 6.47
## sex=2 79 29 19.9 4.21 6.47
##
## Chisq= 6.5 on 1 degrees of freedom, p= 0.01
survfit(Surv(days, status==1) ~ sex, melanom, conf.type = "log-log") %>%
ggsurvplot(title = "Supervivencia por género ", conf.int = T, legend.title = "Género", legend.labs = c("Femenino", "Masculino"))
melanom$sex <- factor(melanom$sex, labels = c("Masculino", "Femenino"))
melanom$ulc <- factor(melanom$ulc, labels = c("Ausente", "Presente"))
fit <- coxph(Surv(days, status==1) ~ melanom$sex, data = melanom)
fit
## Call:
## coxph(formula = Surv(days, status == 1) ~ melanom$sex, data = melanom)
##
## coef exp(coef) se(coef) z p
## melanom$sexFemenino 0.6622 1.9390 0.2651 2.498 0.0125
##
## Likelihood ratio test=6.15 on 1 df, p=0.01314
## n= 205, number of events= 57
fit1 <- coxph(Surv(days, status==1) ~ melanom$ulc, data = melanom)
fit1
## Call:
## coxph(formula = Surv(days, status == 1) ~ melanom$ulc, data = melanom)
##
## coef exp(coef) se(coef) z p
## melanom$ulcPresente -1.4717 0.2295 0.2954 -4.982 6.29e-07
##
## Likelihood ratio test=28.44 on 1 df, p=9.68e-08
## n= 205, number of events= 57
fit2 <- coxph(Surv(days, status==1) ~ thick, data = melanom)
fit2
## Call:
## coxph(formula = Surv(days, status == 1) ~ thick, data = melanom)
##
## coef exp(coef) se(coef) z p
## thick 0.0016024 1.0016037 0.0003126 5.126 2.96e-07
##
## Likelihood ratio test=19.19 on 1 df, p=1.186e-05
## n= 205, number of events= 57
modelo = coxph(Surv(days, status==1) ~ melanom$sex + melanom$ulc + thick)
summary(modelo)
## Call:
## coxph(formula = Surv(days, status == 1) ~ melanom$sex + melanom$ulc +
## thick)
##
## n= 205, number of events= 57
##
## coef exp(coef) se(coef) z Pr(>|z|)
## melanom$sexFemenino 0.4594907 1.5832675 0.2667580 1.723 0.08498 .
## melanom$ulcPresente -1.1668079 0.3113593 0.3114615 -3.746 0.00018 ***
## thick 0.0011345 1.0011351 0.0003794 2.990 0.00279 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## melanom$sexFemenino 1.5833 0.6316 0.9386 2.6707
## melanom$ulcPresente 0.3114 3.2117 0.1691 0.5733
## thick 1.0011 0.9989 1.0004 1.0019
##
## Concordance= 0.76 (se = 0.034 )
## Likelihood ratio test= 39.39 on 3 df, p=1e-08
## Wald test = 37.75 on 3 df, p=3e-08
## Score (logrank) test = 44.96 on 3 df, p=9e-10
modelo1 = coxph(Surv(days, status==1) ~ melanom$ulc + thick)
summary(modelo1)
## Call:
## coxph(formula = Surv(days, status == 1) ~ melanom$ulc + thick)
##
## n= 205, number of events= 57
##
## coef exp(coef) se(coef) z Pr(>|z|)
## melanom$ulcPresente -1.218019 0.295816 0.309086 -3.941 8.12e-05 ***
## thick 0.001140 1.001141 0.000361 3.158 0.00159 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## melanom$ulcPresente 0.2958 3.3805 0.1614 0.5421
## thick 1.0011 0.9989 1.0004 1.0018
##
## Concordance= 0.765 (se = 0.032 )
## Likelihood ratio test= 36.44 on 2 df, p=1e-08
## Wald test = 35.87 on 2 df, p=2e-08
## Score (logrank) test = 42.23 on 2 df, p=7e-10
riesgo = cox.zph(modelo1)
riesgo
## chisq df p
## melanom$ulc 3.87 1 0.049
## thick 4.59 1 0.032
## GLOBAL 6.36 2 0.042
ggcoxzph(riesgo)
modelofinal = coxph(Surv(days, status==1) ~ strata(melanom$ulc) + thick, data = melanom)
summary(modelofinal)
## Call:
## coxph(formula = Surv(days, status == 1) ~ strata(melanom$ulc) +
## thick, data = melanom)
##
## n= 205, number of events= 57
##
## coef exp(coef) se(coef) z Pr(>|z|)
## thick 0.0010770 1.0010775 0.0003608 2.985 0.00284 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## thick 1.001 0.9989 1 1.002
##
## Concordance= 0.662 (se = 0.038 )
## Likelihood ratio test= 7.22 on 1 df, p=0.007
## Wald test = 8.91 on 1 df, p=0.003
## Score (logrank) test = 9.16 on 1 df, p=0.002
v=cox.zph(modelofinal)
v
## chisq df p
## thick 2.94 1 0.086
## GLOBAL 2.94 1 0.086
ggcoxzph(v)
ggcoxdiagnostics(modelofinal, type = "deviance",
linear.predictions = FALSE)
## `geom_smooth()` using formula 'y ~ x'