El presente informe expone el análisis estadístico realizado sobre el conjunto de datos de donantes del Banco de Sangre del Hospital General de Medellín, correspondiente al periodo comprendido entre los años 2020 y 2023.
Este estudio forma parte de la asignatura de Probabilidad y Estadística, y su propósito principal es:
#Metodología Aplicada
1. Obtención de Datos
2. Proceso de Limpieza
3. Análisis Implementado
Nota: Los resultados obtenidos permiten una visión integral sobre la dinámica de la donación de sangre en este hospital durante el periodo 2020-2023, contribuyendo al entendimiento de patrones de donación y características de los donantes.
Este trabajo representa una oportunidad valiosa de aplicar conocimientos estadísticos dentro de un contexto real, como estudiante de Tecnología en Electrónica Industrial.
Competencias Desarrolladas:
# A tibble: 6 × 8
ANIO RH CIUDAD EDAD ESTATURA PESO SEXO MES
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr> <chr>
1 2020 0+ MEDELLIN 43 1.74 80 M ENERO
2 2020 0+ MEDELLIN 43 1.74 80 M ENERO
3 2020 0+ MEDELLIN 44 1.6 86 F ENERO
4 2020 0+ MEDELLIN 44 1.6 86 F ENERO
5 2020 0+ MEDELLIN 61 1.63 63 F ENERO
6 2020 0+ MEDELLIN 32 1.69 69 M ENERO
ANIO RH CIUDAD EDAD
Min. :2020 Length:25481 Length:25481 Min. :18.00
1st Qu.:2020 Class :character Class :character 1st Qu.:27.00
Median :2021 Mode :character Mode :character Median :36.00
Mean :2021 Mean :37.71
3rd Qu.:2022 3rd Qu.:47.00
Max. :2023 Max. :68.00
ESTATURA PESO SEXO MES
Min. :1.45 Min. : 50.00 Length:25481 Length:25481
1st Qu.:1.60 1st Qu.: 63.00 Class :character Class :character
Median :1.65 Median : 70.00 Mode :character Mode :character
Mean :1.66 Mean : 71.81
3rd Qu.:1.72 3rd Qu.: 80.00
Max. :1.99 Max. :102.00
MES_ANIO MES_NUM ORDEN_TIEMPO
Length:25481 Min. : 1.000 Min. : 1.00
Class :character 1st Qu.: 3.000 1st Qu.:11.00
Mode :character Median : 6.000 Median :20.00
Mean : 5.994 Mean :20.42
3rd Qu.: 9.000 3rd Qu.:30.00
Max. :12.000 Max. :41.00
.
Variable Media Mediana
1 Edad 37.71 36.00
2 Estatura 1.66 1.65
3 Peso 71.81 70.00
Variable Desv_Estandar Varianza Coef_Variacion
1 Edad 12.49 155.98 33.12
2 Estatura 0.09 0.01 5.24
3 Peso 11.73 137.59 16.33
2020 2021 2022 2023
7276 8124 7735 2346
F M
14477 11004
ABRIL AGOSTO DICIEMBRE ENERO FEBRERO JULIO JUNIO
2382 2006 1555 2669 2831 1800 1849
MARZO MAYO NOVIEMBRE OCTUBRE SEPTIEMBRE
2567 1924 2039 1998 1861
AMAGA ANDES ARMENIA
13 31 33
BELLO CALDAS CISNEROS
1468 24 26
COPACABANA DON MATIAS ENVIGADO
178 48 763
ESTRELLA FREDONIA GIRARDOTA
16 27 14
ITAGUI LA ESTRELLA MARINILLA
290 80 95
MARSELLA MEDELLIN POBLADO
14 21772 14
RIONEGRO SABANETA SAN ANTONIO DE PEREIRA
74 72 28
SAN ANTONIO DE PRADO SAN CRISTOBAL SAN VICENTE DE FERRER
30 55 126
SANTA BARBARA YARUMAL
46 144
0+ A- A+ AB- AB+
14990 822 7139 63 428
B- B+ SIN INFORMACION
238 1800 1
.
.
-Se obseva en este gráfico presencia de datos atípicos.
.
ABRIL AGOSTO DICIEMBRE ENERO FEBRERO JULIO JUNIO MARZO MAYO NOVIEMBRE
2020 506 727 555 592 686 529 550 535 584 703
2021 563 595 550 809 841 675 730 640 672 822
2022 726 684 450 757 704 596 569 749 663 514
2023 587 0 0 511 600 0 0 643 5 0
OCTUBRE SEPTIEMBRE
2020 742 567
2021 521 706
2022 735 588
2023 0 0
0+ A- A+ AB- AB+ B- B+ SIN INFORMACION
F 8391 487 4177 41 245 133 1002 1
M 6599 335 2962 22 183 105 798 0
2020 2021 2022 2023
0+ 4287 4696 4609 1398
A- 288 249 224 61
A+ 2031 2329 2107 672
AB- 21 22 16 4
AB+ 123 132 143 30
B- 68 76 72 22
B+ 458 620 564 158
SIN INFORMACION 0 0 0 1
Luego del análisis estadístico de los datos del banco de sangre del Hospital General de Medellín entre los años 2020 y 2023, se concluye que la mayoría de los donantes pertenecen a la ciudad de Medellín, son de sexo femenino y tienen el tipo de sangre O+, siendo este el grupo RH más frecuente.
Las variables cuantitativas como edad, estatura y peso presentan distintos niveles de variabilidad, siendo la estatura la más homogénea. El análisis de correlación mostró que no existe una relación significativa entre edad, peso y estatura en el contexto de la donación, y los diagramas de caja permitieron evidenciar que, aunque hay algunas diferencias por sexo, RH o ciudad, en general las edades de los donantes son consistentes y no presentan diferencias extremas.
La tendencia temporal en la edad indica que en los últimos años se han sumado más adultos jóvenes al proceso de donación, y la suavización mensual de donaciones mostró estabilidad con algunas alzas en ciertos meses, lo cual podría relacionarse con campañas o eventos puntuales del hospital. Finalmente, aunque se realizó una limpieza rigurosa del conjunto de datos, se reconoce la posibilidad de que existan valores atípicos que no afectaron significativamente los resultados generales.
El uso del software R resultó ser una herramienta muy útil para el análisis y visualización de los datos del banco de sangre. Su capacidad para manejar grandes volúmenes de información, aplicar filtros personalizados y generar gráficos estadísticos como diagramas de caja, gráficos de dispersión, correlaciones y tendencias suavizadas permitió realizar un análisis más profundo y visualmente comprensible.
---
title: "P & E 2025"
author: "Alejandra Guzmán 2016453-2725"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: scroll
theme: bootstrap
source_code: embed
css: |
.chart-title {
font-size: 18px;
font-weight: bold;
}
.section.sidebar {
background-color: #f8f9fa;
}
body {
font-size: 14px;
}
---
```{r setup-intro, include=FALSE}
library(flexdashboard)
library(knitr)
library(DT)
library(ggplot2)
library(gridExtra)
library(dplyr)
load("/cloud/project/datos.RData")
```
# Introducción
## Column {data-width=600}
###
#### **Análisis Estadístico** {data-height=600}
El presente informe expone el análisis estadístico realizado sobre el conjunto de datos de donantes del **Banco de Sangre del Hospital General de Medellín**, correspondiente al periodo comprendido entre los años **2020** y **2023**.
Este estudio forma parte de la asignatura de **Probabilidad y Estadística**, y su propósito principal es:
- ✅ Analizar las variables contenidas en el conjunto de datos
- ✅ Identificar patrones significativos
- ✅ Explorar posibles relaciones entre variables
#**Metodología Aplicada**
**1. Obtención de Datos**
- Fuente: Portal oficial de **Datos Abiertos del gobierno**
- Muestra inicial: **27,988** registros
**2. Proceso de Limpieza**
- Criterios aplicados: edad, peso mínimo, estatura, completitud de información
- Registros válidos finales: **25,481**
- Porcentaje de datos válidos: **91.0%**
**3. Análisis Implementado**
- Incorporación de variable temporal (clasificación por mes)
- Construcción de tablas cruzadas
- Análisis temporal mediante suavización exponencial
- Estadística descriptiva y análisis de correlación
**Nota:** Los resultados obtenidos permiten una visión integral sobre la dinámica de la donación de sangre en este hospital durante el periodo 2020-2023, contribuyendo al entendimiento de patrones de donación y características de los donantes.
row
--------------------------------------------------------------------------------
### **Descripción de variables, escalas de medición y unidades de medición**
```{r tabla-resumen, echo=FALSE}
# Crear tabla resumen
variables <- data.frame(
Variable = c("ANO", "RH", "CIUDAD", "EDAD", "ESTATURA", "PESO", "MES", "SEXO"),
Descripción = c("Año de donación", "Factor RH", "Ciudad de donación", "Edad del donante",
"Estatura del donante", "Peso del donante", "Mes de donación", "Sexo del donante"),
Tipo = c("Cualitativa", "Cualitativa", "Cualitativa", "Cuantitativa",
"Cuantitativa", "Cuantitativa", "Cualitativa", "Cualitativa"),
Escala = c("Discreta", "Nominal", "Nominal", "Discreta",
"Continua", "Discreta", "Nominal", "Nominal"),
Unidades = c("Años", NA, NA, "Años", "metro (m)", "Kilogramos (kg)", "Meses", NA),
stringsAsFactors = FALSE
)
DT::datatable(variables,
options = list(dom = 't', pageLength = 8),
rownames = FALSE,
class = 'cell-border stripe') %>%
DT::formatStyle(columns = 1:5, fontSize = '14px')
```
row
----------------------------------------------------------------------------------
### **🎯 Variables de Análisis** {data-height=300}
- **Demográficas**: Edad, Sexo, Ciudad
- **Biométricas**: Estatura, Peso
- **Clínicas**: Tipo de Sangre
- **Temporales**: Año, Mes de Donación
### **📚 Contexto Académico** {data-height=30}
Este trabajo representa una oportunidad valiosa de aplicar conocimientos estadísticos dentro de un **contexto real**, como estudiante de **Tecnología en Electrónica Industrial**.
**Competencias Desarrolladas:**
- Gestión y análisis de datos
- Aplicación de herramientas estadísticas
- Interpretación de resultados
- Visualización de información en R
Estadísticas
================================================================================
Row
--------------------------------------------------------------------------------
###
```{r vista_general}
head(P4) ## Registro del conjunto de datos
summary(P5)
```
.
Row
--------------------------------------------------------------------------------
###
#### Medidas de Tendencia Central
```{r medidas_centrales}
# Crear tabla con medidas centrales
medidas <- data.frame(
Variable = c("Edad", "Estatura", "Peso"),
Media = round(c(mean(P5$EDAD), mean(P5$ESTATURA), mean(P5$PESO)), 2),
Mediana = round(c(median(P5$EDAD), median(P5$ESTATURA), median(P5$PESO)), 2)
)
print(medidas)
```
#### Medidas de Dispersión
```{r medidas_dispersion}
# Crear tabla con medidas de dispersión
dispersion <- data.frame(
Variable = c("Edad", "Estatura", "Peso"),
Desv_Estandar = round(c(sd(P5$EDAD), sd(P5$ESTATURA), sd(P5$PESO)), 2),
Varianza = round(c(var(P5$EDAD), var(P5$ESTATURA), var(P5$PESO)), 2),
Coef_Variacion = round(c(sd(P5$EDAD)*100/mean(P5$EDAD),
sd(P5$ESTATURA)*100/mean(P5$ESTATURA),
sd(P5$PESO)*100/mean(P5$PESO)), 2)
)
print(dispersion)
```
Tablas
================================================================================
Row
--------------------------------------------------------------------------------
###
#### Distribución por Año
```{r tabla_ano}
table(P5$ANIO)
```
#### Distribución por Sexo
```{r tabla_sexo}
table(P5$SEXO)
```
#### Distribución por Mes
```{r tabla_mes}
table(P5$MES)
```
Row
--------------------------------------------------------------------------------
###
#### Distribución por Ciudad
```{r tabla_ciudad}
table(P5$CIUDAD)
```
#### Distribución por Tipo de Sangre (RH)
```{r tabla_rh}
table(P5$RH)
```
.
Histogramas
================================================================================
Row
--------------------------------------------------------------------------------
```{r hist_edad}
hist(P5$EDAD, col = "skyblue",
main = "HISTOGRAMA DE EDAD DE LOS DONANTES",
xlab = "EDADES",
ylab = "Frecuencia")
```
Row
-------------------------------------------------------------------------------
```{r hist_estatura}
hist(P5$ESTATURA, col = "violet",
main = "HISTOGRAMA DE ESTATURA DE LOS DONANTES",
xlab = "ESTATURAS",
ylab = "Frecuencia")
```
Row
-------------------------------------------------------------------------------
```{r hist_peso}
hist(P5$PESO, col = "orange",
main = "HISTOGRAMA DE PESO DE LOS DONANTES",
xlab = "PESO",
ylab = "Frecuencia")
```
Row
-------------------------------------------------------------------------------
```{r barras_ano}
barplot(table(P5$ANIO),
col="green",
main="DIAGRAMA DE BARRAS AÑO DE DONACIÓN",
ylab="Conteo",
xlab="FECHA")
```
Row
-------------------------------------------------------------------------------
```{r torta_sexo}
# Limpiar datos de sexo (remover NA)
sexo_limpio <- P5$SEXO[!is.na(P5$SEXO)]
pie(table(sexo_limpio),
col=c("pink","blue"),
main="SEXO DEL DONANTE DE SANGRE")
```
Row
-------------------------------------------------------------------------------
```{r barras_sangre}
# Limpiar datos de RH (remover NA)
rh_limpio <- P5$RH[!is.na(P5$RH)]
sangre <- table(rh_limpio)
names(sangre)[names(sangre) == "SIN INFORMACION"] <- "SIN INF."
barplot(sangre,
col="red",
main="DIAGRAMA DE BARRAS TIPO DE SANGRE",
ylab="Conteo",
xlab="TIPO DE SANGRE",
las = 2,
cex.axis = 0.8,
cex.names = 0.8)
```
Row
-------------------------------------------------------------------------------
```{r barras_ciudad}
# Limpiar datos de ciudad (remover NA)
ciudad_limpia <- P5$CIUDAD[!is.na(P5$CIUDAD)]
ciudades <- table(ciudad_limpia)
names(ciudades)[names(ciudades) == "SAN ANTONIO DE PEREIRA"] <- "S.A.DE PEREIRA"
names(ciudades)[names(ciudades) == "SAN ANTONIO DE PRADO"] <- "S.A.DE PRADO "
names(ciudades)[names(ciudades) == "SAN VICENTE DE FERRER"] <- "S.V.DE FERRER"
barplot(ciudades,
col = "yellow",
main = "DIAGRAMA DE BARRAS DONANTE POR CIUDAD",
ylab = "Conteo",
xlab = "",
las = 2,
cex.names = 0.5,
cex.main = 0.7,
cex.lab = 0.6,
cex.axis = 0.5)
```
.
Cajas
================================================================================
Row
-------------------------------------------------------------------------------
###
#### Caja 1 :EDAD
```{r 5}
ggplot(P5,aes(y=EDAD))+
geom_boxplot(fill="skyblue")
```
Row
--------------------------------------------------------------------------------
###
#### Caja 2 : ESTATURA
-Se obseva en este gráfico presencia de datos atípicos.
```{r 6}
ggplot(P5,aes(y=ESTATURA))+
geom_boxplot(fill="gold")
```
Row
--------------------------------------------------------------------------------
###
#### Caja 3: PESO
```{r 7}
ggplot(P5,aes(y=PESO))+
geom_boxplot(fill="violet")
```
.
Correlación
================================================================================
#### Correlación de Pearson
Row
-------------------------------------------------------------------------------
###
```{r 91}
ggplot(P5, aes(x = ESTATURA, y = PESO)) +
geom_jitter(color = "blue") +
geom_smooth(method = lm, color = "red") +
labs(title = "Estatura vs Peso")
```
Row
-------------------------------------------------------------------------------
###
```{r 92}
ggplot(P5, aes(x = EDAD, y = PESO)) +
geom_jitter(color = "purple") +
geom_smooth(method = lm, color = "red") +
labs(title = "Edad vs Peso")
```
Row
-------------------------------------------------------------------------------
###
```{r 93}
ggplot(P5, aes(x = EDAD, y = ESTATURA)) +
geom_jitter(color = "green") +
geom_smooth(method = lm, color = "red") +
labs(title = "Edad vs Estatura")
```
Row
-------------------------------------------------------------------------------
###
#### Matriz de correlación
```{r 8}
library(corrplot) ## graficos de correlacion
correlacion = cor(P5[, c("EDAD", "ESTATURA", "PESO")])
corrplot(correlacion, method = "number")
```
Grupos
================================================================================
row
--------------------------------------------------------------------------------

