UNIVERSIDAD CENTRAL DEL ECUADOR

PROYECTO:ESTUDIO ESTADÍSTICO DE LA CONTAMINACIÓN DEL SUELO Y SU IMPACTO EN LA SALUD

FECHA: 25/11/2025

# Extraemos los datos 
df <- read.csv("soil_pollution_diseases.csv", sep = ";", stringsAsFactors = FALSE)

# Convertir la columna a fecha (día/mes/año)
df$Date_Reported <- as.Date(df$Date_Reported, format = "%d/%m/%Y")

# Crear columnas Día, Mes y Año
df$Day   <- as.integer(format(df$Date_Reported, "%d"))
df$Month <- as.integer(format(df$Date_Reported, "%m"))
df$Year  <- as.integer(format(df$Date_Reported, "%Y"))




#Extraemos la variable Discreta
Mes <- df$Month
# TABLA DE DISTRIBUCIÓN DE FRECUENCIAS DE MESES
TDF.Mes <- table(Mes)
Tabla_Mes <- as.data.frame(TDF.Mes)

# Frecuencias relativas (porcentaje)
hi <- (Tabla_Mes$Freq / sum(Tabla_Mes$Freq)) * 100
ni <- Tabla_Mes$Freq

Tabla_Mes <- data.frame(Tabla_Mes, hi)

# Acumuladas
Niasc  <- cumsum(ni)
Hiasc  <- cumsum(hi)
Nidsc  <- rev(cumsum(rev(ni)))
Hidsc  <- rev(cumsum(rev(hi)))

Tabla_mes_final <- data.frame(
  Mes = Tabla_Mes$Mes,
  ni = Tabla_Mes$Freq,
  `hi (%)` = round(Tabla_Mes$hi, 2),
  Ni_asc = Niasc,
  `Hi_asc(%)` = round(Hiasc, 2),
  Ni_dsc = Nidsc,
  `Hi_dsc(%)` = round(Hidsc, 2)
)

# Totales
Tabla_mes_final$Mes <- as.character(Tabla_mes_final$Mes)

totales <- c(
  Mes = "Total",
  ni = sum(ni),
  `hi (%)` = 100,
  Ni_asc = "-",
  `Hi_asc(%)` = "-",
  Ni_dsc = "-",
  `Hi_dsc(%)` = "-"
)

TDF_meses_total <- rbind(Tabla_mes_final, totales)


# FORMATO gt


library(gt)

tabla_meses_gt <- TDF_meses_total %>% 
  gt() %>% 
  tab_header(
    title = md("*Tabla N° 3*"),
    subtitle = md("**Tabla de distribución de simples y acumuladas de los meses del estudio**")
  ) %>% 
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>% 
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  ) %>% 
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Mes == "Total"
    )
  )

tabla_meses_gt
Tabla N° 3
Tabla de distribución de simples y acumuladas de los meses del estudio
Mes ni hi.... Ni_asc Hi_asc... Ni_dsc Hi_dsc...
1 235 7.83 235 7.83 3000 100
2 240 8 475 15.83 2765 92.17
3 253 8.43 728 24.27 2525 84.17
4 268 8.93 996 33.2 2272 75.73
5 247 8.23 1243 41.43 2004 66.8
6 243 8.1 1486 49.53 1757 58.57
7 281 9.37 1767 58.9 1514 50.47
8 248 8.27 2015 67.17 1233 41.1
9 224 7.47 2239 74.63 985 32.83
10 242 8.07 2481 82.7 761 25.37
11 262 8.73 2743 91.43 519 17.3
12 257 8.57 3000 100 257 8.57
Total 3000 100 - - - -
Autor: Grupo 3
# GRÁFICAS


# Gráfica — Frecuencia absoluta por Mes
barplot(ni,
        main = "Gráfica N°8: Distribución de la contaminación 
        del suelo según el Mes",
        xlab = "Mes (01–12)",
        ylab = "Cantidad de registros",
        col = "skyblue",
        ylim = c(0, max(ni)),
        names.arg = Tabla_Mes$Mes,
        las = 2,
        cex.names = 0.8)

# Gráfica — Porcentaje por Mes
barplot(hi,
        main = "Gráfica N°9: Distribución porcentual de la contaminación 
        del suelo según el Mes",
        xlab = "Mes (01–12)",
        ylab = "%",
        col = "lightgreen",
        names.arg = Tabla_Mes$Mes,
        las = 2,
        cex.names = 0.8)

# Gráfica — Frecuencia absoluta global
barplot(ni,
        main = "Gráfica N°24: Distribución de la contaminación 
        del suelo según el Mes",
        xlab = "Mes (01–12)",
        ylab = "Cantidad de registros",
        col = "skyblue",
        ylim = c(0, 3000),
        names.arg = Tabla_Mes$Mes,
        las = 2,
        cex.names = 0.8)

