UNIVERSIDAD CENTRAL DEL ECUADOR

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

FECHA: 11/12/2025

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

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

# 3. Crear columnas separadas de 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 
Año<-df$Year
Año<-na.omit(df$Year)
# Tabla de Distribución de Frecuencias
TDF.Año<-table(Año)
# Elementos para la tabla de distribución de Frecuencia

Tabla_Año<-as.data.frame(TDF.Año) 

hi<-(Tabla_Año$Freq/sum(Tabla_Año$Freq))*100
ni<-Tabla_Año$Freq

Tabla_Año<-data.frame(Tabla_Año,hi)

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

Tabla_año_final<-data.frame(Tabla_Año$Año,
                            Tabla_Año$Freq,
                            Tabla_Año$hi,
                            Niasc,
                            round(Hiasc,2),
                            Nidsc,
                            round(Hidsc,2))

colnames(Tabla_año_final)<-c("Año","ni","hi (%)",
                             "Ni_asc","Hi_asc(%)",
                             "Ni_dsc","Hi_dsc(%)")

# Totales
Tabla_año_final$Año <- as.character(Tabla_año_final$Año)
totales <- c(Año="Total",ni= sum(ni),
             hi= sum(hi),
             Niasc="-",
             Nidsc="-",
             Hiasc= "-",
             Hidsc="-")

TDF_años_total<-rbind(Tabla_año_final,totales)
TDF_años_total
#Formato tabla
library(gt)

tabla_años_gt <- TDF_años_total %>% 
  gt() %>% 
  tab_header(
    title = md("*Tabla N°1*"),
    subtitle = md("**Tabla de distribución de los años 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"
  ) %>% 
  # poner en negrita la fila "Total"
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Año == "Total"
    )
  )

tabla_años_gt
Tabla N°1
Tabla de distribución de los años del estudio
Año ni hi (%) Ni_asc Hi_asc(%) Ni_dsc Hi_dsc(%)
2023 1116 37.2 1116 37.2 3000 100
2024 1497 49.9 2613 87.1 1884 62.8
2025 387 12.9 3000 100 387 12.9
Total 3000 100 - - - -
Autor: Grupo 3
# Gráfico de barras - Frecuencia absoluta por Año
barplot(ni,
        main = "Gráfica N°1: Distribución de la contaminación del suelo según el Año",
        xlab = "Año",
        ylab = "Cantidad de registros",
        col = "skyblue",
        ylim = c(0, max(ni)),
        names.arg = Tabla_Año$Año,
        las = 2,                    
        cex.names = 0.8)            

# Gráfico de barras - Porcentaje por Año
barplot(hi,
        main = "Gráfica N°2: Distribución porcentual de los años en los 
        que se realizó el estudio de contaminación del suelo",
        xlab = "Año",
        ylab = "%",
        col = "lightgreen",
        names.arg = Tabla_Año$Año,   # Años extraídos de tu tabla
        las = 2,
        cex.names = 0.8)

# Gráfico de barras - Frecuencia absoluta global por Año
barplot(ni,
        main = "Gráfica N°3: Distribución de la contaminación del suelo según el Año",
        xlab = "Año",
        ylab = "Cantidad de registros",
        col = "skyblue",
        ylim = c(0, 3000),          # Límite superior fijo como en tu ejemplo
        names.arg = Tabla_Año$Año,  # Años de tu tabla
        las = 2,
        cex.names = 0.8)

# Gráfico de barras - Porcentaje global por Año
barplot(hi,
        main = "Gráfica N°4: Distribución porcentual de los años en los 
        que se realizó el estudio de contaminación del suelo",
        xlab = "Año",
        ylab = "%",
        col = "lightgreen",
        ylim = c(0, 100),          
        names.arg = Tabla_Año$Año, 
        las = 2,
        cex.names = 0.8)

# DIAGRAMA DE CAJA Y BIGOTE - Años
boxplot(Año,
        horizontal = TRUE,
        col = "brown",
        main = "Gráfica N°5: Distribución de los Años del Estudio de 
        Contaminación del Suelo",
        xlab = "Año")

# Diagrama de Ojiva Ascendente y Descendente
x_pos <- 1:length(Tabla_Año$Año)

# Graficar puntos de Frecuencia Descendente acumuladas

plot(x_pos, Nidsc,
     main = "Gráfica N°6: Distribución Ascendentes 
     y Descendentes de los años del estudio de contaminación del suelo",
     xlab = "Años",
     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_Año$Año, 
     las = 1, 
     cex.axis = 0.9)

# Diagrama de Ojiva Ascendente y Descendente Porcentual

x_pos <- 1:length(Tabla_Año$hi)

# Graficar puntos de Frecuencia Descendente porcentual acumuladas


plot(x_pos, Hidsc,
     main = "Gráfica N°7: Distribución porcentual 
Ascendentes y Descendentes de los años que se llevó a cabo el 
estudio de contaminación del suelo",
     xlab = "Años",
     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_Año$Año,
     las = 1,
     cex.axis = 0.9)

# INDICADORES ESTADISTICOS

# Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(Año),0)
media
## [1] 2024
# Moda
max_frecuencia <- max(Tabla_Año$Freq)
moda <- Tabla_Año$Año[Tabla_Año$Freq == max_frecuencia]
moda
## [1] 2024
## Levels: 2023 2024 2025
# Mediana
mediana <- median(Año)
mediana
## [1] 2024
# INDICADORES DE DISPERSIÓN #

# Varianza
varianza <- var(Año)
varianza
## [1] 0.4420984
# Desviación Estándar
sd <- sd(Año)
sd
## [1] 0.6649048
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 0.03
# INDICADORES DE FORMA #

# Asimetría
library(e1071)
asimetria <- skewness(Año, type = 2)
asimetria
## [1] 0.3185022
# Curtosis
curtosis <- kurtosis(Año)
curtosis
## [1] -0.7905203
# TABLA RESUMEN FINAL
tabla_indicadores <- data.frame(
  "Variable" = c("Año"),
  "Rango" = c(paste0("[", min(Año), " ; ", max(Año), "]")),
  "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°2*"),
    subtitle = md("**Indicadores estadísticos de la variable Año**")
  ) %>% 
  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 == "Año"
    )
  )

tabla_indicadores_gt
Tabla N°2
Indicadores estadísticos de la variable Año
Variable Rango X Me Mo V Sd Cv As K Valores_Atipicos
Año [2023 ; 2025] 2024 2024 2024 0.44 1 0.03 0.32 -0.79 No hay presencia de valores atípicos
Autor: Grupo 3