```{r 811}
ggplot(P5, aes(x = SEXO, y = EDAD, fill = SEXO)) +
geom_boxplot() +
labs(title = "Distribución de edad según sexo del donante",
x = "Sexo",
y = "Edad")
```
row
--------------------------------------------------------------------------------
```{r 880}
ggplot(P5, aes(x = RH, y = EDAD, fill = RH)) +
geom_boxplot() +
labs(title = "Distribución de la edad según RH",
x = "RH",
y = "Edad")
```
```{r 890}
ggplot(P5, aes(x = factor(ANIO), y = EDAD, fill = factor(ANIO))) +
geom_boxplot() +
labs(title = "Distribución de la edad por año de donación",
x = "Año",
y = "Edad")
```
Tablas Cruzadas
================================================================================
Row
-------------------------------------------------------------------------------
###
```{r}
table(P5$ANIO, P5$MES)
```
###
```{r}
ggplot(P5, aes(x = as.factor(ANIO), fill = as.factor(ANIO))) +
geom_bar() +
facet_wrap(~ MES, ncol = 4) + # Crea un panel por cada mes
labs(title = "Donaciones por año dentro de cada mes",
x = "Año", y = "Cantidad de donaciones")
```
Row
-------------------------------------------------------------------------------
###
```{r}
table(P5$SEXO, P5$RH)
```
###
```{r}
ggplot(P5, aes(x = RH, fill = SEXO)) +
geom_bar(position = "dodge") +
labs(title = "Distribución del RH por sexo",
x = "RH", y = "Cantidad de donaciones")
```
Row
-------------------------------------------------------------------------------
###
```{r}
table(P5$RH, P5$ANIO)
```
###
```{r}
ggplot(P5, aes(x = as.factor(ANIO), fill = RH)) +
geom_bar() +
labs(title = "Distribución de RH por año",
x = "Año",
y = "Cantidad de donaciones",
fill = "RH") +
theme_minimal()
```
Suavización Exponencial
================================================================================
Row
-------------------------------------------------------------------------------
### {data-height=650}

