Introduccion:

  • La talla al nacer es un indicador clave del estado de salud neonatal y puede estar influenciada por múltiples factores, incluidos los determinantes sociales. En este análisis, se explora la relación entre el régimen de seguridad social (contributivo, especial, de excepción, no asegurado y subsidiado) y la talla del recién nacido. El objetivo es identificar posibles diferencias que reflejen desigualdades socioeconómicas en los resultados del nacimiento, proporcionando así una aproximación preliminar a la forma en que las condiciones de acceso a servicios de salud podrían impactar el desarrollo prenatal.

Tabla Densidades, frecuencias absoluta y relativa por cada clase (intervalo) de la talla vs regimen de seguridad social

# Cargar las bibliotecas necesarias
library(ggplot2)
library(readr)
library(dplyr)
library(tidyr)
library(kableExtra)

# Leer el archivo de datos con separador de punto y coma
data1 <- read_delim("Nacimientos_Hospital_Medellin.csv", delim = ";", col_types = cols())

# Asegurarse de que la variable REGIMEN SEGURIDAD es un factor
data1$`REGIMEN SEGURIDAD` <- as.factor(data1$`REGIMEN SEGURIDAD`)

# Definir un vector de cortes (breaks) para la talla
breaks_seq <- seq(min(data1$`TALLA (CentImetros)`, na.rm = TRUE),
                  max(data1$`TALLA (CentImetros)`, na.rm = TRUE),
                  length.out = 31)

### GRÁFICOS CON GGPLOT2

## Gráfico de histogramas con frecuencia relativa
plot_histogramas <- ggplot(data1, aes(x = `TALLA (CentImetros)`, fill = `REGIMEN SEGURIDAD`)) +
  geom_histogram(aes(y = after_stat(count / sum(count))),
                 breaks = breaks_seq,
                 color = "white", alpha = 0.8) +
  facet_wrap(~ `REGIMEN SEGURIDAD`, ncol = 2) +
  scale_fill_manual(values = c("#440154FF", "#39568CFF", "#1F968BFF", "#73D055FF", "#FDE725FF")) +
  labs(x = "Talla al nacer (cm)",
       y = "Frecuencia relativa",
       fill = "Régimen Seguridad",
       title = "Distribución de la talla al nacer por régimen de seguridad social") +
  theme_minimal() +
  theme(legend.position = "top")

## Gráfico de histogramas con densidad
plot_hist_dens <- ggplot(data1, aes(x = `TALLA (CentImetros)`, fill = `REGIMEN SEGURIDAD`)) +
  geom_histogram(aes(y = after_stat(density)),
                 breaks = breaks_seq,
                 color = "white", alpha = 0.8) +
  facet_wrap(~ `REGIMEN SEGURIDAD`, ncol = 2) +
  scale_fill_manual(values = c("#440154FF", "#39568CFF", "#1F968BFF", "#73D055FF", "#FDE725FF")) +
  labs(x = "Talla al nacer (cm)",
       y = "Densidad",
       fill = "Régimen Seguridad",
       title = "Densidad de la talla al nacer por régimen de seguridad social") +
  theme_minimal() +
  theme(legend.position = "top")

# Para visualizar los gráficos, descomenta:
# print(plot_histogramas)
# print(plot_hist_dens)

### TABLAS CON BASE R

niveles <- levels(data1$`REGIMEN SEGURIDAD`)
tabla_list <- list()

for (nivel in niveles) {
  subset_data <- data1 %>% filter(`REGIMEN SEGURIDAD` == nivel)
  hist_nivel <- hist(subset_data$`TALLA (CentImetros)`, breaks = breaks_seq, plot = FALSE)
  
  tabla_nivel <- data.frame(
    Clase = paste(head(hist_nivel$breaks, -1), hist_nivel$breaks[-1], sep = " - "),
    Frecuencia_Absoluta = hist_nivel$counts,
    Frecuencia_Relativa = hist_nivel$counts / sum(hist_nivel$counts),
    Densidad = hist_nivel$density
  )
  
  tabla_list[[nivel]] <- tabla_nivel
}

