1.Librerías

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
library(gt)

2.Leer datos

datos <- read.csv("waterPollution.csv",
                  header = TRUE, 
                  stringsAsFactors = FALSE)

3.Selección y tratamiento de variable (Causa y Efecto)

datos_modelo <- datos %>%
  select(
    composition_yard_garden_green_waste_percent,
    composition_plastic_percent
  ) %>%
  na.omit() %>%
  filter(
    composition_yard_garden_green_waste_percent > 0,
    composition_plastic_percent > 0
  )

# Variable independiente
x <- datos_modelo$composition_yard_garden_green_waste_percent

# Variable dependiente
y <- datos_modelo$composition_plastic_percent


# La razón para seleccionar estas dos variables es que el porcentaje de residuos verdes y el porcentaje de plástico son los indicadores clave para medir la transición hacia la gestión de residuos sostenibles. Se busca comprobar estadísticamente si el incremento en la separación de desechos orgánicos se relaciona de forma inversa y exponencial con la presencia de plásticos en la composición general.

4.Tabla de pares de valores

# 4. Tabla de pares de valores

datos_modelo$X_val <- x
datos_modelo$Y_val <- y

num_intervalos <- 6

datos_modelo$RESIDUOS_BIN <- cut(
  datos_modelo$X_val,
  breaks = num_intervalos,
  include.lowest = TRUE
)

tabla_resumen <- datos_modelo %>%
  group_by(Intervalo = RESIDUOS_BIN) %>%
  summarise(
    `(X) Residuos Verdes (%)` = round(median(X_val),2),
    `(Y) Plástico (%)` = round(median(Y_val),2),
    .groups = "drop"
  )

tabla_gt <- tabla_resumen %>%
  gt() %>%
  tab_header(
    title = "Tabla 1. Valores medianos distribuidos por intervalos"
  ) %>%
  cols_align(
    align = "center",
    columns = everything()
  )

tabla_gt
Tabla 1. Valores medianos distribuidos por intervalos
Intervalo (X) Residuos Verdes (%) (Y) Plástico (%)
[1.91,6.69] 2.70 20.20
(11.4,16.2] 15.33 6.58
(16.2,21] 19.18 12.15
(25.7,30.5] 30.46 1.61

5. Gráfica de dispersión

plot(
  x,
  y,

  main = "Gráfica No. 1. Diagrama de dispersión entre Residuos Verdes
  y Plástico",

  xlab = "Residuos verdes (%)",

  ylab = "Plástico (%)",

  pch = 16,

  col = rgb(135,206,235,120,maxColorValue = 255),

  cex = 0.7,

  xlim = c(0, max(x)*1.05),

  ylim = c(0, max(y)*1.05)
)

6.Conjetura

# La distribución de los puntos agregados sugiere un modelo no lineal de pendiente negativa con decaimiento exponencial, lo que demuestra una correlación estructural y de sustitución material estable en los registros monitoreados. Esta relación indica que el incremento inicial en los niveles de Residuos verdes se vincula con una reducción drástica y proporcionalmente decreciente en el comportamiento del Plástico, estabilizándose en niveles mínimos a medida que la gestión orgánica se consolida en el sistema.

7.Cálculo de parámetros

y1 <- log(y)

modelo_exp <- lm(y1 ~ x)

# Extracción de coeficientes (beta 0 y beta 1)
beta0 <- modelo_exp$coefficients[1]
beta1 <- modelo_exp$coefficients[2]

# Asignación del parámetro de decaimiento
b <- beta1

# Cálculo del intercepto en valores reales (alfa) para tu informe físico
alfa <- exp(beta0)

print(paste("Intercepto transformado (beta0):", round(beta0, 4)))
## [1] "Intercepto transformado (beta0): 3.1669"
print(paste("Intercepto en valores reales (alfa):", round(alfa, 4)))
## [1] "Intercepto en valores reales (alfa): 23.7342"
print(paste("Pendiente del modelo (b):", round(b, 4)))
## [1] "Pendiente del modelo (b): -0.063"

8.Comparación de la realidad con el modelo

x <- datos_modelo$composition_yard_garden_green_waste_percent
y <- datos_modelo$composition_plastic_percent

y1 <- log(y)
modelo_exp <- lm(y1 ~ x) 

plot(x, y,
     main = "Gráfica No 2: Regresión Exponencial entre Residuos
     Verdes y Plástico en el estudio de los
     cuerpos de agua en Europa",
     xlab = "Residuos verdes (%)",      
     ylab = "Plástico (%)",     
     col = "#87CEEB15",                              
     pch = 16,                              
     xlim = c(0, max(x) * 1.05),   
     ylim = c(0, max(y) * 1.05))


x_curva <- seq(min(x), max(x), length.out = 1000)
y_curva <- exp(predict(modelo_exp, newdata = data.frame(x = x_curva)))

lines(x_curva, y_curva, col = "red", lwd = 3)

9.Test de bondad

# Cálculo del coeficiente de correlación de Pearson (r)
r <- cor(x, y1) * 100
# Cálculo del coeficiente de determinación (R2)
r2 <- (cor(x, y1)^2) * 100
#Los prints
print(paste("Coeficiente de Correlación de Pearson (r):", round(r, 2), "%"))
## [1] "Coeficiente de Correlación de Pearson (r): -85.41 %"
print(paste("Coeficiente de Determinación (R2):", round(r2, 2), "%"))
## [1] "Coeficiente de Determinación (R2): 72.95 %"

