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.