for (nivel in niveles) {
  cat("Tabla para Régimen de Seguridad Social =", nivel, "\n")
  print(tabla_list[[nivel]])
  cat("\n")
}
## Tabla para Régimen de Seguridad Social = CONTRIBUTIVO 
##      Clase Frecuencia_Absoluta Frecuencia_Relativa    Densidad
## 1  27 - 28                   1         0.001066098 0.001066098
## 2  28 - 29                   0         0.000000000 0.000000000
## 3  29 - 30                   0         0.000000000 0.000000000
## 4  30 - 31                   1         0.001066098 0.001066098
## 5  31 - 32                   2         0.002132196 0.002132196
## 6  32 - 33                   3         0.003198294 0.003198294
## 7  33 - 34                   2         0.002132196 0.002132196
## 8  34 - 35                   0         0.000000000 0.000000000
## 9  35 - 36                   1         0.001066098 0.001066098
## 10 36 - 37                   4         0.004264392 0.004264392
## 11 37 - 38                   1         0.001066098 0.001066098
## 12 38 - 39                   5         0.005330490 0.005330490
## 13 39 - 40                   5         0.005330490 0.005330490
## 14 40 - 41                  10         0.010660981 0.010660981
## 15 41 - 42                  19         0.020255864 0.020255864
## 16 42 - 43                  23         0.024520256 0.024520256
## 17 43 - 44                  27         0.028784648 0.028784648
## 18 44 - 45                  59         0.062899787 0.062899787
## 19 45 - 46                 101         0.107675906 0.107675906
## 20 46 - 47                 121         0.128997868 0.128997868
## 21 47 - 48                 169         0.180170576 0.180170576
## 22 48 - 49                 152         0.162046908 0.162046908
## 23 49 - 50                 121         0.128997868 0.128997868
## 24 50 - 51                  72         0.076759062 0.076759062
## 25 51 - 52                  25         0.026652452 0.026652452
## 26 52 - 53                  10         0.010660981 0.010660981
## 27 53 - 54                   4         0.004264392 0.004264392
## 28 54 - 55                   0         0.000000000 0.000000000
## 29 55 - 56                   0         0.000000000 0.000000000
## 30 56 - 57                   0         0.000000000 0.000000000
## 
## Tabla para Régimen de Seguridad Social = ESPECIAL 
##      Clase Frecuencia_Absoluta Frecuencia_Relativa Densidad
## 1  27 - 28                   0                0.00     0.00
## 2  28 - 29                   0                0.00     0.00
## 3  29 - 30                   0                0.00     0.00
## 4  30 - 31                   0                0.00     0.00
## 5  31 - 32                   0                0.00     0.00
## 6  32 - 33                   0                0.00     0.00
## 7  33 - 34                   0                0.00     0.00
## 8  34 - 35                   0                0.00     0.00
## 9  35 - 36                   0                0.00     0.00
## 10 36 - 37                   0                0.00     0.00
## 11 37 - 38                   0                0.00     0.00
## 12 38 - 39                   0                0.00     0.00
## 13 39 - 40                   0                0.00     0.00
## 14 40 - 41                   0                0.00     0.00
## 15 41 - 42                   1                0.04     0.04
## 16 42 - 43                   1                0.04     0.04
## 17 43 - 44                   2                0.08     0.08
## 18 44 - 45                   2                0.08     0.08
## 19 45 - 46                   2                0.08     0.08
## 20 46 - 47                   3                0.12     0.12
## 21 47 - 48                   4                0.16     0.16
## 22 48 - 49                   5                0.20     0.20
## 23 49 - 50                   2                0.08     0.08
## 24 50 - 51                   3                0.12     0.12
## 25 51 - 52                   0                0.00     0.00
## 26 52 - 53                   0                0.00     0.00
## 27 53 - 54                   0                0.00     0.00
## 28 54 - 55                   0                0.00     0.00
## 29 55 - 56                   0                0.00     0.00
## 30 56 - 57                   0                0.00     0.00
## 
## Tabla para Régimen de Seguridad Social = EXCEPCION 
##      Clase Frecuencia_Absoluta Frecuencia_Relativa    Densidad
## 1  27 - 28                   0         0.000000000 0.000000000
## 2  28 - 29                   0         0.000000000 0.000000000
## 3  29 - 30                   0         0.000000000 0.000000000
## 4  30 - 31                   0         0.000000000 0.000000000
## 5  31 - 32                   0         0.000000000 0.000000000
## 6  32 - 33                   0         0.000000000 0.000000000
## 7  33 - 34                   0         0.000000000 0.000000000
## 8  34 - 35                   1         0.005813953 0.005813953
## 9  35 - 36                   0         0.000000000 0.000000000
## 10 36 - 37                   1         0.005813953 0.005813953
## 11 37 - 38                   2         0.011627907 0.011627907
## 12 38 - 39                   0         0.000000000 0.000000000
## 13 39 - 40                   0         0.000000000 0.000000000
## 14 40 - 41                   1         0.005813953 0.005813953
## 15 41 - 42                   1         0.005813953 0.005813953
## 16 42 - 43                   4         0.023255814 0.023255814
## 17 43 - 44                   6         0.034883721 0.034883721
## 18 44 - 45                  11         0.063953488 0.063953488
## 19 45 - 46                  16         0.093023256 0.093023256
## 20 46 - 47                  25         0.145348837 0.145348837
## 21 47 - 48                  31         0.180232558 0.180232558
## 22 48 - 49                  24         0.139534884 0.139534884
## 23 49 - 50                  28         0.162790698 0.162790698
## 24 50 - 51                  11         0.063953488 0.063953488
## 25 51 - 52                   8         0.046511628 0.046511628
## 26 52 - 53                   2         0.011627907 0.011627907
## 27 53 - 54                   0         0.000000000 0.000000000
## 28 54 - 55                   0         0.000000000 0.000000000
## 29 55 - 56                   0         0.000000000 0.000000000
## 30 56 - 57                   0         0.000000000 0.000000000
## 
## Tabla para Régimen de Seguridad Social = NO ASEGURADO 
##      Clase Frecuencia_Absoluta Frecuencia_Relativa    Densidad
## 1  27 - 28                   0         0.000000000 0.000000000
## 2  28 - 29                   0         0.000000000 0.000000000
## 3  29 - 30                   0         0.000000000 0.000000000
## 4  30 - 31                   1         0.000665336 0.000665336
## 5  31 - 32                   2         0.001330672 0.001330672
## 6  32 - 33                   3         0.001996008 0.001996008
## 7  33 - 34                   4         0.002661344 0.002661344
## 8  34 - 35                   2         0.001330672 0.001330672
## 9  35 - 36                   4         0.002661344 0.002661344
## 10 36 - 37                   3         0.001996008 0.001996008
## 11 37 - 38                   4         0.002661344 0.002661344
## 12 38 - 39                   5         0.003326680 0.003326680
## 13 39 - 40                  21         0.013972056 0.013972056
## 14 40 - 41                  17         0.011310712 0.011310712
## 15 41 - 42                  24         0.015968064 0.015968064
## 16 42 - 43                  42         0.027944112 0.027944112
## 17 43 - 44                  70         0.046573520 0.046573520
## 18 44 - 45                 116         0.077178975 0.077178975
## 19 45 - 46                 148         0.098469727 0.098469727
## 20 46 - 47                 230         0.153027279 0.153027279
## 21 47 - 48                 227         0.151031271 0.151031271
## 22 48 - 49                 233         0.155023287 0.155023287
## 23 49 - 50                 209         0.139055223 0.139055223
## 24 50 - 51                  92         0.061210912 0.061210912
## 25 51 - 52                  30         0.019960080 0.019960080
## 26 52 - 53                  11         0.007318696 0.007318696
## 27 53 - 54                   4         0.002661344 0.002661344
## 28 54 - 55                   0         0.000000000 0.000000000
## 29 55 - 56                   0         0.000000000 0.000000000
## 30 56 - 57                   1         0.000665336 0.000665336
## 
## Tabla para Régimen de Seguridad Social = SUBSIDIADO 
##      Clase Frecuencia_Absoluta Frecuencia_Relativa     Densidad
## 1  27 - 28                   4        0.0005406136 0.0005406136
## 2  28 - 29                   3        0.0004054602 0.0004054602
## 3  29 - 30                   5        0.0006757670 0.0006757670
## 4  30 - 31                   4        0.0005406136 0.0005406136
## 5  31 - 32                   6        0.0008109204 0.0008109204
## 6  32 - 33                  12        0.0016218408 0.0016218408
## 7  33 - 34                  17        0.0022976078 0.0022976078
## 8  34 - 35                  18        0.0024327612 0.0024327612
## 9  35 - 36                  22        0.0029733748 0.0029733748
## 10 36 - 37                  23        0.0031085282 0.0031085282
## 11 37 - 38                  18        0.0024327612 0.0024327612
## 12 38 - 39                  28        0.0037842952 0.0037842952
## 13 39 - 40                  42        0.0056764428 0.0056764428
## 14 40 - 41                  68        0.0091904311 0.0091904311
## 15 41 - 42                 110        0.0148668739 0.0148668739
## 16 42 - 43                 185        0.0250033788 0.0250033788
## 17 43 - 44                 285        0.0385187187 0.0385187187
## 18 44 - 45                 473        0.0639275578 0.0639275578
## 19 45 - 46                 748        0.1010947425 0.1010947425
## 20 46 - 47                1073        0.1450195972 0.1450195972
## 21 47 - 48                1291        0.1744830382 0.1744830382
## 22 48 - 49                1155        0.1561021760 0.1561021760
## 23 49 - 50                1050        0.1419110691 0.1419110691
## 24 50 - 51                 476        0.0643330180 0.0643330180
## 25 51 - 52                 197        0.0266252196 0.0266252196
## 26 52 - 53                  69        0.0093255845 0.0093255845
## 27 53 - 54                  11        0.0014866874 0.0014866874
## 28 54 - 55                   5        0.0006757670 0.0006757670
## 29 55 - 56                   1        0.0001351534 0.0001351534
## 30 56 - 57                   0        0.0000000000 0.0000000000

