UNIVERSIDAD CENTRAL DEL ECUADOR

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

FECHA: 19/11/2025

# =========================
# ESTADÍSTICA Descriptiva
# Fecha: 19/11/2025
# =========================

# -------------------------
# Cargar datos
# -------------------------

setwd("C:/Users/Alexander/Downloads")

datos <- read.csv("soil_pollution_diseases.csv",
                  sep = ",",
                  stringsAsFactors = FALSE)

# -------------------------
# Variable Cuantitativa Continua
# -------------------------

Precipitacion <- datos$Rainfall_mm

# Número de clases manual
k <- floor(1 + 3.3 * log10(length(Precipitacion)))
min_val <- min(Precipitacion)
max_val <- max(Precipitacion)
R <- max_val - min_val
A <- R / k

Li <- round(seq(from = min_val, to = max_val - A, by = A), 4)
Ls <- round(seq(from = min_val + A, to = max_val, by = A), 4)
MC <- round((Li + Ls) / 2, 2)

ni <- numeric(length(Li))
for (i in 1:length(Li)) {
  if (i < length(Li)) {
    ni[i] <- sum(Precipitacion >= Li[i] & Precipitacion < Ls[i])
  } else {
    ni[i] <- sum(Precipitacion >= Li[i] & Precipitacion <= max_val)
  }
}

hi <- round(ni / sum(ni) * 100, 2)
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hidsc <- round(rev(cumsum(rev(hi))), 2)

TDFPrecipitacion <- data.frame(Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc)

# Totales
TDFPrecipitacionCompleto <- rbind(
  TDFPrecipitacion,
  data.frame(Li = "Total", Ls = "-", MC = "-", ni = sum(ni), hi = 100,
             Niasc = "-", Nidsc = "-", Hiasc = "-", Hidsc = "-")
)

# Tabla GT
library(gt)
library(dplyr)

