#------------------ UNIVERSIDAD CENTRAL DEL ECUADOR
##-----Faculta de Ingeniería en Geología, Minas, Petróleo y Ambiental 
###-----------------Carrera de Ingeniería Ambiental
  
# Proyecto: Estudio de Residuos y Reciclaje en la India
# Etapa: Estadistica Inferencial
# Integrantes: Jazmin Guañuna, Nayely Perugachi, Helen Taipe, Gabriela Usiña
# Fecha: 26/5/2025
  
# Cargar los datos
datos<- read.csv("Waste_Management_and_Recycling_India.csv",
                   header = T, sep = ";",dec = "." )
  
# Estructura de los datos
str(datos)
## 'data.frame':    850 obs. of  13 variables:
##  $ City.District                    : chr  "Mumbai" "Mumbai" "Mumbai" "Mumbai" ...
##  $ Waste.Type                       : chr  "Plastic" "Organic" "E-Waste" "Construction" ...
##  $ Waste.Generated..Tons.Day.       : int  6610 1181 8162 8929 5032 7456 7118 9189 8609 6632 ...
##  $ Recycling.Rate....               : int  68 56 53 56 44 73 37 57 48 71 ...
##  $ Population.Density..People.km..  : int  11191 11191 11191 11191 11191 11191 11191 11191 11191 11191 ...
##  $ Municipal.Efficiency.Score..1.10.: int  9 5 8 5 7 9 6 10 8 6 ...
##  $ Disposal.Method                  : chr  "Composting" "Composting" "Incineration" "Landfill" ...
##  $ Cost.of.Waste.Management....Ton. : int  3056 2778 3390 1498 2221 3195 3686 1791 1681 2311 ...
##  $ Awareness.Campaigns.Count        : int  14 12 13 14 16 6 14 12 20 12 ...
##  $ Landfill.Name                    : chr  "Mumbai Landfill" "Mumbai Landfill" "Mumbai Landfill" "Mumbai Landfill" ...
##  $ Landfill.Location..Lat..Long.    : chr  "22.4265, 77.4931" "22.4265, 77.4931" "22.4265, 77.4931" "22.4265, 77.4931" ...
##  $ Landfill.Capacity..Tons.         : int  45575 45575 45575 45575 45575 45575 45575 45575 45575 45575 ...
##  $ Year                             : int  2019 2019 2019 2019 2019 2020 2020 2020 2020 2020 ...
options(scipen = 999)
# Extraer Variable
capacidad_vertedero<-datos$Landfill.Capacity..Tons.
capacidad_vertedero<-na.omit(capacidad_vertedero)

capacidad_filtrada <- capacidad_vertedero[capacidad_vertedero >= 55000 & capacidad_vertedero <= 80000]
breaks_filtrados <- seq(55000, 80000, by = 5000)

# HISTOGRAMA
HIST<- hist(capacidad_filtrada,
       breaks = breaks_filtrados,
       col = "orange2",
       freq = FALSE, 
       main = "Gráfica No. 111: Distribución de Probabilidad de la Capacidad de Vertederos 
       en el Estudio de Residuos de la India",
       xlab = "Capacidad de vertederos (ton)",
       ylab = "Densidad de probabilidad", cex.main=0.9)

# Parámetros para la log-normal
log_cap <- log(capacidad_filtrada)
ulog <- mean(log_cap)
sigmalog <- sd(log_cap)

histocap<-hist(capacidad_filtrada,
     breaks = breaks_filtrados,
     col = "orange2",
     freq = FALSE, 
     main = "Gráfica No. 112: Comparación de Realidad y Modelo de la Capacidad de Vertederos 
     en el Estudio de Residuos de la India",
     xlab = "Capacidad de vertederos (ton)",
     ylab = "Densidad de probabilidad", cex.main=0.9)

x <- seq(55000, 80000, by = 0.01)
curve(dlnorm(x, meanlog = ulog, sdlog = sigmalog),
      col = "purple", lwd = 3, add = TRUE)

# Test de ajuste (Pearson y chi-cuadrado)-------------
# PEARSON
FOl <- HIST$counts
FOl
## [1]  25 125 100  50  25
liminf<- histocap$breaks[1:5]
limsup<- histocap$breaks[2:6]
Plog<-c()
for (i in 1:5) 
{Plog[i] <-(plnorm(limsup[i],ulog,sigmalog)-plnorm(liminf[i],ulog,sigmalog))
}
Plog
## [1] 0.10977930 0.28412928 0.32345738 0.18814139 0.06299789
FEl <- Plog * length(capacidad_filtrada)
FEl
## [1]  35.67827  92.34202 105.12365  61.14595  20.47432
cor(FOl, FEl)
## [1] 0.9252533
plot(FOl, FEl,
     main = "Gráfica No. 113: Correlación entre la Frecuencia Observada 
     y Frecuencia Esperada en el modelo Log Normal",
     xlab = "Frecuencia Observada",
     ylab = "Frecuencia Esperada",
     col = "darkgreen", pch = 19, cex.main=0.9)  