# Gráfica— Porcentaje global por Mes
barplot(hi,
        main = "Gráfica N°10: DDistribución porcentual de la contaminación 
        del suelo según el Mes",
        xlab = "Mes (01–12)",
        ylab = "%",
        col = "lightgreen",
        ylim = c(0, 100),
        names.arg = Tabla_Mes$Mes,
        las = 2,
        cex.names = 0.8)

# Gráfica— Diagrama de caja y bigote
boxplot(Mes,
        horizontal = TRUE,
        col = "brown",
        main = "Gráfica N°11:Distribución de Meses del Estudio de 
        Contaminación del Suelo",
        xlab = "Mes del año")

# Diagrama de Ojiva Ascendente y Descendente

x_pos <- 1:length(Tabla_Mes$Mes)

# Graficar puntos de Frecuencia Descendente

plot(x_pos, Nidsc,
     main = "Gráfica N°12: Distribución ascendente y descendente 
     de los meses del estudio",
     xlab = "Mes",
     ylab = "Cantidad",
     col = "orange",
     type = "p",
     lwd = 3,
     xaxt = "n")

# Graficar puntos de Frecuencia Ascendente

lines(x_pos, Niasc,
      col = "green",
      type = "p",
      lwd = 3)

# Personalizar etiquetas del eje X
axis(side = 1,
     at = x_pos,
     labels = Tabla_Mes$Mes,
     las = 1,
     cex.axis = 0.9)

# Diagrama de Ojiva Ascendente y Descendente Porcentual

x_pos <- 1:length(Tabla_Mes$Mes)


# Graficar puntos de Frecuencia Descendente porcentual


plot(x_pos, Hidsc,
     main = "Gráfica N°13: Distribución porcentual ascendente y descendente 
     de los meses del estudio",
     xlab = "Mes",
     ylab = "%",
     col = "red",
     type = "p",
     lwd = 2,
     xaxt = "n")

# Graficar puntos de Frecuencia Ascendente porcentual

lines(x_pos, Hiasc,
      col = "blue",
      type = "p",
      lwd = 3)


# Personalizar etiquetas del eje X

axis(side = 1,
     at = x_pos,
     labels = Tabla_Mes$Mes,
     las = 1,
     cex.axis = 0.9)

# INDICADORES ESTADISTICOS

# Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(Mes),0)
media
## [1] 7
# Moda
max_frecuencia <- max(Tabla_Mes$Freq)
moda <- Tabla_Mes$Mes[Tabla_Mes$Freq == max_frecuencia]
moda
## [1] 7
## Levels: 1 2 3 4 5 6 7 8 9 10 11 12
# Mediana
mediana <- median(Mes)
mediana
## [1] 7
# INDICADORES DE DISPERSIÓN #

# Varianza
varianza <- var(Mes)
varianza
## [1] 11.81366
# Desviación Estándar
sd <- sd(Mes)
sd
## [1] 3.437101
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 49.1
# INDICADORES DE FORMA #

library(e1071)

# Asimetría
asimetria <- skewness(Mes, type = 2)
asimetria
## [1] 0.01030819
# Curtosis
curtosis <- kurtosis(Mes)
curtosis
## [1] -1.204518
# TABLA RESUMEN FINAL
tabla_indicadores <- data.frame(
  "Variable" = c("Mes"),
  "Rango" = c(paste0("[", min(Mes), " ; ", max(Mes), "]")),
  "X" = c(round(media,0)),
  "Me" = c(round(mediana,0)),
  "Mo" = c(paste(moda, collapse = ", ")),
  "V" = c(round(varianza,2)),
  "Sd" = c(round(sd,0)),
  "Cv" = c(cv),
  "As" = c(round(asimetria,2)),
  "K" = c(round(curtosis,2)),
  "Valores_Atipicos" = "No hay presencia de valores atípicos"
)

library(gt)

tabla_indicadores_gt <- tabla_indicadores %>% 
  gt() %>% 
  tab_header(
    title = md("*Tabla N°4*"),
    subtitle = md("**Indicadores estadísticos de la variable Mes**")
  ) %>% 
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>% 
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  ) %>% 
  # Negrita para el nombre de la variable
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Variable == "Mes"
    )
  )

tabla_indicadores_gt
Tabla N°4
Indicadores estadísticos de la variable Mes
Variable Rango X Me Mo V Sd Cv As K Valores_Atipicos
Mes [1 ; 12] 7 7 7 11.81 3 49.1 0.01 -1.2 No hay presencia de valores atípicos
Autor: Grupo 3