Analisis Tabla

  • Pico de frecuencia: La mayor concentración de recién nacidos se encuentra en los intervalos 46-47 cm (1,073 casos, 14.5% frecuencia relativa) y 47-48 cm (1,291 casos, 17.4%). Esto sugiere que la talla modal se ubica en este rango.
  • Tallas bajas (< 37 cm): Muy raras (ej. 27-28 cm: solo 4 casos).
  • Tallas altas (> 52 cm): Pocos casos (ej. 55-56 cm: solo 1 caso).

Grafico Densidad y Distribucion

# Cargar las librerías necesarias
library(ggplot2)
library(dplyr)
library(readr)
library(plotly)  # Para gráficos interactivos

# Leer el archivo de datos
data1 <- read_csv2("Nacimientos_Hospital_Medellin.csv", col_names = TRUE, locale = locale(encoding = "UTF-8"))

# Limpiar nombres
colnames(data1) <- trimws(colnames(data1)) 

# Factor de régimen
regimen_column_name <- grep("REGIMEN.*SEGURIDAD", colnames(data1), value = TRUE, ignore.case = TRUE)
if (length(regimen_column_name) == 0) stop("No se encontró la columna 'REGIMEN SEGURIDAD SOCIAL' en los datos")
data1[[regimen_column_name]] <- as.factor(data1[[regimen_column_name]])