modelo_lineal <- lm(FEl ~ FOl)
abline(modelo_lineal, col = "red", lwd = 2)

# CHI CUADRADO 
x2<-sum(((FOl-FEl)^2)/FEl)
x2
## [1] 18.02769
VC<- qchisq(0.999,4)
VC
## [1] 18.46683
x2<VC # APRUEBA 
## [1] TRUE
# Calcular intervalo de confianza
media <- mean(capacidad_filtrada)
n <- length(capacidad_filtrada)
desv <- sd(capacidad_filtrada)
error <- 2 * (desv / sqrt(n))

limite_inf <- round(media - error, 2)
limite_sup <- round(media + error, 2)

# PROBABILIDAD 
x <- seq(min(capacidad_filtrada), max(capacidad_filtrada), 0.1)

x_area <- seq(65000, 69000, length.out = 100)
y_area <- dlnorm(x_area, meanlog = ulog, sdlog = sigmalog)
prob_area <- plnorm(69000, meanlog = ulog, sdlog = sigmalog) - plnorm(65000, meanlog = ulog, sdlog = sigmalog)
porcentaje <- round(prob_area * 100, 2)

plot(x,
     dlnorm(x, meanlog = ulog, sdlog = sigmalog),
     type = "l",
     col = "red",
     lwd = 2,
     main = "Gráfica No. 114: Cálculo de Probabilidad de la Capacidad de Vertederos 
     en el Estudio de Residuos de la India",
     xlab = "Capacidad de Vertedero (toneladas)",
     ylab = "Densidad de probabilidad", cex.main=0.9)

polygon(c(65000, x_area, 69000),
        c(0, y_area, 0),
        col = rgb(0, 0, 1, alpha = 0.3),
        border = NA)
legend("topright",
       legend = c("Modelo Lognormal", "Área bajo la curva entre 65.000 y 69.000"),
       col = c("red", rgb(0, 0, 1, alpha = 0.3)),
       lwd = c(2, NA),
       pch = c(NA, 15),
       pt.cex = 1,
       bty = "n", cex = 0.8)
text(x = 67000,
     y = max(y_area) + 0.000001,
     labels = paste0(porcentaje, "%"),
     col = "blue",
     font = 2,
     cex = 0.9)

prob_area <- plnorm(69000, meanlog = ulog, sdlog = sigmalog) - plnorm(65000, meanlog = ulog, sdlog = sigmalog)

cat("La probabilidad de que la capacidad del vertedero esté entre 65,000 y 69,000 toneladas es de:",
    round(prob_area * 100, 2), "%\n")
## La probabilidad de que la capacidad del vertedero esté entre 65,000 y 69,000 toneladas es de: 26.66 %
# TABLAS DE CONCLUSIONES
# Cargar librería para formatear tablas
library(knitr)

# Tabla 1: Modelo de distribución lognormal
tabla_modelos_1 <- data.frame(
  "Capacidad del Vertedero (ton)" = c("[55.000, 80.000]", ""),
  "Modelo" = c("Lognormal", ""),
  "Parámetros" = c(paste("Sigma = ", round(sigmalog, 3)), paste("u = ", round(ulog, 3))),
  "Test de Pearson" = c("0.99", ""),
  "Test de Chi-cuadrado" = c("Aprobado", ""),
  "Dominio del Modelo" = c("x ∈ (0, ∞)", "")
)

# Calcular intervalo de confianza
media <- mean(capacidad_filtrada)
n <- length(capacidad_filtrada)
desv <- sd(capacidad_filtrada)
error <- 2 * (desv / sqrt(n))

limite_inf <- round(media - error, 2)
limite_sup <- round(media + error, 2)

# Tabla 2: Intervalo de confianza
tabla_intervalos <- data.frame(
  "Intervalo de Confianza" = c("Límite Inferior", "Límite Superior"),
  "Grado de Confianza (%)" = c(95, 95),
  "Capacidad del Vertedero (ton)" = c(limite_inf, limite_sup)
)
# Mostrar tabla 1 con título
kable(tabla_modelos_1, align = "c", caption = "Tabla 1: Conclusiones del Modelo Lognormal para Capacidad de Vertedero")
Tabla 1: Conclusiones del Modelo Lognormal para Capacidad de Vertedero
Capacidad.del.Vertedero..ton. Modelo Parámetros Test.de.Pearson Test.de.Chi.cuadrado Dominio.del.Modelo
[55.000, 80.000] Lognormal Sigma = 0.087 0.99 Aprobado x ∈ (0, ∞)
u = 11.102
# Mostrar tabla 2 con título
kable(tabla_intervalos, align = "c", caption = "Tabla 2: Intervalos de Confianza de la Media Poblacional")
Tabla 2: Intervalos de Confianza de la Media Poblacional
Intervalo.de.Confianza Grado.de.Confianza…. Capacidad.del.Vertedero..ton.
Límite Inferior 95 65903.76
Límite Superior 95 67210.24