library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
library(dlookr)
## Registered S3 methods overwritten by 'dlookr':
##   method          from  
##   plot.transform  scales
##   print.transform scales
## 
## Adjuntando el paquete: 'dlookr'
## 
## The following object is masked from 'package:tidyr':
## 
##     extract
## 
## The following object is masked from 'package:base':
## 
##     transform
library(gtsummary)
library(dplyr)

#install.packages("pROC")
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Adjuntando el paquete: 'pROC'
## 
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
DB <- read_excel("C:/Users/frany/OneDrive/Documentos/MAESTRÍA/EPIDEMIOLOGÍA/Base de datos/DB.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...6`
## • `` -> `...15`
View(DB)
 head(DB)
## # A tibble: 6 × 20
##   SEXO   EDAD ...3  COVID_DX SEVERITY    ...6 PLAQUETAS LINFOCITOS NEUTROFILOS
##   <chr> <dbl> <chr>    <dbl> <chr>      <dbl>     <dbl>      <dbl>       <dbl>
## 1 F        29 FD           0 Non-severe     1        44       2.26        3.17
## 2 M        33 FD           0 Non-severe     1        80       0.83        2.08
## 3 F        46 FD           0 Non-severe     1       110       0.63        2.11
## 4 F        43 FD           0 Non-severe     1       205       1.33        7.6 
## 5 M        90 FD           0 Non-severe     1       229       1.04        3.97
## 6 F        24 FD           0 Non-severe     1       233       0.36        3.84
## # ℹ 11 more variables: NPLR <dbl>, NLR <dbl>, LPR <dbl>, NEUcutoff <chr>,
## #   PLTcutoff <chr>, ...15 <lgl>, NEU_NLR <dbl>, NEU_PLT_NLR <dbl>,
## #   NE_PLT <dbl>, PLT_NLR <dbl>, Dengue_DX <dbl>
datos <- DB

head(datos)
## # A tibble: 6 × 20
##   SEXO   EDAD ...3  COVID_DX SEVERITY    ...6 PLAQUETAS LINFOCITOS NEUTROFILOS
##   <chr> <dbl> <chr>    <dbl> <chr>      <dbl>     <dbl>      <dbl>       <dbl>
## 1 F        29 FD           0 Non-severe     1        44       2.26        3.17
## 2 M        33 FD           0 Non-severe     1        80       0.83        2.08
## 3 F        46 FD           0 Non-severe     1       110       0.63        2.11
## 4 F        43 FD           0 Non-severe     1       205       1.33        7.6 
## 5 M        90 FD           0 Non-severe     1       229       1.04        3.97
## 6 F        24 FD           0 Non-severe     1       233       0.36        3.84
## # ℹ 11 more variables: NPLR <dbl>, NLR <dbl>, LPR <dbl>, NEUcutoff <chr>,
## #   PLTcutoff <chr>, ...15 <lgl>, NEU_NLR <dbl>, NEU_PLT_NLR <dbl>,
## #   NE_PLT <dbl>, PLT_NLR <dbl>, Dengue_DX <dbl>
unique(datos$...3)
## [1] "FD"       "FHD"      "COVID-19"
datos <- datos %>% rename(diagnostico = ...3)

unique(datos$diagnostico)
## [1] "FD"       "FHD"      "COVID-19"
names(datos)
##  [1] "SEXO"        "EDAD"        "diagnostico" "COVID_DX"    "SEVERITY"   
##  [6] "...6"        "PLAQUETAS"   "LINFOCITOS"  "NEUTROFILOS" "NPLR"       
## [11] "NLR"         "LPR"         "NEUcutoff"   "PLTcutoff"   "...15"      
## [16] "NEU_NLR"     "NEU_PLT_NLR" "NE_PLT"      "PLT_NLR"     "Dengue_DX"
datos <- datos %>% 
  mutate(diagnostico = ifelse(diagnostico %in% c("FD", "FHD"), 
                              "Dengue", diagnostico))

unique(datos$diagnostico)
## [1] "Dengue"   "COVID-19"
names(datos)
##  [1] "SEXO"        "EDAD"        "diagnostico" "COVID_DX"    "SEVERITY"   
##  [6] "...6"        "PLAQUETAS"   "LINFOCITOS"  "NEUTROFILOS" "NPLR"       
## [11] "NLR"         "LPR"         "NEUcutoff"   "PLTcutoff"   "...15"      
## [16] "NEU_NLR"     "NEU_PLT_NLR" "NE_PLT"      "PLT_NLR"     "Dengue_DX"
datos %>% select(diagnostico, SEXO, EDAD, PLAQUETAS, LINFOCITOS, NEUTROFILOS, NPLR, NLR, LPR) %>% tbl_summary(by= diagnostico) %>% add_p()
Characteristic COVID-19
N = 215
1
Dengue
N = 215
1
p-value2
SEXO

<0.001
    F 85 (40%) 137 (64%)
    M 130 (60%) 78 (36%)
EDAD 57 (44, 67) 34 (25, 46) <0.001
PLAQUETAS 279 (205, 374) 110 (43, 170) <0.001
LINFOCITOS 0.90 (0.62, 1.27) 0.93 (0.59, 1.64) 0.3
NEUTROFILOS 9.4 (6.9, 13.0) 1.8 (1.1, 3.0) <0.001
    Unknown 0 3
NPLR 3.8 (2.1, 7.1) 2.1 (1.1, 4.7) <0.001
NLR 10 (6, 18) 2 (1, 4) <0.001
LPR 316 (201, 479) 126 (25, 208) <0.001
1 n (%); Median (Q1, Q3)
2 Pearson’s Chi-squared test; Wilcoxon rank sum test
datos_largos <- datos %>% 
  pivot_longer(cols = c(PLAQUETAS,LINFOCITOS, NEUTROFILOS, NPLR, NLR,LPR),
               names_to = "Variable",
               values_to = "Valor")

unique(datos_largos$Variable)
## [1] "PLAQUETAS"   "LINFOCITOS"  "NEUTROFILOS" "NPLR"        "NLR"        
## [6] "LPR"
datos_largos <- datos_largos %>% 
  mutate(Variable = factor(Variable, levels = c("PLAQUETAS", "LINFOCITOS", "NEUTROFILOS", "NPLR", "NLR", "LPR"))) 

  ggplot(datos_largos, aes(x = diagnostico, y = Valor, fill = diagnostico)) +
  geom_boxplot() + facet_wrap(~ Variable, scales = "free_y")
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

library(pROC)

datos <- datos %>% mutate (diagnostico_binario = ifelse(diagnostico == "COVID-19", 1,0))

unique(datos$diagnostico_binario)
## [1] 0 1
table(datos$diagnostico, datos$diagnostico_binario)
##           
##              0   1
##   COVID-19   0 215
##   Dengue   215   0

Plaquetas

curva_rocpla <- roc(datos$diagnostico_binario, datos$PLAQUETAS, plot = TRUE, main = "Curva ROC plaquetas", col = "red")
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases

area debajo de la curva

auc(curva_rocpla)
## Area under the curve: 0.9029
auc.pla <- auc(curva_rocpla)

Linfocitos

curva_roclin <- roc(datos$diagnostico_binario, datos$LINFOCITOS, plot = TRUE, main = "Curva ROC linfocitos", col="purple")
## Setting levels: control = 0, case = 1
## Setting direction: controls > cases

auc(curva_roclin)
## Area under the curve: 0.5296
auc.lin <- auc(curva_roclin)

Neutrófilos

curva_rocneu <- roc(datos$diagnostico_binario, datos$NEUTROFILOS, plot = TRUE, main = "Curva ROC neutrofilos", col="pink")
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases

auc(curva_rocneu)
## Area under the curve: 0.9642
auc.neu <- auc(curva_rocneu)

NPLR

curva_rocNPLR <- roc(datos$diagnostico_binario, datos$NPLR, plot = TRUE, main = "Curva ROC NPLR", col="blue")
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases

auc(curva_rocNPLR)
## Area under the curve: 0.6511
auc.NPLR <- auc(curva_rocNPLR)

LPR

curva_rocLPR <- roc(datos$diagnostico_binario, datos$LPR, plot = TRUE, main = "Curva ROC LPR", col="black")
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases

auc(curva_rocLPR)
## Area under the curve: 0.8216
auc.LPR <- auc(curva_rocLPR)

NLR

curva_rocNLR <- roc(datos$diagnostico_binario, datos$NLR, plot = TRUE, main = "Curva ROC NLR", col="gold")
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases

auc(curva_rocNLR)
## Area under the curve: 0.9108
auc.NLR <- auc(curva_rocNLR)
plot.roc(curva_rocpla, col = "red")
lines.roc(curva_roclin, col = "purple")
lines.roc(curva_rocneu, col = "pink")
lines.roc(curva_rocNPLR, col = "blue")
lines.roc(curva_rocLPR, col = "black")
lines.roc(curva_rocNLR, col = "gold")