Conclusiones
================================================================================
Row
-------------------------------------------------------------------------------
###
Luego del análisis estadístico de los datos del banco de sangre del Hospital General de Medellín entre los años 2020 y 2023, se concluye que la mayoría de los donantes pertenecen a la ciudad de Medellín, son de sexo femenino y tienen el tipo de sangre O+, siendo este el grupo RH más frecuente.
####
Las variables cuantitativas como edad, estatura y peso presentan distintos niveles de variabilidad, siendo la estatura la más homogénea. El análisis de correlación mostró que no existe una relación significativa entre edad, peso y estatura en el contexto de la donación, y los diagramas de caja permitieron evidenciar que, aunque hay algunas diferencias por sexo, RH o ciudad, en general las edades de los donantes son consistentes y no presentan diferencias extremas.
####
La tendencia temporal en la edad indica que en los últimos años se han sumado más adultos jóvenes al proceso de donación, y la suavización mensual de donaciones mostró estabilidad con algunas alzas en ciertos meses, lo cual podría relacionarse con campañas o eventos puntuales del hospital.
Finalmente, aunque se realizó una limpieza rigurosa del conjunto de datos, se reconoce la posibilidad de que existan valores atípicos que no afectaron significativamente los resultados generales.
####
El uso del software R resultó ser una herramienta muy útil para el análisis y visualización de los datos del banco de sangre. Su capacidad para manejar grandes volúmenes de información, aplicar filtros personalizados y generar gráficos estadísticos como diagramas de caja, gráficos de dispersión, correlaciones y tendencias suavizadas permitió realizar un análisis más profundo y visualmente comprensible.