#------------------ UNIVERSIDAD CENTRAL DEL ECUADOR
##-----Facultad de Ingeniería en Geología, Minas, Petróleos y Ambiental 
###-----------------Carrera de Ingeniería Ambiental

# Proyecto: Estudio de Residuos y Reciclaje en la India
# Etapa: Estadistica MUltivariable
# Integrantes: Jazmin Guañuna, Nayely Perugachi, Helen Taipe, Gabriela Usiña
# Fecha: 20/07/2025



# Cargar datos
library(readr)
datos <- read.csv("Waste_Management_and_Recycling_India.csv xd.csv", 
                  header = TRUE, sep = ";", dec = ".")
# MODELO POLINÓMICO AGRUPADO
# Cargar librerías necesarias
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(knitr)

# 1. Extraer y limpiar variables
costo <- as.numeric(gsub(",", ".", datos$Cost.of.Waste.Management....Ton.))
capacidad <- as.numeric(gsub(",", ".", datos$Landfill.Capacity..Tons.))

# 2. Crear tabla y eliminar NA/0
tabla_raw <- data.frame(costo = costo, capacidad = capacidad)
tabla_raw <- tabla_raw[!apply(tabla_raw, 1, function(fila) {
  any(is.na(fila) | fila == 0)
}), ]

# 3. Agrupar por intervalos de 500
tabla_raw$grupo_costo <- cut(tabla_raw$costo,
                             breaks = seq(floor(min(tabla_raw$costo)),
                                          ceiling(max(tabla_raw$costo)),
                                          by = 500),
                             include.lowest = TRUE,
                             right = FALSE)

# 4. Calcular promedio por grupo
tabla_agrupada <- tabla_raw %>%
  group_by(grupo_costo) %>%
  summarise(x = mean(costo), y = mean(capacidad), .groups = "drop")

# 5. Ajustar modelo polinómico cuadrático
modelo_poly <- lm(y ~ x + I(x^2), data = tabla_agrupada)
a <- coef(modelo_poly)[1]
b <- coef(modelo_poly)[2]
c <- coef(modelo_poly)[3]

# 6. Gráfico
plot(tabla_agrupada$x, tabla_agrupada$y,
     main = "Modelo Polinómico (agrupado): Costo vs Capacidad de Vertedero",
     xlab = "Costo de Gestión (₹/Ton)",
     ylab = "Capacidad promedio (Toneladas)",
     col = "deepskyblue", pch = 16)

curve(a + b*x + c*x^2,
      from = min(tabla_agrupada$x),
      to = max(tabla_agrupada$x),
      add = TRUE, col = "red", lwd = 2)

# 7. Coeficiente de determinación
r <- cor(tabla_agrupada$y, predict(modelo_poly))
r2 <- (r^2) * 100

# 8. Estimación puntual
x0 <- 3000  # costo elegido
y0 <- a + b * x0 + c * x0^2

# Cálculo puntual para x = 3000
x0 <- 3000
y0 <- a + b * x0 + c * x0^2

# Crear gráfico vacío y añadir el texto explicativo
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")  # Gráfico en blanco

text(x = 1, y = 1,
     labels = paste("¿Cuál es la capacidad estimada del vertedero (toneladas)",
                    "\ncuando el costo de gestión es de ₹3.000 por tonelada?",
                    "\n\nR ≈", round(y0, 2), "toneladas"),
     cex = 2.2,         # Tamaño del texto
     col = "blue",      # Color azul
     font = 6)          # Fuente negrita

# 9. Tabla resumen
Tabla_resumen <- data.frame(
  Variables = "Costo de gestión vs Capacidad de vertedero",
  Modelo = paste0("y = ", round(a, 2), " + ", round(b, 4), "*x + ", round(c, 7), "*x²"),
  Restricciones = paste0("x ∈ [", round(min(tabla_agrupada$x)), ", ", round(max(tabla_agrupada$x)), "]"),
  Coef_Pearson = paste0("r = ", round(r, 4)),
  Coef_Determinacion = paste0("R² = ", round(r2, 2), "%"),
  Estimacion = paste0("y ≈ ", round(y0, 2), " toneladas cuando x = ₹", x0)
)

# Mostrar tabla (en consola o informe)
kable(Tabla_resumen, caption = "Resumen del Modelo Polinómico Agrupado")
Resumen del Modelo Polinómico Agrupado
Variables Modelo Restricciones Coef_Pearson Coef_Determinacion Estimacion
Costo de gestión vs Capacidad de vertedero y = 57684.04 + 0.8412x + -0.0001168 x ∈ [765, 4754] r = 0.1674 R² = 2.8% y ≈ 59156.7 toneladas cuando x = ₹3000