dfOrig= read_excel("Cuestionario_PostAcel_Covid19_PredimedPlus - Diseño Gold Standard Bout caminatas.xlsx",2)
dfLong0=dfOrig %>% select(-(2:23)) %>% pivot_longer(-paciente)
dfLong1=dfLong0 %>% separate(name, c("c1","c2","c3"), sep="_") %>% #%>% mutate(fecha=as.Date(fecha,format="%d%m%Y")) %>%
filter(value!=9) %>%
mutate(c1 = ifelse(str_detect(c1,"[0-9]{6,6}") , as.character(as.Date(c1,format="%d%m%Y")), c1)) %>% filter(complete.cases(.)) %>%
arrange(c2,c3)
dfLong1Cam=dfLong1 %>% filter(c1=="Cam") %>% select(-c3) %>% rename(Cam=value,Tramo=c2) %>% select(-c1) %>% arrange(paciente,Tramo)
dfLong1Fecha=dfLong1 %>% filter(c1!="Cam") %>% select(paciente,Fecha=c1,Tramo=c2,Campo=c3,value) %>% arrange(paciente,Fecha,Tramo,Campo)
dfWide1Fecha=dfLong1Fecha %>% pivot_wider(names_from = Campo, values_from = value) %>% arrange(paciente,Fecha,Tramo)
dfFinal=dfLong1Cam %>% inner_join(dfWide1Fecha,by = join_by(paciente, Tramo) ) %>%
select(paciente,Fecha,Tramo,everything()) %>% arrange(paciente,Fecha,Tramo)
#list(trans=dfLong1Cam,long=dfLong1Fecha,humano=dfFinal) %>% openxlsx::write.xlsx("conversion.xlsx")
curvaROC=function(dg,Var1,Var2){
dg=dg %>% filter(!!sym(Var1)<=1) %>% filter(complete.cases(.))
#formula <- as.formula(paste(Var1, "~", Var2, "+ (1|paciente)"))
#modelo=glmer(formula, data=dg, family=binomial)
formula <- as.formula(paste(Var1, "~", Var2))
modelo=glm(formula, data=dg, family=binomial)
dg$prediccion=predict(modelo, type="response")
roc_obj <- roc(dg[[Var1]], dg$prediccion)
# Crear un dataframe para el grĂ¡fico
roc_data <- data.frame(
FPR = 1 - roc_obj$specificities,
TPR = roc_obj$sensitivities
)
# Calcular el AUC
roc_auc <- auc(roc_obj)
# Graficar la curva ROC usando ggplot2
ggplot(roc_data, aes(x = FPR, y = TPR)) +
geom_line(color = "darkorange", linewidth = 1) +
geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "grey") +
labs(
title = "ROC:" %>% str_c(Var1 , " ~ ", Var2),
x = "False Positive Rate (1 - Specificity)",
y = "True Positive Rate (Sensitivity)",
caption = paste("AUC =", round(roc_auc, 2))
) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
plot.caption = element_text(size = 12, face = "italic")
)
}
#dfFinal %>% curvaROC("Vis","WB")
dg=dfFinal
barras<-function(dg,Var1,Var2,etiqueta=""){
dg=dg %>% filter(!!sym(Var1)<=1 & !!sym(Var2)<=1) %>% filter(complete.cases(.))
# Crear una tabla de contingencia
tabla <- table(dg[[Var1]], dg[[Var2]])
#print(tabla)
kappa_result <- cohen.kappa(tabla)
#print(kappa_result)
# GrĂ¡fico de barras apiladas
df_tabla <- as.data.frame(tabla) %>% mutate(acierto= (.[[1]]==.[[2]]))
colnames(df_tabla) <- c(Var1, Var2, "Frecuencia","acierto")
ggplot(df_tabla, aes(x = !!sym(Var1), y = Frecuencia, fill = acierto)) +
geom_bar(stat = "identity", position = "stack") +
labs(x = Var1, y = "Frecuencia", fill = str_c("Coincide ", Var2)) +
ggtitle(sprintf("kappa (%s, %s)=%1.3f",Var1,Var2,kappa_result$kappa)) +
theme_minimal()
}
Var1="Vis"
Var2="WB"
#barras(dfFinal,Var1,Var2)
listaGraficos=map(c("Rep","Vis","WB","WBb"), ~ curvaROC(dfFinal,"Cam",.x))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
listaGraficos= listaGraficos %>% append(map(c("Rep","Vis","WB","WBb"), ~ barras(dfFinal,"Cam",.x)))
gridExtra::grid.arrange(grobs=listaGraficos,ncol=4)

listaGraficos=map(c("Rep","WB","WBb"), ~ curvaROC(dfFinal,"Vis",.x))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
listaGraficos= listaGraficos %>% append(map(c("Rep","WB","WBb"), ~ barras(dfFinal,"Vis",.x)))
gridExtra::grid.arrange(grobs=listaGraficos,ncol=3)