10. Restricciones

# Dominio [X]:
# D = {x ∈ R | 0 < x ≤ 30.5}

# Dominio [Y]:
# D = {y ∈ R | 1.45 ≤ y ≤ 22.9}

# ¿Existe algún valor en el dominio de X que, sustituido en el modelo matemático, genere un valor en Y fuera de su dominio?

# Sí. Al sustituir algunos valores de la variable independiente (composition_yard_garden_green_waste_percent) en el modelo exponencial, se obtienen predicciones de la variable dependiente (composition_plastic_percent) que se encuentran fuera del dominio observado. Por esta razón, el modelo debe utilizarse únicamente dentro del intervalo de valores de X considerado en el estudio y no debe extrapolarse fuera de dicho dominio.

11. Estimaciones

### Pregunta

# ¿Cuál es el porcentaje estimado de residuos plásticos cuando el porcentaje de residuos de jardín y jardinería es del 10 %, según el modelo exponencial obtenido?

#--------------------------------------------------------------------------
# Valor de X para realizar la estimación
#--------------------------------------------------------------------------

residuos_verdes <- 10

#--------------------------------------------------------------------------
# Parámetros del modelo exponencial
#--------------------------------------------------------------------------

a <- exp(coef(modelo_exp)[1])
b <- coef(modelo_exp)[2]

#--------------------------------------------------------------------------
# Estimación
#--------------------------------------------------------------------------

plastico_estimado <- a * exp(b * residuos_verdes)

#RESPUESTA
## Al sustituir X = 10 % en el modelo exponencial se obtiene un porcentaje estimado de plástico de 12.63 %.

#==============================================================================
# CREAR CURVA EXPONENCIAL
#==============================================================================

x_curva <- seq(
  min(x),
  max(x),
  length.out = 1000
)

y_curva <- a * exp(b * x_curva)

#==============================================================================
# GRÁFICA No. 3
# MODELO EXPONENCIAL CON ESTIMACIÓN
#==============================================================================

x_min <- min(x, na.rm = TRUE) - 1
x_max <- max(x, na.rm = TRUE) + 1

y_min <- min(y, na.rm = TRUE) - 1
y_max <- max(y, na.rm = TRUE) + 2

plot(
  x,
  y,
  type = "n",
  main = "Gráfica No. 3: Modelo Exponencial con Estimación",
  xlab = "Residuos verdes (%)",
  ylab = "Plástico (%)",
  xlim = c(x_min, x_max),
  ylim = c(y_min, y_max),
  xaxs = "r",
  yaxs = "r"
)


lines(
  x_curva,
  y_curva,
  col = "red",
  lwd = 2
)


segments(
  x0 = residuos_verdes,
  y0 = y_min,
  x1 = residuos_verdes,
  y1 = plastico_estimado,
  col = "gray60",
  lty = 2
)

segments(
  x0 = x_min,
  y0 = plastico_estimado,
  x1 = residuos_verdes,
  y1 = plastico_estimado,
  col = "gray60",
  lty = 2
)


points(
  residuos_verdes,
  plastico_estimado,
  col = "blue",
  pch = 18,
  cex = 1.6
)

text(
  x = residuos_verdes,
  y = y_min + 0.5,
  labels = paste0(residuos_verdes, " %"),
  col = "blue",
  font = 2,
  cex = 0.8
)

text(
  x = x_min + 0.5,
  y = plastico_estimado,
  labels = paste0(round(plastico_estimado,2), " %"),
  col = "blue",
  font = 2,
  pos = 3,
  cex = 0.8
)

#--------------------------------------------------------------------------
# Leyenda
#--------------------------------------------------------------------------

txt1 <- paste0(
  "Estimación: X = ",
  residuos_verdes,
  "%  →  Y = ",
  round(plastico_estimado,2),
  "%"
)

txt2 <- paste0(
  "Modelo: Y = ",
  round(a,3),
  "e^(",
  round(b,4),
  "X)"
)

legend(
  "topright",
  legend = c(txt1, txt2),
  col = c("blue", "red"),
  pch = c(18, NA),
  lty = c(0,1),
  lwd = c(NA,2),
  bty = "o",
  bg = "white",
  cex = 0.75
)

## INTERPRETACIÓN:
##  La curva roja representa el modelo exponencial ajustado a los datos.  El punto azul muestra la estimación realizada para un porcentaje de residuos de jardín y jardinería del  10  %.  Según el modelo, el porcentaje esperado de residuos plásticos es de  12.63 %.

12. Conclusión

#Entre el porcentaje de residuos de jardín y jardinería y el porcentaje de residuos plásticos existe una relación exponencial, representada por el modelo (Y = 23.734e^{-0.063X}). El modelo debe aplicarse únicamente dentro del dominio en (0 < x ≤ 30.5) Y (1.45 ≤ y ≤ 22.9). Muestra que, a medida que aumentan los residuos Verdes, el porcentaje de residuos plásticos disminuye exponencialmente.