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 = 2151 |
Dengue N = 2151 |
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")