tabla_Precipitacion <- TDFPrecipitacionCompleto %>%
  gt() %>%
  fmt_number(
    columns = hi,
    decimals = 2
  ) %>%
  tab_header(
    title = md("*Tabla Nº5*"),
    subtitle = md("**Tabla de Precipitación (mm)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Li == "Total")
  )
# Mostrar tabla completa de Precipitación
tabla_Precipitacion
Tabla Nº5
Tabla de Precipitación (mm)
Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
0 33.3083 16.65 238 7.93 238 3000 7.93 99.99
33.3083 66.6167 49.96 251 8.37 489 2762 16.3 92.06
66.6167 99.925 83.27 256 8.53 745 2511 24.83 83.69
99.925 133.2333 116.58 250 8.33 995 2255 33.16 75.16
133.2333 166.5417 149.89 241 8.03 1236 2005 41.19 66.83
166.5417 199.85 183.2 268 8.93 1504 1764 50.12 58.8
199.85 233.1583 216.5 263 8.77 1767 1496 58.89 49.87
233.1583 266.4667 249.81 244 8.13 2011 1233 67.02 41.1
266.4667 299.775 283.12 239 7.97 2250 989 74.99 32.97
299.775 333.0833 316.43 238 7.93 2488 750 82.92 25
333.0833 366.3917 349.74 245 8.17 2733 512 91.09 17.07
366.3917 399.7 383.05 267 8.90 3000 267 99.99 8.9
Total - - 3000 100.00 - - - -
Autor: Grupo 3
# Histograma
histoP <- hist(
  Precipitacion,
  main = "Distribución de la Precipitación (mm)",
  xlab = "Precipitación (mm)",
  ylab = "Cantidad",
  col = "blue"
)

# Tabla simplificada basada en el histograma
LimInf <- histoP$breaks[1:(length(histoP$breaks)-1)]
LimSup <- histoP$breaks[2:length(histoP$breaks)]
Mc_hist <- histoP$mids
ni_hist <- histoP$counts
hi_hist <- round(ni_hist / sum(ni_hist) * 100, 2)
hi_hist[length(hi_hist)] <- hi_hist[length(hi_hist)] + (100 - sum(hi_hist))

Ni_asc <- cumsum(ni_hist)
Ni_dsc <- rev(cumsum(rev(ni_hist)))
Hi_asc <- round(cumsum(hi_hist), 2)
Hi_dsc <- round(rev(cumsum(rev(hi_hist))), 2)

TDFP <- data.frame(LimInf, LimSup, Mc = Mc_hist, ni = ni_hist,
                   hi = hi_hist, Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)

TDFPCompleto <- rbind(
  TDFP,
  data.frame(LimInf = "Total", LimSup = "-", Mc = "-", ni = sum(ni_hist),
             hi = 100, Ni_asc = "-", Ni_dsc = "-", Hi_asc = "-", Hi_dsc = "-")
)

tablaPre <- TDFPCompleto %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nº6*"),
    subtitle = md("**Tabla simplificada de Precipitación (mm)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = LimInf == "Total")
  )
# Mostrar tabla simplificada basada en el histograma
tablaPre
Tabla Nº6
Tabla simplificada de Precipitación (mm)
LimInf LimSup Mc ni hi Ni_asc Ni_dsc Hi_asc Hi_dsc
0 50 25 365 12.17 365 3000 12.17 100
50 100 75 382 12.73 747 2635 24.9 87.83
100 150 125 367 12.23 1114 2253 37.13 75.1
150 200 175 392 13.07 1506 1886 50.2 62.87
200 250 225 385 12.83 1891 1494 63.03 49.8
250 300 275 360 12.00 2251 1109 75.03 36.97
300 350 325 349 11.63 2600 749 86.66 24.97
350 400 375 400 13.34 3000 400 100 13.34
Total - - 3000 100.00 - - - -
Autor: Grupo 3
# Graficas
hist(Precipitacion, breaks = seq(min_val, max_val, A),
     main = "Gráfica Nº23: Frecuencia Local de la Precipitación",
     xlab = "Precipitación (mm)", ylab = "Frecuencia",
     col = "#4A90E2")

hist(Precipitacion, breaks = seq(min_val, max_val, A),
     main = "Gráfica Nº24: Frecuencia Global de la Precipitación",
     xlab = "Precipitación (mm)", ylab = "Frecuencia",
     col = "green", ylim = c(0, 3000))

barplot(TDFPrecipitacion$hi,
        space = 0, col = "skyblue",
        main = "Gráfica Nº25: Porcentaje Local de la Precipitación",
        xlab = "Precipitación (mm)", ylab = "Porcentaje (%)",
        names.arg = TDFPrecipitacion$MC, ylim = c(0, max(TDFPrecipitacion$hi)))

barplot(TDFPrecipitacion$hi,
        space = 0, col = "yellow",
        main = "Gráfica Nº26: Porcentaje Global de la Precipitación",
        xlab = "Precipitación (mm)", ylab = "Porcentaje (%)",
        names.arg = TDFPrecipitacion$MC, ylim = c(0, 100))

boxplot(Precipitacion,
        horizontal = TRUE, col = "pink",
        main = "Gráfica Nº27: Distribución de la Precipitación (mm)",
        xlab = "Precipitación (mm)")

# Ojivas
plot(Li, Nidsc, type = "o", col = "red", lwd = 3,
     main = "Gráfica Nº28: Frecuencia Ascendente y Descendente",
     xlab = "Precipitación (mm)", ylab = "Cantidad", xaxt = "n")
lines(Ls, Niasc, type = "o", col = "green", lwd = 3)
axis(1, at = round(seq(min_val, max_val, length.out = 10), 0))

plot(Li, Hidsc, type = "o", col = "red", lwd = 2,
     main = "Gráfica Nº29: Distribución Porcentual Ascendente y Descendente",
     xlab = "Precipitación (mm)", ylab = "Porcentaje (%)", xaxt = "n")
lines(Ls, Hiasc, type = "o", col = "blue", lwd = 3)
axis(1, at = round(seq(min_val, max_val, length.out = 10), 0))

# INDICADORES ESTADISTICOS
media <- round(mean(Precipitacion), 2)
mediana <- round(median(Precipitacion), 2)
Tabla_Prec <- as.data.frame(table(Precipitacion))
moda <- as.numeric(names(Tabla_Prec)[Tabla_Prec$Freq == max(Tabla_Prec$Freq)])
varianza <- round(var(Precipitacion), 2)
desviacion <- round(sd(Precipitacion), 2)
cv <- round((desviacion / media) * 100, 2)
library(e1071)
asimetria <- round(skewness(Precipitacion, type = 2), 2)
curtosis <- round(kurtosis(Precipitacion), 2)

# Tabla resumen indicadores
tabla_indicadores <- data.frame(
  Variable = "Precipitación",
  Rango = paste0("[", min_val, " ; ", max_val, "]"),
  X = media,
  Me = mediana,
  Mo = paste(moda, collapse = ", "),
  V = varianza,
  Sd = desviacion,
  Cv = cv,
  As = asimetria,
  K = curtosis,
  Valores_Atipicos = "No hay valores atípicos"
)

tabla_indicadores_gt <- tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("*Tabla N°7*"),
    subtitle = md("**Indicadores Estadísticos de Precipitación (mm)**")
  ) %>%
  tab_source_note(source_note = md("Autor: Grupo 3"))
# Mostrar tabla de indicadores estadísticos
tabla_indicadores_gt
Tabla N°7
Indicadores Estadísticos de Precipitación (mm)
Variable Rango X Me Mo V Sd Cv As K Valores_Atipicos
Precipitación [0 ; 399.7] 200.32 199 NA 13287.6 115.27 57.54 0.01 -1.19 No hay valores atípicos
Autor: Grupo 3
##============##
## CONCLUSION ##
##============##
# La variable Precipitación fluctua entre 0 y 399.7 y gira entorno a 200.32 con una desviación estandar de 115.27 siendo un conjuto de datos heterogeneo, los valores de acumulan de manera debil en la parte media de la variable. Sin presencia de valores atípicos.