data(melanom); attach(melanom)
melanom=melanom[ order(melanom[,1],melanom[,4]), ]
msurv <- with(melanom, Surv(days, status==1))
mean(msurv)
## [1] 1076.539
mean(msurv[,1])
## [1] 2152.8
summary(msurv)
## time status
## Min. : 10 Min. :0.000
## 1st Qu.:1525 1st Qu.:0.000
## Median :2005 Median :0.000
## Mean :2153 Mean :0.278
## 3rd Qu.:3042 3rd Qu.:1.000
## Max. :5565 Max. :1.000
(fit.bysex <- survfit(Surv(days, status == 1) ~ sex, data=melanom))
## Call: survfit(formula = Surv(days, status == 1) ~ sex, data = melanom)
##
## records n.max n.start events median 0.95LCL 0.95UCL
## sex=1 126 126 126 28 NA NA NA
## sex=2 79 79 79 29 NA 2388 NA
plot(fit.bysex,conf.int=TRUE, col=c("black","grey"), lty=1:2)
pl2= ggsurv(fit.bysex)
status: 0 sadio ; 1 sintoma ; 2 esporul ; 3 morto por MA ; 4 morto por outro
df <- expand.grid(isol=1:20, placas=1:5, folhas=1:3)
df <- df[order(df$isol,df$placas),]; head(df)
## isol placas folhas
## 1 1 1 1
## 101 1 1 2
## 201 1 1 3
## 21 1 2 1
## 121 1 2 2
## 221 1 2 3
df$dias <- sample(c(1:14), replace=TRUE, size=nrow(df))
df$status <-sample(c(0,1), replace=TRUE, size=nrow(df))
attach(df); df[1:15,]
## The following object is masked from melanom:
##
## status
## isol placas folhas dias status
## 1 1 1 1 13 0
## 101 1 1 2 5 1
## 201 1 1 3 4 1
## 21 1 2 1 4 1
## 121 1 2 2 5 0
## 221 1 2 3 5 1
## 41 1 3 1 2 0
## 141 1 3 2 3 1
## 241 1 3 3 5 1
## 61 1 4 1 7 1
## 161 1 4 2 5 0
## 261 1 4 3 7 1
## 81 1 5 1 13 1
## 181 1 5 2 5 1
## 281 1 5 3 3 1
Apenas o isolado 1 Jeito tradicional
isol1=df[1:15,] #isol1=edit(df[1:15,])
boxplot(isol1$dias); points(mean(isol1$dias), col=2);abline(h=mean(isol1$dias), lty=3)
stripchart(dias ~ isol, data = isol1,
vertical = TRUE, method = "jitter",
pch = 21, col = "Grey70", bg = "Grey90",
add = TRUE)
Com analise de sobreviencia
(msurv <- with(isol1, Surv(dias, status==1)))
## [1] 13+ 5 4 4 5+ 5 2+ 3 5 7 5+ 7 13 5 3
isol1$surv=msurv
(fit.isol1 <- survfit(Surv(dias, status == 1) ~ isol, data=isol1))
## Call: survfit(formula = Surv(dias, status == 1) ~ isol, data = isol1)
##
## records n.max n.start events median 0.95LCL 0.95UCL
## 15 15 15 11 5 5 NA
plot(fit.isol1); abline(v=12, h=0.5, col=2, lty=3)
como seria do jeito tradicional
trad = round((isol_mean <- aggregate(dias ~ isol*placas, data = df, mean)),1)
(trad <- trad[order(trad$isol),])
## isol placas dias
## 1 1 1 7.3
## 21 1 2 4.7
## 41 1 3 3.3
## 61 1 4 6.3
## 81 1 5 7.0
## 2 2 1 6.0
## 22 2 2 9.0
## 42 2 3 9.7
## 62 2 4 10.3
## 82 2 5 5.3
## 3 3 1 6.3
## 23 3 2 9.0
## 43 3 3 5.7
## 63 3 4 8.7
## 83 3 5 3.0
## 4 4 1 6.7
## 24 4 2 9.0
## 44 4 3 11.0
## 64 4 4 6.0
## 84 4 5 6.7
## 5 5 1 4.7
## 25 5 2 6.0
## 45 5 3 6.3
## 65 5 4 9.3
## 85 5 5 5.0
## 6 6 1 7.0
## 26 6 2 9.3
## 46 6 3 7.7
## 66 6 4 6.7
## 86 6 5 4.7
## 7 7 1 8.3
## 27 7 2 10.0
## 47 7 3 8.0
## 67 7 4 9.0
## 87 7 5 4.3
## 8 8 1 5.3
## 28 8 2 12.0
## 48 8 3 11.7
## 68 8 4 8.0
## 88 8 5 9.3
## 9 9 1 8.0
## 29 9 2 9.3
## 49 9 3 9.7
## 69 9 4 3.7
## 89 9 5 7.0
## 10 10 1 6.7
## 30 10 2 8.7
## 50 10 3 6.0
## 70 10 4 7.3
## 90 10 5 10.0
## 11 11 1 7.0
## 31 11 2 6.0
## 51 11 3 3.3
## 71 11 4 8.0
## 91 11 5 7.7
## 12 12 1 9.0
## 32 12 2 4.7
## 52 12 3 7.0
## 72 12 4 8.0
## 92 12 5 3.7
## 13 13 1 8.7
## 33 13 2 7.3
## 53 13 3 8.3
## 73 13 4 9.7
## 93 13 5 11.7
## 14 14 1 7.3
## 34 14 2 7.3
## 54 14 3 12.7
## 74 14 4 5.7
## 94 14 5 7.7
## 15 15 1 4.7
## 35 15 2 13.3
## 55 15 3 11.0
## 75 15 4 12.7
## 95 15 5 6.0
## 16 16 1 8.0
## 36 16 2 10.0
## 56 16 3 4.3
## 76 16 4 9.3
## 96 16 5 6.7
## 17 17 1 5.3
## 37 17 2 10.3
## 57 17 3 6.3
## 77 17 4 9.0
## 97 17 5 9.7
## 18 18 1 11.0
## 38 18 2 10.7
## 58 18 3 3.3
## 78 18 4 10.3
## 98 18 5 7.7
## 19 19 1 6.7
## 39 19 2 7.7
## 59 19 3 6.7
## 79 19 4 7.3
## 99 19 5 6.0
## 20 20 1 6.3
## 40 20 2 9.7
## 60 20 3 6.3
## 80 20 4 9.3
## 100 20 5 6.7
round((isol_mean <- aggregate(dias ~ isol, data = df, mean)),2)
## isol dias
## 1 1 5.73
## 2 2 8.07
## 3 3 6.53
## 4 4 7.87
## 5 5 6.27
## 6 6 7.07
## 7 7 7.93
## 8 8 9.27
## 9 9 7.53
## 10 10 7.73
## 11 11 6.40
## 12 12 6.47
## 13 13 9.13
## 14 14 8.13
## 15 15 9.53
## 16 16 7.67
## 17 17 8.13
## 18 18 8.60
## 19 19 6.87
## 20 20 7.67
E com analise de sobrevivencia?
(fit.isol <- survfit(Surv(dias, status == 1) ~ isol, data=df))
## Call: survfit(formula = Surv(dias, status == 1) ~ isol, data = df)
##
## records n.max n.start events median 0.95LCL 0.95UCL
## isol=1 15 15 15 11 5 5 NA
## isol=2 15 15 15 6 11 7 NA
## isol=3 15 15 15 4 NA 12 NA
## isol=4 15 15 15 5 14 NA NA
## isol=5 15 15 15 6 8 7 NA
## isol=6 15 15 15 8 7 5 NA
## isol=7 15 15 15 9 11 9 NA
## isol=8 15 15 15 4 13 12 NA
## isol=9 15 15 15 11 9 6 NA
## isol=10 15 15 15 10 11 10 NA
## isol=11 15 15 15 10 7 5 NA
## isol=12 15 15 15 7 10 8 NA
## isol=13 15 15 15 6 14 10 NA
## isol=14 15 15 15 8 11 9 NA
## isol=15 15 15 15 7 14 11 NA
## isol=16 15 15 15 8 12 6 NA
## isol=17 15 15 15 7 12 9 NA
## isol=18 15 15 15 5 13 13 NA
## isol=19 15 15 15 8 9 6 NA
## isol=20 15 15 15 9 11 7 NA
(test.isol <- survdiff(Surv(dias, status == 1) ~ isol, data=df))
## Call:
## survdiff(formula = Surv(dias, status == 1) ~ isol, data = df)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## isol=1 15 11 4.61 8.869071 9.99306
## isol=2 15 6 6.85 0.106125 0.12070
## isol=3 15 4 5.63 0.473824 0.53592
## isol=4 15 5 8.46 1.415030 1.83070
## isol=5 15 6 6.29 0.013605 0.01797
## isol=6 15 8 7.25 0.077095 0.10015
## isol=7 15 9 8.26 0.066109 0.08534
## isol=8 15 4 10.20 3.768955 4.86690
## isol=9 15 11 7.34 1.821085 2.22442
## isol=10 15 10 7.95 0.526163 0.64792
## isol=11 15 10 4.56 6.478453 7.15514
## isol=12 15 7 5.10 0.704414 0.78687
## isol=13 15 6 8.86 0.922084 1.12478
## isol=14 15 8 8.31 0.011218 0.01446
## isol=15 15 7 10.93 1.414592 1.84568
## isol=16 15 8 6.63 0.283727 0.32292
## isol=17 15 7 7.59 0.045697 0.05533
## isol=18 15 5 9.58 2.188442 2.83530
## isol=19 15 8 5.65 0.980516 1.10381
## isol=20 15 9 8.94 0.000446 0.00061
##
## Chisq= 34.5 on 19 degrees of freedom, p= 0.0159
Fit a stratified model
cox.model= coxph(Surv(dias, status)~ isol, df)
summary(cox.model)
## Call:
## coxph(formula = Surv(dias, status) ~ isol, data = df)
##
## n= 300, number of events= 149
##
## coef exp(coef) se(coef) z Pr(>|z|)
## isol -0.009131 0.990910 0.014535 -0.628 0.53
##
## exp(coef) exp(-coef) lower .95 upper .95
## isol 0.9909 1.009 0.9631 1.02
##
## Concordance= 0.539 (se = 0.029 )
## Rsquare= 0.001 (max possible= 0.991 )
## Likelihood ratio test= 0.39 on 1 df, p=0.5298
## Wald test = 0.39 on 1 df, p=0.5299
## Score (logrank) test = 0.39 on 1 df, p=0.5298
plot(fit.isol,conf.int=TRUE, col=c(1:20))
pl2= ggsurv(fit.isol)+
scale_x_continuous( breaks=seq(0,15,by=1)) +
scale_y_continuous(breaks = seq(0, 1, by = .25))
pl2
med.surv <- data.frame(time = c(4,4,5,5,9,9), quant = c(.5,0,.5,0,.5,0),
iso = c('1', '1', '2', '2', '3', '3')
)
pl2 + geom_line(data = med.surv, aes(time, quant, group = iso),
col = 'darkblue', linetype = 3)
msurv <- with(df, Surv(dias, status==1))
msurv[1:15]
## [1] 13+ 5 4 4 5+ 5 2+ 3 5 7 5+ 7 13 5 3
mean(msurv)
## [1] 4.063333
mean(msurv[,2])
## [1] 0.4966667
summary(msurv)
## time status
## Min. : 1.00 Min. :0.0000
## 1st Qu.: 4.00 1st Qu.:0.0000
## Median : 7.00 Median :0.0000
## Mean : 7.63 Mean :0.4967
## 3rd Qu.:11.25 3rd Qu.:1.0000
## Max. :14.00 Max. :1.0000