# Talla
talla_column_name <- grep("TALLA.*CENT", colnames(data1), value = TRUE, ignore.case = TRUE)
if (length(talla_column_name) == 0) stop("No se encontró la columna 'TALLA (Centímetros)' en los datos")

talla_min <- min(data1[[talla_column_name]], na.rm = TRUE)
talla_max <- max(data1[[talla_column_name]], na.rm = TRUE)

delta <- 1
breaks_seq <- seq(floor(talla_min / delta) * delta, ceiling(talla_max / delta) * delta, by = delta)
bin_width <- diff(breaks_seq)[1]  

# Densidades por régimen
density_data <- lapply(levels(data1[[regimen_column_name]]), function(lvl) {
  subset_data <- data1 %>% filter(.data[[regimen_column_name]] == lvl & !is.na(.data[[talla_column_name]]))
  hist_obj <- hist(subset_data[[talla_column_name]], breaks = breaks_seq, plot = FALSE)
  midpoints <- hist_obj$mids
  dens_vals <- (hist_obj$counts / sum(hist_obj$counts)) / bin_width
  data.frame(REGIMEN = lvl, x = midpoints, density = dens_vals)
})
density_data <- do.call(rbind, density_data)

density_data <- density_data %>%
  group_by(REGIMEN) %>%
  arrange(x) %>%
  summarise(
    x = c(min(breaks_seq), x, max(breaks_seq)),
    density = c(0, density, 0),
    .groups = "drop"
  )

