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
# =========================

Materia_orgánica_suelo <- datos$Soil_Organic_Matter_.

# -------------------------
# Tabla completa de frecuencias manual
# -------------------------
k <- floor(1 + 3.3 * log10(length(Materia_orgánica_suelo)))
min_val <- min(Materia_orgánica_suelo)
max_val <- max(Materia_orgánica_suelo)
R <- max_val - min_val
A <- R / k

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

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

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

TDF_Materia <- data.frame(
  Li, Ls, MC, ni, round(hi, 2), Niasc, Nidsc, Hiasc, Hidsc
)
colnames(TDF_Materia) <- c("Li","Ls","MC","ni","hi","Ni_asc","Ni_desc","Hi_asc(%)","Hi_desc(%)")

# Agregar fila de totales
totales <- c(
  Li = "TOTAL", Ls = "-", MC = "-", ni = sum(ni),
  hi = 100, Ni_asc = "-", Ni_desc = "-", Hi_asc = "-", Hi_desc = "-"
)
TDF_Materia <- rbind(TDF_Materia, totales)

# Mostrar tabla completa
library(gt)
TDF_Materia %>%
  gt() %>%
  tab_header(
    title = md("*Tabla N°1*"),
    subtitle = md("**Distribución de frecuencias de Materia Orgánica del Suelo (%)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Li == "TOTAL"
    )
  )
Tabla N°1
Distribución de frecuencias de Materia Orgánica del Suelo (%)
Li Ls MC ni hi Ni_asc Ni_desc Hi_asc(%) Hi_desc(%)
0.5 1.29 0.9 277 9.23 277 3000 9.23 100
1.29 2.08 1.69 237 7.9 514 2723 17.13 90.77
2.08 2.88 2.48 265 8.83 779 2486 25.97 82.87
2.88 3.67 3.28 256 8.53 1035 2221 34.5 74.03
3.67 4.46 4.06 252 8.4 1287 1965 42.9 65.5
4.46 5.25 4.86 250 8.33 1537 1713 51.23 57.1
5.25 6.04 5.64 252 8.4 1789 1463 59.63 48.77
6.04 6.83 6.44 242 8.07 2031 1211 67.7 40.37
6.83 7.62 7.22 234 7.8 2265 969 75.5 32.3
7.62 8.42 8.02 239 7.97 2504 735 83.47 24.5
8.42 9.21 8.82 249 8.3 2753 496 91.77 16.53
9.21 10 9.61 247 8.23 3000 247 100 8.23
TOTAL - - 3000 100 - - - -
Autor: Grupo 3
# -------------------------
# Tabla simplificada basada en el histograma
# -------------------------
histoM <- hist(Materia_orgánica_suelo, breaks = 7, plot = F)
LimInf <- histoM$breaks[1:(length(histoM$breaks)-1)]
LimSup <- histoM$breaks[2:length(histoM$breaks)]
Mc <- histoM$mids
ni <- histoM$counts
hi <- round(ni / sum(ni) * 100, 2)
hi[length(hi)] <- hi[length(hi)] + (100 - sum(hi)) # ajustar redondeo
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_asc <- round(cumsum(hi), 2)
Hi_dsc <- round(rev(cumsum(rev(hi))), 2)

TDF_Materia_Histo <- data.frame(LimInf, LimSup, Mc, ni, hi, Ni_asc, Ni_dsc, Hi_asc, Hi_dsc)

# Agregar fila total
totales <- c(
  LimInf = "TOTAL", LimSup = "-", Mc = "-", ni = sum(ni),
  hi = 100, Ni_asc = "-", Ni_dsc = "-", Hi_asc = "-", Hi_dsc = "-"
)
TDF_Materia_Histo <- rbind(TDF_Materia_Histo, totales)

# Mostrar tabla simplificada
TDF_Materia_Histo %>%
  gt() %>%
  tab_header(
    title = md("*Tabla N°2*"),
    subtitle = md("**Tabla simplificada de Materia Orgánica del Suelo (%)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = LimInf == "TOTAL"
    )
  )
Tabla N°2
Tabla simplificada de Materia Orgánica del Suelo (%)
LimInf LimSup Mc ni hi Ni_asc Ni_dsc Hi_asc Hi_dsc
0 1 0.5 185 6.17 185 3000 6.17 100
1 2 1.5 304 10.13 489 2815 16.3 93.83
2 3 2.5 329 10.97 818 2511 27.27 83.7
3 4 3.5 334 11.13 1152 2182 38.4 72.73
4 5 4.5 302 10.07 1454 1848 48.47 61.6
5 6 5.5 325 10.83 1779 1546 59.3 51.53
6 7 6.5 309 10.3 2088 1221 69.6 40.7
7 8 7.5 286 9.53 2374 912 79.13 30.4
8 9 8.5 308 10.27 2682 626 89.4 20.87
9 10 9.5 318 10.6 3000 318 100 10.6
TOTAL - - 3000 100 - - - -
Autor: Grupo 3
# -------------------------
# Gráficas
# -------------------------
# -------------------------
# Gráficas Materia Orgánica
# -------------------------

