UNIVERSIDAD CENTRAL DEL ECUADOR

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

FECHA: 24/12/2025

# Extraemos los datos 
setwd("C:/Users/Usuario/Downloads")

# 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")

# Extraemos la variable discreta (Mes)
Mes <- as.integer(format(df$Date_Reported, "%m"))

# TABLA DE DISTRIBUCIÓN DE FRECUENCIAS DE MESES
TDF_Mes <- table(Mes)
Tabla_Mes <- as.data.frame(TDF_Mes)

# Frecuencia absoluta y relativa
ni <- Tabla_Mes$Freq
hi <- round((ni / sum(ni)) * 100, 2)

Tabla_Mes_final <- data.frame(
  Mes = as.character(Tabla_Mes$Mes),
  ni = ni,
  `hi (%)` = hi
)

# Fila TOTAL
Total <- data.frame(
  Mes = "Total",
  ni = sum(ni),
  `hi (%)` = 100
)

TDF_Mes_Total <- rbind(Tabla_Mes_final, Total)

# =========================
# FORMATO gt
# =========================

library(gt)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
tabla_meses_gt <- TDF_Mes_Total %>%
  gt() %>%
  tab_header(
    title = md("*Tabla N° 3*"),
    subtitle = md("**Tabla de distribución de frecuencias 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 frecuencias de los meses del estudio
Mes ni hi....
1 235 7.83
2 240 8.00
3 253 8.43
4 268 8.93
5 247 8.23
6 243 8.10
7 281 9.37
8 248 8.27
9 224 7.47
10 242 8.07
11 262 8.73
12 257 8.57
Total 3000 100.00
Autor: Grupo 3
# 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)

#Vamos a agrupar en 3 diferentes tipos, del 1 al 6, 7 al 9 y del 10 al 12, ya que la variable mes por si sola no se comporta como alguno de los modelos presentados.
#Gráfica 1 al 6 
# Convertir Mes a numérico SOLO para el filtro
Mes_num <- as.numeric(as.character(Tabla_Mes$Mes))

# Seleccionar meses del 1 al 6
indices_1_6 <- Mes_num >= 1 & Mes_num <= 6

# Gráfica — Porcentaje por Mes (1 al 6)
barplot(hi[indices_1_6],
        main = "Gráfica N°10: Distribución porcentual de la contaminación 
        del suelo según el Mes (1–6)",
        xlab = "Mes (1–6)",
        ylab = "Porcentaje",
        col = "lightgreen",
        names.arg = Tabla_Mes$Mes[indices_1_6],
        las = 1,
        cex.names = 0.8)

#Conjetura del modelo: mi variable y sus barras se comportan como el modelo de Binominal 
# =========================
# MODELO BINOMIAL (1–6) — MISMO ESTILO DE LA GRÁFICA 84
# =========================

# Frecuencias reales de las clases 1 a 6
x <- ni[as.numeric(Tabla_Mes$Mes) >= 1 & as.numeric(Tabla_Mes$Mes) <= 6]

# Etiquetas (1–6)
clases <- 1:6

# Probabilidades reales
hi_1_6 <- x / sum(x)

# Variable discreta (0–5)
X <- 0:(length(x) - 1)

# Media observada
media_observada <- sum(X * x) / sum(x)

# Parámetro binomial
p <- media_observada / (length(x) - 1)

# Modelo binomial
P_binomial <- dbinom(X, size = length(x) - 1, prob = p)

# Gráfica comparativa (MISMO FORMATO)
barplot(rbind(hi_1_6, P_binomial),
        beside = TRUE,
        col = c("lightgreen", "blue"),
        names.arg = clases,
        main = "Gráfica N°XX: Modelo de probabilidad Binomial (Clases 1–6)",
        ylab = "Cantidad - Probabilidad",
        xlab = "Variable discreta")

legend("topright",
       legend = c("Real", "Modelo"),
       fill = c("lightgreen", "blue"),
       cex = 0.8)

# =========================
# GRÁFICA DE CORRELACIÓN (PEARSON)
# =========================

plot(hi_1_6, P_binomial,
     main = "Gráfica N°12: Correlación de frecuencias en el modelo Binomial
     (Variable discreta 1–6)",
     xlab = "Frecuencia Observada",
     ylab = "Frecuencia Esperada",
     pch = 18,
     col = "darkblue")

abline(lm(P_binomial ~ hi_1_6), col = "red", lwd = 2)

# =========================
# COEFICIENTE DE CORRELACIÓN DE PEARSON
# =========================

Fo <- hi_1_6
Fe <- P_binomial

Correlacion_Pearson <- cor(Fo, Fe) * 100
Correlacion_Pearson
## [1] 85.08409
# =========================
# TEST DE CHI-CUADRADO
# Variable discreta agrupada 1–6
# =========================

# Frecuencias observadas y esperadas
Fo <- hi_1_6
Fe <- P_binomial

# Estadístico Chi-cuadrado
x2 <- sum(((Fo - Fe)^2) / Fe)
x2
## [1] 1.196262
# Valor crítico (k - 1 grados de libertad, k = 6)
vc <- qchisq(0.95, length(Fo) - 1)
vc
## [1] 11.0705
# Comparación
x2 < vc
## [1] TRUE