library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── 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(ggplot2)
library(readxl)
base_datos <- read_excel("E:/OneDrive - CINVESTAV/PROYECTO MDatos/TRABAJOS/DraIrisHernándezMDatos/BASE DE DATOS IRIS.xlsx")
# 1. Análisis Descriptivo
summary(base_datos)
## # FICHA NOMBRE DE PACIENTE
## Min. : 1.0 Length:386 Length:386
## 1st Qu.: 97.0 Class :character Class :character
## Median :194.0 Mode :character Mode :character
## Mean :193.6
## 3rd Qu.:290.0
## Max. :386.0
## NA's :1
## FECHA DE NACIMIENTO EDAD >30 SDG SI/NO
## Min. :1968-10-05 00:00:00.000 Min. :12.0 Length:386
## 1st Qu.:1984-01-24 06:00:00.000 1st Qu.:30.0 Class :character
## Median :1987-12-20 00:00:00.000 Median :34.0 Mode :character
## Mean :1988-02-17 02:32:57.202 Mean :33.5
## 3rd Qu.:1991-08-06 00:00:00.000 3rd Qu.:38.0
## Max. :2020-11-27 00:00:00.000 Max. :53.0
##
## TALLA PESO AL INICIO DEL EMBARAZO IMC PREVIO AL EMBARAZO
## Min. :1.490 Min. : 44.50 Min. :17.63
## 1st Qu.:1.560 1st Qu.: 60.38 1st Qu.:23.82
## Median :1.590 Median : 68.00 Median :26.81
## Mean :1.594 Mean : 68.53 Mean :26.94
## 3rd Qu.:1.623 3rd Qu.: 75.00 3rd Qu.:29.50
## Max. :1.760 Max. :125.00 Max. :47.05
## NA's :214 NA's :214 NA's :214
## PESO AL FINAL DEL EMBARAZO INCREMENTO PONDERAL DURANTE EMBARAZO
## Min. : 53.70 Min. :-4.700
## 1st Qu.: 70.35 1st Qu.: 6.000
## Median : 77.45 Median :10.000
## Mean : 77.72 Mean : 9.188
## 3rd Qu.: 84.50 3rd Qu.:13.000
## Max. :133.00 Max. :22.500
## NA's :214 NA's :214
## CONTROL PRENATAL INSTITUCIONAL DIABETES GESTACIONAL (SI/NO)
## Length:386 Length:386
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
## PREECLAMPSIA (SI/NO) RESOLUCION DE LA GESTACION (PARTO/CESAREA)
## Length:386 Length:386
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
## EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION PESO DEL RN (GR)
## Min. :29.20 Min. :1130
## 1st Qu.:37.50 1st Qu.:2780
## Median :38.40 Median :3080
## Mean :38.21 Mean :2986
## 3rd Qu.:39.30 3rd Qu.:3290
## Max. :41.10 Max. :4200
## NA's :215 NA's :215
## RECIEN NACIDO (VIVO/MUERTO) SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)
## Length:386 Length:386
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
glimpse(base_datos)
## Rows: 386
## Columns: 19
## $ `#` <dbl> 1, 2, 3, 4, 5, 6, 7, 8,…
## $ FICHA <chr> "001197-08-1", "004085-…
## $ `NOMBRE DE PACIENTE` <chr> "LIDIA ANAHI GARCIA GAR…
## $ `FECHA DE NACIMIENTO` <dttm> 1988-08-06, 1981-04-23…
## $ EDAD <dbl> 32, 39, 44, 26, 42, 40,…
## $ `>30 SDG SI/NO` <chr> "RESOLUCION EXTRAPEMEX"…
## $ TALLA <dbl> NA, 1.57, NA, NA, NA, 1…
## $ `PESO AL INICIO DEL EMBARAZO` <dbl> NA, 72, NA, NA, NA, 63,…
## $ `IMC PREVIO AL EMBARAZO` <dbl> NA, 29.21011, NA, NA, N…
## $ `PESO AL FINAL DEL EMBARAZO` <dbl> NA, 92.0, NA, NA, NA, 7…
## $ `INCREMENTO PONDERAL DURANTE EMBARAZO` <dbl> NA, 20.0, NA, NA, NA, 7…
## $ `CONTROL PRENATAL INSTITUCIONAL` <chr> NA, "SI", NA, NA, NA, "…
## $ `DIABETES GESTACIONAL (SI/NO)` <chr> NA, "NO", NA, NA, NA, "…
## $ `PREECLAMPSIA (SI/NO)` <chr> NA, "NO", NA, NA, NA, "…
## $ `RESOLUCION DE LA GESTACION (PARTO/CESAREA)` <chr> NA, "CESAREA", NA, NA, …
## $ `EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION` <dbl> NA, 37.4, NA, NA, NA, 3…
## $ `PESO DEL RN (GR)` <dbl> NA, 3420, NA, NA, NA, 3…
## $ `RECIEN NACIDO (VIVO/MUERTO)` <chr> NA, "VIVO", NA, NA, NA,…
## $ `SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)` <chr> NA, "FEMENINO", NA, NA,…
dbiris<-base_datos %>% drop_na()
#Elimine los datos que estaban en blanco se redujo a 171 la n
glimpse(dbiris)
## Rows: 171
## Columns: 19
## $ `#` <dbl> 2, 6, 7, 8, 10, 11, 12,…
## $ FICHA <chr> "004085-08-3", "361925-…
## $ `NOMBRE DE PACIENTE` <chr> "AZUCENA MORADO SOLIS",…
## $ `FECHA DE NACIMIENTO` <dttm> 1981-04-23, 1980-11-07…
## $ EDAD <dbl> 39, 40, 42, 28, 42, 39,…
## $ `>30 SDG SI/NO` <chr> "SI", "SI", "SI", "SI",…
## $ TALLA <dbl> 1.57, 1.49, 1.50, 1.67,…
## $ `PESO AL INICIO DEL EMBARAZO` <dbl> 72.0, 63.0, 78.0, 60.0,…
## $ `IMC PREVIO AL EMBARAZO` <dbl> 29.21011, 28.37710, 34.…
## $ `PESO AL FINAL DEL EMBARAZO` <dbl> 92.0, 70.2, 77.0, 79.5,…
## $ `INCREMENTO PONDERAL DURANTE EMBARAZO` <dbl> 20.0, 7.2, -1.0, 19.5, …
## $ `CONTROL PRENATAL INSTITUCIONAL` <chr> "SI", "SI", "SI", "SI",…
## $ `DIABETES GESTACIONAL (SI/NO)` <chr> "NO", "SI", "SI", "NO",…
## $ `PREECLAMPSIA (SI/NO)` <chr> "NO", "NO", "NO", "NO",…
## $ `RESOLUCION DE LA GESTACION (PARTO/CESAREA)` <chr> "CESAREA", "CESAREA", "…
## $ `EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION` <dbl> 37.4, 38.5, 37.6, 38.4,…
## $ `PESO DEL RN (GR)` <dbl> 3420, 3080, 3080, 3540,…
## $ `RECIEN NACIDO (VIVO/MUERTO)` <chr> "VIVO", "VIVO", "VIVO",…
## $ `SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)` <chr> "FEMENINO", "FEMENINO",…
colnames(dbiris)
## [1] "#"
## [2] "FICHA"
## [3] "NOMBRE DE PACIENTE"
## [4] "FECHA DE NACIMIENTO"
## [5] "EDAD"
## [6] ">30 SDG SI/NO"
## [7] "TALLA"
## [8] "PESO AL INICIO DEL EMBARAZO"
## [9] "IMC PREVIO AL EMBARAZO"
## [10] "PESO AL FINAL DEL EMBARAZO"
## [11] "INCREMENTO PONDERAL DURANTE EMBARAZO"
## [12] "CONTROL PRENATAL INSTITUCIONAL"
## [13] "DIABETES GESTACIONAL (SI/NO)"
## [14] "PREECLAMPSIA (SI/NO)"
## [15] "RESOLUCION DE LA GESTACION (PARTO/CESAREA)"
## [16] "EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION"
## [17] "PESO DEL RN (GR)"
## [18] "RECIEN NACIDO (VIVO/MUERTO)"
## [19] "SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)"
library(gtsummary)
dbiris <- subset(dbiris, `RECIEN NACIDO (VIVO/MUERTO)` %in% c("VIVO"))
dbiris %>% select(EDAD:`SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)`) %>% tbl_summary(by=`DIABETES GESTACIONAL (SI/NO)`,) %>% add_p() %>% modify_caption("**Diabetes Gestacional** (N = {N})") %>% modify_header(label = "**Variables**", p.value = "**valor p**")
## There was an error in 'add_p()/add_difference()' for variable '>30 SDG SI/NO', p-value omitted:
## Error in stats::chisq.test(x = c("SI", "SI", "SI", "SI", "SI", "SI", "SI", : 'x' and 'y' must have at least 2 levels
## There was an error in 'add_p()/add_difference()' for variable 'RECIEN NACIDO (VIVO/MUERTO)', p-value omitted:
## Error in stats::chisq.test(x = c("VIVO", "VIVO", "VIVO", "VIVO", "VIVO", : 'x' and 'y' must have at least 2 levels
| Variables | NO, N = 1281 | SI, N = 421 | valor p2 |
|---|---|---|---|
| EDAD | 31.0 (28.0, 36.0) | 34.0 (31.0, 37.0) | 0.008 |
| >30 SDG SI/NO | |||
| SI | 128 (100%) | 42 (100%) | |
| TALLA | 1.59 (1.56, 1.62) | 1.59 (1.56, 1.63) | 0.4 |
| PESO AL INICIO DEL EMBARAZO | 67 (59, 75) | 73 (64, 78) | 0.035 |
| IMC PREVIO AL EMBARAZO | 26.7 (23.6, 29.3) | 28.2 (25.5, 30.4) | 0.042 |
| PESO AL FINAL DEL EMBARAZO | 78 (69, 85) | 77 (73, 84) | 0.6 |
| INCREMENTO PONDERAL DURANTE EMBARAZO | 10.5 (6.5, 13.5) | 6.8 (3.6, 10.2) | <0.001 |
| CONTROL PRENATAL INSTITUCIONAL | >0.9 | ||
| NO | 1 (0.8%) | 0 (0%) | |
| SI | 127 (99%) | 42 (100%) | |
| PREECLAMPSIA (SI/NO) | 0.090 | ||
| NO | 121 (95%) | 36 (86%) | |
| SI | 7 (5.5%) | 6 (14%) | |
| RESOLUCION DE LA GESTACION (PARTO/CESAREA) | 0.4 | ||
| CESAREA | 60 (47%) | 23 (55%) | |
| PARTO | 68 (53%) | 19 (45%) | |
| EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION | 38.40 (37.50, 39.40) | 38.50 (37.50, 39.10) | 0.7 |
| PESO DEL RN (GR) | 3,030 (2,760, 3,265) | 3,160 (2,865, 3,401) | 0.057 |
| RECIEN NACIDO (VIVO/MUERTO) | |||
| VIVO | 128 (100%) | 42 (100%) | |
| SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO) | >0.9 | ||
| FEMENINO | 69 (54%) | 23 (55%) | |
| MASCULINO | 59 (46%) | 19 (45%) | |
| 1 Median (IQR); n (%) | |||
| 2 Wilcoxon rank sum test; Fisher’s exact test; Pearson’s Chi-squared test | |||
dbiris %>% select(EDAD:`SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO)`) %>% tbl_summary(by=`PREECLAMPSIA (SI/NO)`) %>% add_p() %>% modify_caption("**Preclapsia** (N = {N})") %>% modify_header(label = "**Variables**", p.value = "**valor p**")
## There was an error in 'add_p()/add_difference()' for variable '>30 SDG SI/NO', p-value omitted:
## Error in stats::chisq.test(x = c("SI", "SI", "SI", "SI", "SI", "SI", "SI", : 'x' and 'y' must have at least 2 levels
## There was an error in 'add_p()/add_difference()' for variable 'RECIEN NACIDO (VIVO/MUERTO)', p-value omitted:
## Error in stats::chisq.test(x = c("VIVO", "VIVO", "VIVO", "VIVO", "VIVO", : 'x' and 'y' must have at least 2 levels
| Variables | NO, N = 1571 | SI, N = 131 | valor p2 |
|---|---|---|---|
| EDAD | 32.0 (29.0, 36.0) | 34.0 (30.0, 37.0) | 0.5 |
| >30 SDG SI/NO | |||
| SI | 157 (100%) | 13 (100%) | |
| TALLA | 1.59 (1.56, 1.62) | 1.61 (1.60, 1.65) | 0.025 |
| PESO AL INICIO DEL EMBARAZO | 68 (60, 75) | 71 (68, 80) | 0.079 |
| IMC PREVIO AL EMBARAZO | 26.8 (23.8, 29.4) | 27.2 (25.0, 29.9) | 0.3 |
| PESO AL FINAL DEL EMBARAZO | 77 (70, 83) | 85 (82, 90) | 0.018 |
| INCREMENTO PONDERAL DURANTE EMBARAZO | 9.4 (6.0, 12.9) | 12.5 (4.5, 14.0) | 0.3 |
| CONTROL PRENATAL INSTITUCIONAL | >0.9 | ||
| NO | 1 (0.6%) | 0 (0%) | |
| SI | 156 (99%) | 13 (100%) | |
| DIABETES GESTACIONAL (SI/NO) | 0.090 | ||
| NO | 121 (77%) | 7 (54%) | |
| SI | 36 (23%) | 6 (46%) | |
| RESOLUCION DE LA GESTACION (PARTO/CESAREA) | 0.001 | ||
| CESAREA | 71 (45%) | 12 (92%) | |
| PARTO | 86 (55%) | 1 (7.7%) | |
| EDAD GESTACIONAL AL MOMENTO DE LA RESOLUCION | 38.50 (37.60, 39.40) | 36.40 (35.20, 38.30) | <0.001 |
| PESO DEL RN (GR) | 3,100 (2,840, 3,300) | 2,660 (1,780, 3,020) | 0.007 |
| RECIEN NACIDO (VIVO/MUERTO) | |||
| VIVO | 157 (100%) | 13 (100%) | |
| SEXO DE RECIEN NACIDO (FEMENINO/MASCULINO) | 0.5 | ||
| FEMENINO | 86 (55%) | 6 (46%) | |
| MASCULINO | 71 (45%) | 7 (54%) | |
| 1 Median (IQR); n (%) | |||
| 2 Wilcoxon rank sum test; Fisher’s exact test; Pearson’s Chi-squared test | |||
ggplot(dbiris, aes(x = `INCREMENTO PONDERAL DURANTE EMBARAZO`)) +
geom_histogram(fill= "skyblue", color = "black", binwidth = 1) +
labs(title = "Distribución del Incremento Ponderal del IMC durante el Embarazo") +
theme_minimal()
# Cargar las bibliotecas necesarias
library(ggplot2)
library(gt)
# Definir límites de ganancia de peso según IMC pregestacional
limites_ganancia <- data.frame(
IMC_categoria = c("Bajo peso", "Peso normal", "Sobrepeso", "Obesidad"),
min_ganancia = c(12.5, 11.5, 7, 5),
max_ganancia = c(18, 16, 11.5, 9)
)
# Categorizar IMC
dbiris$IMC_categoria <- cut(dbiris$`IMC PREVIO AL EMBARAZO`,
breaks = c(-Inf, 18.5, 24.9, 29.9, Inf),
labels = c("Bajo peso", "Peso normal", "Sobrepeso", "Obesidad"),
right = FALSE)
# Unir con limites_ganancia
dbiris <- merge(dbiris, limites_ganancia, by = "IMC_categoria", all.x = TRUE)
# Calcular pacientes con ganancia de peso excesiva
dbiris$ganancia_excesiva <- with(dbiris, `INCREMENTO PONDERAL DURANTE EMBARAZO` > max_ganancia)
# Tabla de prevalencia
tabla_prevalencia <- table(dbiris$ganancia_excesiva)
porcentaje_excesivo <- (tabla_prevalencia["TRUE"] / sum(tabla_prevalencia)) * 100
# Crear y dibujar la tabla
tabla_final <- data.frame(
`Ganancia de Peso` = c("Dentro de lo recomendado", "Excesiva"),
`Número de Pacientes` = c(tabla_prevalencia["FALSE"], tabla_prevalencia["TRUE"]),
`Porcentaje (%)` = c(100 - porcentaje_excesivo, porcentaje_excesivo)
)
tabla_final %>%
gt() %>%
tab_header(
title = "Tabla 2: Número y porcentaje de pacientes con ganancia de peso excesiva."
)
| Tabla 2: Número y porcentaje de pacientes con ganancia de peso excesiva. | ||
| Ganancia.de.Peso | Número.de.Pacientes | Porcentaje.... |
|---|---|---|
| Dentro de lo recomendado | 124 | 72.94118 |
| Excesiva | 46 | 27.05882 |
124 pacientes (o el 72.94%) tuvieron una ganancia de peso dentro de los límites recomendados.
46 pacientes (o el 27.06%) tuvieron una ganancia de peso excesiva, es decir, por encima de lo recomendado.
Puedes presentar estos resultados en una tabla:
Tabla 2: Número y porcentaje de pacientes con ganancia de peso excesiva.
| Ganancia de Peso | Número de Pacientes | Porcentaje (%) |
|---|---|---|
| Dentro de lo recomendado | 124 | 72.94 |
| Excesiva | 46 | 27.06 |
Con estos resultados, tienes una idea clara de la prevalencia de ganancia de peso excesiva en tu muestra. Ahora, puedes continuar con el análisis de la relación entre la ganancia de peso y las categorías de IMC pregestacional, y luego la relación entre la ganancia de peso, diabetes gestacional y preeclampsia.
Gráfica 2: Distribución de pacientes con y sin diabetes gestacional
dgbarplot<-ggplot(dbiris, aes(x = `DIABETES GESTACIONAL (SI/NO)`)) +
geom_bar(fill = "skyblue", color= "black") +
labs(title = "Distribución de Pacientes con y sin Diabetes Gestacional",x="Diabetes gestacional", y="conteo") +
theme_minimal()
dgbarplot
preebarplot<-ggplot(dbiris, aes(x = `PREECLAMPSIA (SI/NO)`)) +
geom_bar(fill = "salmon", color= "black") +
labs(title = "Distribución de Pacientes con y sin Preeclampsia", x="Preeclampsia", y="conteo") +
theme_minimal()
preebarplot
ggplot(dbiris, aes( x= `DIABETES GESTACIONAL (SI/NO)`, y =`INCREMENTO PONDERAL DURANTE EMBARAZO`)) +
geom_boxplot() +
labs(title = "Ganancia de Peso por Categorías de IMC Pregestacional") +
theme_minimal()
pC<-ggplot(dbiris, aes(x = `DIABETES GESTACIONAL (SI/NO)`, y = `INCREMENTO PONDERAL DURANTE EMBARAZO`)) +
geom_boxplot(fill = "skyblue") +
labs(title = "Ganancia de Peso en Pacientes con y sin Diabetes Gestacional",x="Diabetes Gestacional",y="Incremento preponderal durante el embarazo (Kg)") +
theme_minimal()
pd<-ggplot(dbiris, aes(x = `PREECLAMPSIA (SI/NO)`, y = `INCREMENTO PONDERAL DURANTE EMBARAZO`)) +
geom_boxplot(fill ="salmon") +
labs(title = "Ganancia de Peso en Pacientes con y sin Preeclampsia", x="Preeclampsia",y="Incremento preponderal durante el embarazo (Kg)") +
theme_minimal()
library(cowplot)
##
## Attaching package: 'cowplot'
## The following object is masked from 'package:lubridate':
##
## stamp
diabetesgest<-plot_grid(dgbarplot, pC, nrow = 2, ncol= 1, labels = c('A', 'B'), label_size = 12)
diabetesgest
preclampsia<-plot_grid(preebarplot, pd, nrow = 2, ncol= 1, labels = c('A', 'B'), label_size = 12)
preclampsia
#ggplot(base_datos, aes(x = RESOLUCION_DE_LA_GESTACION, y = INCREMENTO_PONDERAL_DURANTE_EMBARAZO)) +
# geom_boxplot(fill = "Accent") +
#labs(title = "Ganancia de Peso según el Tipo de Resolución de la Gestación") +
#theme_minimal()
#ggplot(base_datos, aes(x = INCREMENTO_PONDERAL_DURANTE_EMBARAZO, y = PESO_DEL_RN)) +
# geom_point(aes(color = SEXO_DE_RECIEN_NACIDO), palette = "Accent") +
#labs(title = "Relación entre Ganancia de Peso y Peso del Recién Nacido") +
#theme_minimal()