# Paleta de colores automática para todos los niveles
niveles_regimen <- levels(data1[[regimen_column_name]])
color_palette <- scales::hue_pal()(length(niveles_regimen))
names(color_palette) <- niveles_regimen

# Gráfico con polígonos superpuestos interactivo
plot_overlay <- ggplot(density_data, aes(x = x, y = density, fill = REGIMEN, group = REGIMEN)) +
  geom_polygon(color = "black", alpha = 0.6) +
  scale_fill_manual(values = color_palette) +
  labs(
    x = "Talla del recién nacido (centímetros)",
    y = "Densidad",
    title = "Distribución de la talla al nacer por régimen de seguridad social",
    fill = "Régimen"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

plotly_overlay <- ggplotly(plot_overlay, tooltip = c("x", "y", "fill"))

# Gráfico de densidad con líneas suaves interactivo
plot_densidades <- ggplot(data1, aes(x = .data[[talla_column_name]], fill = .data[[regimen_column_name]])) +
  geom_density(alpha = 0.6) +
  scale_fill_manual(values = color_palette) +
  labs(
    x = "Talla del recién nacido (centímetros)",
    y = "Densidad",
    fill = "Régimen",
    title = "Densidad de la talla al nacer según régimen de seguridad social"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

plotly_densidades <- ggplotly(plot_densidades, tooltip = c("x", "y", "fill"))

# Mostrar los gráficos interactivos
plotly_overlay
plotly_densidades

Analisis grafico de distribucion y densidad:

  • Contributivo y Subsidiado muestran las distribuciones más altas (mayor frecuencia de recién nacidos en tallas normales, alrededor de 45-50 cm). No Asegurado tiene la distribución más baja, lo que sugiere peores resultados en talla al nacer.

  • Todos los regímenes alcanzan su máxima frecuencia entre 40-50 cm, pero con diferencias en altura: Contributivo tiene el pico más alto (mejores condiciones), no Asegurado tiene el pico más bajo (posibles carencias en acceso a salud o nutrición).

  • Regímenes Especial y Excepción, se ubican en un punto intermedio, pero con densidad menor que el Contributivo/Subsidiado, sugiriendo coberturas desiguales.

Histograma

# Gráfico de histograma separado por régimen de seguridad social
library(ggplot2)
library(dplyr)     # También es bueno tener dplyr por si haces filtros
library(scales)    # Para la función hue_pal()

plot_hist_dens <- ggplot(data1, aes(x = .data[[talla_column_name]], fill = factor(.data[[regimen_column_name]]))) +
  geom_histogram(aes(y = ..density..), bins = 30, alpha = 0.8, color = "black") +
  scale_fill_manual(values = color_palette) +
  labs(
    x = "Talla del recién nacido (centímetros)",
    y = "Densidad",
    fill = "Régimen",
    title = "Histograma de la talla al nacer por régimen de seguridad social"
  ) +
  theme_minimal() +
  theme(legend.position = "top") +
  facet_wrap(~ .data[[regimen_column_name]], scales = "free_y")  # Separa los gráficos por categoría

# Mostrar el gráfico
print(plot_hist_dens)

Analisis Histograma:

  • No Asegurado y Excepción tienen frecuencias relativamente altas aquí, lo que podría indicar: Carencia de control prenatal adecuado y factores de riesgo como desnutrición materna.

  • Todos los regímenes muestran su pico entre 45-50 cm, pero la altura del pico varía según la cobertura: A mejor régimen, más alto y estrecho el pico (mayor concentración en tallas óptimas).

Estadísticas para la talla agrupado por el regimen de seguridad social

# 📚 Cargar bibliotecas necesarias
library(ggplot2)
library(readr)
library(dplyr)
library(tidyr)
library(kableExtra)
library(e1071)
library(knitr)

# 📌 Cargar el dataset SIN col_types
ruta_archivo <- "Nacimientos_Hospital_Medellin.csv"

if (!file.exists(ruta_archivo)) {
  stop("❌ ERROR: No se encontró el archivo CSV en la ruta especificada.")
}

df <- read_delim(
  ruta_archivo, 
  delim = ";", 
  escape_double = FALSE, 
  trim_ws = TRUE
)

# 📌 Asegurar que las columnas estén en el formato correcto
df <- df %>%
  mutate(
    `TALLA (CentImetros)` = as.numeric(`TALLA (CentImetros)`),
    `REGIMEN SEGURIDAD` = as.factor(`REGIMEN SEGURIDAD`)
  )

# 📊 Calcular medidas estadísticas agrupadas por 'REGIMEN SEGURIDAD'
tabla_datosobj1 <- df %>%
  group_by(`REGIMEN SEGURIDAD`) %>%
  summarise(
    Mínimo = min(`TALLA (CentImetros)`, na.rm = TRUE),
    Máximo = max(`TALLA (CentImetros)`, na.rm = TRUE),
    Mediana = median(`TALLA (CentImetros)`, na.rm = TRUE),
    Media = round(mean(`TALLA (CentImetros)`, na.rm = TRUE), 2),
    `Primer Cuartil` = quantile(`TALLA (CentImetros)`, 0.25, na.rm = TRUE),
    `Tercer Cuartil` = quantile(`TALLA (CentImetros)`, 0.75, na.rm = TRUE),
    `Coef. de Variación` = round((sd(`TALLA (CentImetros)`, na.rm = TRUE) / mean(`TALLA (CentImetros)`, na.rm = TRUE)) * 100, 1),
    `Coef. de Asimetría` = round(skewness(`TALLA (CentImetros)`, na.rm = TRUE), 2),
    Curtosis = round(kurtosis(`TALLA (CentImetros)`, na.rm = TRUE), 2),
    `% de Atípicos` = {
      IQR_val <- `Tercer Cuartil` - `Primer Cuartil`
      LI <- `Primer Cuartil` - 1.5 * IQR_val
      LS <- `Tercer Cuartil` + 1.5 * IQR_val
      outliers <- sum(`TALLA (CentImetros)` < LI | `TALLA (CentImetros)` > LS, na.rm = TRUE)
      round(outliers / n() * 100, 1)
    },
    `Intervalo de Atípicos Menores` = {
      IQR_val <- `Tercer Cuartil` - `Primer Cuartil`
      LI <- `Primer Cuartil` - 1.5 * IQR_val
      menores <- `TALLA (CentImetros)`[`TALLA (CentImetros)` < LI]
      if (length(menores) == 0) "" else paste0("[", paste(range(menores, na.rm = TRUE), collapse = ", "), "]")
    },
    `Intervalo de Atípicos Mayores` = {
      IQR_val <- `Tercer Cuartil` - `Primer Cuartil`
      LS <- `Tercer Cuartil` + 1.5 * IQR_val
      mayores <- `TALLA (CentImetros)`[`TALLA (CentImetros)` > LS]
      if (length(mayores) == 0) "" else paste0("[", paste(range(mayores, na.rm = TRUE), collapse = ", "), "]")
    }
  )

# 📌 Generar tabla elegante
kable(tabla_datosobj1,
      col.names = c("Régimen de Seguridad Social", "Mínimo", "Máximo", "Mediana", "Media",
                    "Primer Cuartil", "Tercer Cuartil", "Coef. de Variación",
                    "Coef. de Asimetría", "Curtosis", "% de Atípicos",
                    "Intervalo de Atípicos Menores", "Intervalo de Atípicos Mayores")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
  add_header_above(c(" " = 1, "Talla al Nacer (Centímetros)" = 12))
Talla al Nacer (Centímetros)
Régimen de Seguridad Social Mínimo Máximo Mediana Media Primer Cuartil Tercer Cuartil Coef. de Variación Coef. de Asimetría Curtosis % de Atípicos Intervalo de Atípicos Menores Intervalo de Atípicos Mayores
CONTRIBUTIVO 28 54 48 47.56 46.00 49 6.5 -1.73 6.01 4.2 [28, 41] [54, 54]
ESPECIAL 42 51 48 47.44 46.00 49 5.3 -0.43 -0.85 0.0
EXCEPCION 35 53 48 47.79 46.75 50 5.9 -1.36 3.58 2.9 [35, 41]
NO ASEGURADO 31 57 48 47.33 46.00 49 6.4 -1.37 3.80 4.7 [31, 41] [54, 57]
SUBSIDIADO 27 56 48 47.51 46.00 49 6.3 -1.71 5.93 3.9 [27, 41] [54, 56]

Analisis Tabla:

  • Medidas Centrales (Mediana/Media): Todos los regímenes tienen mediana = 48 cm y medias cercanas (47.5 cm), lo que sugiere que, en general, la talla al nacer es similar en términos de tendencia central.

  • No Asegurado y Contributivo muestran la mayor variabilidad (Coef. Variación 6.5%), con rangos amplios (No Asegurado: 31-57 cm; Contributivo: 28-54 cm).

  • No Asegurado tiene el mayor % de atípicos (4.7%), con tallas mínimas preocupantes (31 cm).Contributivo y Subsidiado también presentan atípicos bajos (27-28 cm), pero en menor proporción.

  • Mayor presencia de tallas críticamente bajas (31 cm) y alta variabilidad, reflejando vulnerabilidad en acceso a salud prenatal.

Diagrama de caja

# Crear la paleta de colores ANTES del gráfico
num_niveles <- length(unique(df$`REGIMEN SEGURIDAD`))
colores <- scales::hue_pal()(num_niveles)  # Esto genera los colores automáticamente

# Crear el boxplot con etiquetas corregidas y texto rotado
boxplot_caso2 <- ggplot(df, aes(x = `REGIMEN SEGURIDAD`, y = `TALLA (CentImetros)`, fill = `REGIMEN SEGURIDAD`)) +
  geom_boxplot(outlier.shape = 16, outlier.size = 2, alpha = 0.7) +  
  scale_fill_manual(values = colores) +  
  labs(x = "Régimen de Seguridad Social", 
       y = "Talla al Nacer (centímetros)", 
       title = "Distribución de la Talla al Nacer por Régimen de Seguridad Social") +
  theme_minimal() +  
  theme(
    legend.position = "none",  
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.text = element_text(size = 12),
    axis.title = element_text(size = 13),
    axis.text.x = element_text(angle = 45, hjust = 1) # Rotar etiquetas
  )

# Mostrar el gráfico
print(boxplot_caso2)

Analisis Boxplot:

  • Tallas Bajas (<40 cm): Más frecuentes en No Asegurado y Excepción, lo que sugiere falta de control prenatal o condiciones socioeconómicas adversas.

  • Tallas Altas (>50 cm): Dominadas por Contributivo, posiblemente por mejor nutrición y seguimiento médico.

  • El gráfico confirma una relación directa entre nivel de cobertura y talla neonatal: Contributivo (mejor acceso) > Subsidiado > Excepción/Especial > No Asegurado (sin acceso).

Diagrama de ojivas

# Cargar las librerías necesarias
library(ggplot2)
library(dplyr)
library(readr)
library(plotly)  # Para interactividad

# Leer el archivo de datos
data1 <- read_delim("Nacimientos_Hospital_Medellin.csv", delim = ";", col_types = cols())

# Asegurarse de que la variable REGIMEN SEGURIDAD es un factor
data1$`REGIMEN SEGURIDAD` <- as.factor(data1$`REGIMEN SEGURIDAD`)

# Definir los breaks automáticos usando hist() sobre la Talla
breaks_auto <- hist(data1$`TALLA (CentImetros)`, plot = FALSE)$breaks

# Calcular las frecuencias acumuladas para cada nivel de REGIMEN SEGURIDAD
cumulative_data <- lapply(levels(data1$`REGIMEN SEGURIDAD`), function(lvl) {
  subset_data <- data1 %>% filter(`REGIMEN SEGURIDAD` == lvl)
  hist_obj <- hist(subset_data$`TALLA (CentImetros)`, breaks = breaks_auto, plot = FALSE)
  midpoints <- hist_obj$mids
  cum_vals <- cumsum(hist_obj$counts) / sum(hist_obj$counts)
  data.frame(
    REGIMEN_SEGURIDAD = lvl,
    x = midpoints,
    cumulative = cum_vals
  )
})
cumulative_data <- do.call(rbind, cumulative_data)

# Graficar las ojivas con ggplot y convertirlo a interactivo
plot_ojivas <- ggplot(cumulative_data, aes(x = x, y = cumulative, color = REGIMEN_SEGURIDAD, group = REGIMEN_SEGURIDAD,
                                           text = paste("Talla:", round(x,1),
                                                        "<br>Frecuencia acumulada:", scales::percent(cumulative, accuracy = 0.1),
                                                        "<br>Régimen:", REGIMEN_SEGURIDAD))) +
  geom_step(size = 1.2) +
  scale_color_brewer(palette = "Set3") +
  labs(
    x = "Talla al nacer (centímetros)",
    y = "Frecuencia acumulada",
    title = "Ojivas de Talla al Nacer según Régimen de Seguridad Social",
    color = "Régimen"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

# Convertir a gráfico interactivo con tooltip personalizado
plotly_ojivas <- ggplotly(plot_ojivas, tooltip = "text")

# Mostrar el gráfico interactivo
plotly_ojivas

Analisis Ojivas:

  • El régimen Subsidiado y Contributivo presentan una distribución muy parecida hasta el percentil 50% (mediana) Observando las pendientes de las ojivas, cerca del punto medio (aprox. 47-48 cm), los regímenes Subsidiado y Contributivo alcanzan el 50% de los nacimientos casi al mismo nivel de talla, lo que indica que la mediana de talla al nacer es similar entre ambos grupos.

  • Los regímenes Especial, Excepción y No Asegurado presentan una ligera tendencia a tener tallas ligeramente más bajas en los percentiles inferiores En los primeros tramos (percentil 25% o primer cuartil), las ojivas de estos regímenes empiezan a acumular casos desde tallas más bajas (alrededor de 38-40 cm), lo que sugiere que hay una proporción mayor de niños con tallas más pequeñas en estos regímenes comparados con Contributivo y Subsidiado.

  • En el percentil 75% (tercer cuartil), todas las ojivas tienden a converger A partir de los 49-50 cm (percentil 75%), todas las curvas tienden a acercarse, indicando que las diferencias entre regímenes desaparecen en los recién nacidos con tallas más altas. Esto sugiere que las diferencias se concentran en la parte baja de la distribución, mientras que en la parte superior, todas las poblaciones presentan tallas similares.

Conclusion:

  • El régimen de seguridad social determina de cierta manera la talla al nacer, los recién nacidos del régimen contributivo presentan las mejores tallas (distribución concentrada en 45-50 cm, menor frecuencia de tallas bajas y atípicos). Los no asegurados tienen los peores resultados: mayor proporción de tallas críticas (<40 cm), alta variabilidad y más valores atípicos.

  • Desigualdad sistémica en salud neonatal: Existe un gradiente claro: Contributivo > Subsidiado > Especial/Excepción > No Asegurado.La brecha no es solo en tallas promedio, sino en riesgo de extremos (ej. 25% de no asegurados con tallas <40 cm vs. <5% en contributivo).

  • La talla al nacer es un termómetro de inequidad: refleja directamente las condiciones de acceso a salud. Políticas que universalicen la cobertura prenatal podrían reducir estas brechas.