library(RCurl)
library(survival)
library(ggforce)
## Loading required package: ggplot2
library(ggthemes)
library(survminer)
## Loading required package: ggpubr
library(stringr)
library(tidyverse)
## -- Attaching packages ------------------------------------------------------------------------------------------------------------------------ tidyverse 1.3.0 --
## v tibble 3.0.3 v purrr 0.3.4
## v tidyr 1.1.2 v dplyr 1.0.2
## v readr 1.4.0 v forcats 0.5.0
## -- Conflicts --------------------------------------------------------------------------------------------------------------------------- tidyverse_conflicts() --
## x tidyr::complete() masks RCurl::complete()
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
theme_set(theme_economist())
Cargamos los datos necesarios para la practica para el Equipo 7
bateria_m <- getURL("https://raw.githubusercontent.com/CarlosFernandoVG/templatesForLearningR/master/DataSimulated/MaximumSegregation/data7.csv")
bateria_m <- read.csv(text=bateria_m)
objeto <- Surv(bateria_m$Time,bateria_m$Status)
fit <- survfit(objeto~ 1,data=bateria_m)
ggsurvplot(fit,data=bateria_m,ggtheme=theme_economist(),palette="lancet")
media_bateria <- mean(bateria_m$Time)
print(media_bateria)
## [1] 1.655252
intervalos <- t.test(bateria_m$Time,mu=media_bateria)
print(intervalos)
##
## One Sample t-test
##
## data: bateria_m$Time
## t = 0, df = 9999, p-value = 1
## alternative hypothesis: true mean is not equal to 1.655252
## 95 percent confidence interval:
## 1.611021 1.699484
## sample estimates:
## mean of x
## 1.655252
Ahora vemos que tomando en cuenta los Intervalos de confianza del 95% se tiene la siguiente gráfica
prueba <- ggsurvplot(fit,data=bateria_m,ggtheme=theme_economist(),palette="lancet")
prueba$plot + geom_vline(xintercept = 1.611021,color="orange") + geom_vline(xintercept = 1.699484,color="red")
Para poder verla mejor, hacemos un Zoom a la parte en donde se encuentran los intervalos de confianza
prueba <- ggsurvplot(fit,data=bateria_m,ggtheme=theme_economist(),palette="lancet")
prueba$plot + geom_vline(xintercept = 1.611021,color="orange") + geom_vline(xintercept = 1.699484,color="red")+
coord_cartesian(xlim=c(1.5,1.8),ylim=c(0.5,0.7))
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.
Ahora bien, para los resumenes estadisticos podemos ocupar la funcion summary(). En esta parte se dividió por casos dado a que nuestros datos variaban segun el tipo de batería que se usaba en el Marcapasos, entonces decidimos hacer un analisis generalizado de los datos y después un análisis por cada tipo de bateria para ver el desempeño de la misma.
Tenemos que el el Análisis General, sin hacer distinción por tipo
general_bateria <-tibble(
Analisis_Estadistico = summary(bateria_m)%>%
rbind(str_c("Var. : ", var(bateria_m))))
Para los tipos especificos de bateria tenemos los siguientes. (Solo tomamos primer resumen estadistico perteneciente a Time.)
AE <- function(x){
u <- tibble(
Analisis_Estadistico = bateria_m%>%
filter(Type == x)%>%
summary(bateria_m$Time)%>%
rbind(str_c("Var. : ", var(bateria_m))))
}
AE_type1 <- AE(1)
AE_type2 <- AE(2)
AE_type3 <- AE(3)
AE_type4 <- AE(4)
Para tipo de batería 1
print(AE(1))
## # A tibble: 7 x 1
## Analisis_Estadistico[," ~ [," Type"] [," Status"]
## <chr> <chr> <chr>
## 1 "Min. : 0.000785 " "Min. :1 " "Min. :0.0000 "
## 2 "1st Qu.: 0.368013 " "1st Qu.:1 " "1st Qu.:0.0000 "
## 3 "Median : 0.900925 " "Median :1 " "Median :0.0000 "
## 4 "Mean : 1.629373 " "Mean :1 " "Mean :0.3956 "
## 5 "3rd Qu.: 2.053781 " "3rd Qu.:1 " "3rd Qu.:1.0000 "
## 6 "Max. :22.979628 " "Max. :1 " "Max. :1.0000 "
## 7 "Var. : 5.09176679943146" "Var. : -0.007005608456~ "Var. : 0.009520174148~
Para tipo de batería 2
print(AE(2))
## # A tibble: 7 x 1
## Analisis_Estadistico[," ~ [," Type"] [," Status"]
## <chr> <chr> <chr>
## 1 "Min. : 0.000198 " "Min. :2 " "Min. :0.000 "
## 2 "1st Qu.: 0.411811 " "1st Qu.:2 " "1st Qu.:0.000 "
## 3 "Median : 0.966165 " "Median :2 " "Median :1.000 "
## 4 "Mean : 1.709458 " "Mean :2 " "Mean :0.514 "
## 5 "3rd Qu.: 2.090692 " "3rd Qu.:2 " "3rd Qu.:1.000 "
## 6 "Max. :27.777011 " "Max. :2 " "Max. :1.000 "
## 7 "Var. : 5.09176679943146" "Var. : -0.007005608456~ "Var. : 0.009520174148~
Para tipo de batería 3
print(AE(3))
## # A tibble: 7 x 1
## Analisis_Estadistico[," ~ [," Type"] [," Status"]
## <chr> <chr> <chr>
## 1 "Min. : 0.001242 " "Min. :3 " "Min. :0.000 "
## 2 "1st Qu.: 0.369726 " "1st Qu.:3 " "1st Qu.:0.000 "
## 3 "Median : 0.942934 " "Median :3 " "Median :0.000 "
## 4 "Mean : 1.652499 " "Mean :3 " "Mean :0.284 "
## 5 "3rd Qu.: 2.109255 " "3rd Qu.:3 " "3rd Qu.:1.000 "
## 6 "Max. :26.481227 " "Max. :3 " "Max. :1.000 "
## 7 "Var. : 5.09176679943146" "Var. : -0.007005608456~ "Var. : 0.009520174148~
Para tipo de batería 4
print(AE(4))
## # A tibble: 7 x 1
## Analisis_Estadistico[," ~ [," Type"] [," Status"]
## <chr> <chr> <chr>
## 1 "Min. : 0.00079 " "Min. :4 " "Min. :0.0000 "
## 2 "1st Qu.: 0.36148 " "1st Qu.:4 " "1st Qu.:0.0000 "
## 3 "Median : 0.91372 " "Median :4 " "Median :1.0000 "
## 4 "Mean : 1.62968 " "Mean :4 " "Mean :0.7028 "
## 5 "3rd Qu.: 2.00216 " "3rd Qu.:4 " "3rd Qu.:1.0000 "
## 6 "Max. :36.66516 " "Max. :4 " "Max. :1.0000 "
## 7 "Var. : 5.09176679943146" "Var. : -0.007005608456~ "Var. : 0.009520174148~
Ahora, para poder ver la diferencia de una más clara podemos comparar las funciones de supervivencia de cada bateria, para eso tenemos que hacer tablas por separado para cada tipo de bateria.
bateria_1 = bateria_m[bateria_m$Type==1,]
bateria_2 = bateria_m[bateria_m$Type==2,]
bateria_3 = bateria_m[bateria_m$Type==3,]
bateria_4 = bateria_m[bateria_m$Type==4,]
objeto <- Surv(bateria_1$Time,bateria_1$Status)
fit_1 <- survfit(objeto~ 1,data=bateria_1)
objeto <- Surv(bateria_2$Time,bateria_2$Status)
fit_2 <- survfit(objeto~ 1,data=bateria_2)
objeto <- Surv(bateria_3$Time,bateria_3$Status)
fit_3 <- survfit(objeto~ 1,data=bateria_3)
objeto <- Surv(bateria_4$Time,bateria_4$Status)
fit_4 <- survfit(objeto~ 1,data=bateria_4)
Ahora graficando las funciones de supervivencia con K-M tenemos la siguiente gráfica
ggsurvplot(fit_1,conf.int = TRUE)
ggsurvplot(fit_2,conf.int = TRUE)
ggsurvplot(fit_3,conf.int = TRUE)
ggsurvplot(fit_4,conf.int = TRUE)
bateria_plot_comb <- rbind((cbind(bateria_1,type='Bateria 1')),
(cbind(bateria_2,type='Bateria 2')),
(cbind(bateria_3,type='Bateria 3')),
(cbind(bateria_4,type='Bateria 4')))
sf.bateria_plot_comb <- survfit(Surv(bateria_m$Time,bateria_m$Status)~ type,data=bateria_plot_comb)
ggsurvplot(sf.bateria_plot_comb,ggtheme=theme_economist(),palette="lancet")
Podemos ver de la siguiente forma que la distancia máxima es:
tabla_max_1_2 <- data.frame(max(abs(bateria_1$Time-bateria_2$Time)))
tabla_max_1_3 <- data.frame(max(abs(bateria_1$Time-bateria_3$Time)))
tabla_max_1_4 <- data.frame(max(abs(bateria_1$Time-bateria_4$Time)))
tabla_max_2_3 <- data.frame(max(abs(bateria_1$Time-bateria_2$Time)))
tabla_max_2_4 <- data.frame(max(abs(bateria_1$Time-bateria_2$Time)))
tabla_max_3_4 <- data.frame(max(abs(bateria_1$Time-bateria_2$Time)))
max(tabla_max_1_2,tabla_max_1_3,tabla_max_1_4,tabla_max_2_3,tabla_max_2_4,tabla_max_3_4)
## [1] 36.50973