# Extraer solo las filas numéricas (sin TOTAL)
datos_grafico <- subset(TDF_Materia, Li != "TOTAL")

# Convertir columnas a numéricas
datos_grafico$ni <- as.numeric(datos_grafico$ni)
datos_grafico$hi <- as.numeric(datos_grafico$hi)
datos_grafico$MC <- as.numeric(datos_grafico$MC)

# -------------------------
# Frecuencia absoluta
# -------------------------

# Barplot Local (cantidad)
barplot(
  datos_grafico$ni,
  names.arg = datos_grafico$MC,
  col = "skyblue",
  space = 0,
  main = "Gráfica N°1: Distribución de Materia Orgánica (%) (Local)",
  xlab = "Materia Orgánica (%)",
  ylab = "Cantidad"
)

# Barplot Global (cantidad)
barplot(
  datos_grafico$ni,
  names.arg = datos_grafico$MC,
  col = "orange",
  space = 0,
  main = "Gráfica N°2: Distribución de Materia Orgánica (%) (Global)",
  xlab = "Materia Orgánica (%)",
  ylab = "Cantidad",
  ylim = c(0, 3000)
)

# -------------------------
# Porcentaje
# -------------------------

# Barplot Local (porcentaje)
barplot(
  datos_grafico$hi,
  names.arg = datos_grafico$MC,
  col = "skyblue",
  space = 0,
  main = "Gráfica N°3: Porcentaje de Materia Orgánica (%) (Local)",
  xlab = "Materia Orgánica (%)",
  ylab = "Porcentaje (%)"
)

# Barplot Global (porcentaje)
barplot(
  datos_grafico$hi,
  names.arg = datos_grafico$MC,
  col = "orange",
  space = 0,
  ylim = c(0, 100),
  main = "Gráfica N°4: Porcentaje de Materia Orgánica (%) (Global)",
  xlab = "Materia Orgánica (%)",
  ylab = "Porcentaje (%)"
)

# Caja
boxplot(Materia_orgánica_suelo,
        horizontal = TRUE,
        col = "pink",
        main = "Gráfica N°4: Diagrama de Caja de Materia Orgánica (%)",
        xlab = "Materia Orgánica (%)")

# Ojiva Ni ascendente y descendente
plot(LimInf, Ni_dsc,
     main = "Gráfica N°5: Ojiva Ascendente y Descendente (Cantidad)",
     xlab = "Materia Orgánica (%)",
     ylab = "Cantidad",
     type = "o", col = "red", lwd = 2)
lines(LimSup, Ni_asc, col = "green", type = "o", lwd = 2)

# Ojiva porcentual
plot(LimInf, Hi_dsc,
     main = "Gráfica N°6: Ojiva Ascendente y Descendente (Porcentaje)",
     xlab = "Materia Orgánica (%)",
     ylab = "Porcentaje (%)",
     type = "o", col = "red", lwd = 2)
lines(LimSup, Hi_asc, col = "green", type = "o", lwd = 2)

# -------------------------
# Indicadores estadísticos
# -------------------------
library(e1071)

media <- mean(Materia_orgánica_suelo)
mediana <- median(Materia_orgánica_suelo)
Tabla_MO <- as.data.frame(table(Materia_orgánica_suelo))
moda <- Tabla_MO$Materia_orgánica_suelo[Tabla_MO$Freq == max(Tabla_MO$Freq)]
varianza <- var(Materia_orgánica_suelo)
desv <- sd(Materia_orgánica_suelo)
cv <- round((desv / media) * 100, 2)
asimetria <- skewness(Materia_orgánica_suelo, type = 2)
curtosis <- kurtosis(Materia_orgánica_suelo)

tabla_indicadores <- data.frame(
  Variable = "Materia Orgánica del Suelo",
  Rango = paste0("[", min(Materia_orgánica_suelo), ";", max(Materia_orgánica_suelo), "]"),
  X = round(media, 2),
  Me = round(mediana, 2),
  Mo = paste(moda, collapse = ", "),
  V = round(varianza, 2),
  Sd = round(desv, 2),
  Cv = cv,
  As = round(asimetria, 2),
  K = round(curtosis, 2),
  Valores_Atipicos = "No hay presencia de valores atípicos"
)

# Mostrar tabla de indicadores
tabla_indicadores %>%
  gt() %>%
  tab_header(
    title = md("*Tabla N°3*"),
    subtitle = md("**Indicadores estadísticos de Materia Orgánica del Suelo (%)**")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla N°3
Indicadores estadísticos de Materia Orgánica del Suelo (%)
Variable Rango X Me Mo V Sd Cv As K Valores_Atipicos
Materia Orgánica del Suelo [0.5;10] 5.18 5.13 2.5, 5.87 7.63 2.76 53.36 0.04 -1.2 No hay presencia de valores atípicos
Autor: Grupo 3
##============##
## CONCLUSION ##
##============##
# La variable Materia Organica en el suelo fluctua entre 0.5 y 10 y gira entorno a 5.18 con una desviación estandar de 2.76 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.