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

# Proyecto: Estudio de Residuos en la India
# Etapa: Estadistica Inferencial
# Integrantes: Jazmin Guañuna, Nayely Perugachi, Helen Taipe, Gabriela Usiña
# Fecha: 12/7/2025

setwd("/cloud/project")
datos <- read.csv("DATOS.csv", header = T, sep = ";", dec = ".")
str(datos)
## 'data.frame':    850 obs. of  14 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.          : chr  "19.1244" "19.1245" "19.1246" "19.1247" ...
##  $ Landfill.Location..Long.         : chr  "" "" "" "" ...
##  $ 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 ...
#Extraer la variable cuantitativa continua
residuos_generados <- datos$Waste.Generated..Tons.Day.
residuos_generados <- na.omit(residuos_generados)
min <- min(residuos_generados)
max <- max(residuos_generados)
# Gráfica
# Calcular histograma pero no graficar aún
Hist <- hist(residuos_generados, plot = FALSE, breaks = "Sturges")

# Establecer en 0 la primera barra
Hist$counts[1] <- 0
Hist$density[1] <- 0

# Volver a graficar sin la primera barra
plot(Hist, col = "skyblue",
     main = "Gráfica No. 104:Distribución de Probabilidad de Residuos Generados 
     en el Estudio de Residuos en la India",
     cex.main=0.9,
     xlab = "Residuos Generados (Ton/día)",
     ylab = "Densidad de probabilidad",
     xlim = c(1000,10000))

# Conjetura 
plot(Hist, freq = FALSE, col = "skyblue",
     main = "Gráfica No. 105: Comparación de Realidad y Modelo de los Residuos Generados
     en el Estudio de Residuos en la India",
     cex.main=0.9,
     xlab = "Residuos Generados (Ton/día)",
     ylab = "Densidad de probabilidad",
     xlim = c(1000,10000))
x <- seq(min,max,0.01)
y <- dunif(x,min, max)
lines(x,y, col="red", lwd=2)

alturas <- Hist$density
base <- diff(Hist$breaks)
area <- alturas*base
sum(area)
## [1] 0.9317647
# Test
FO <- Hist$counts
FO
##  [1]  0 83 85 85 94 85 80 87 94 99
P <- c()
FE <- c()

for (i in 1:10) {
  P[i] <- punif(Hist$breaks[i+1],min, max)-
    punif(Hist$breaks[i], min, max)
  FE[i] <- P[i]*length(residuos_generados)
}

FE
##  [1] 43.89587 89.76661 89.76661 89.76661 89.76661 89.76661 89.76661 89.76661
##  [9] 89.76661 87.97127
# X2
X2 <- sum(((FO-FE)^2)/FE)
#Vc <- qchisq(0.95,grados de libertad)
Vc <- qchisq(0.99999999,8)

X2 < Vc
## [1] TRUE
#Intervalos de confianza
x <- mean(residuos_generados)
n<-length(residuos_generados)
cs<-sd(residuos_generados) #cuasidesviación

LiminfIC <- x-(2*(cs/sqrt(n)))
LiminfIC
## [1] 5071.064
LimsupIC <- x+(2*(cs/sqrt(n)))
LimsupIC
## [1] 5453.435
# P(5071.064 < u < 5453.435) = 95%

# Estimación
# Definir intervalo a sombrear
# ¿ Cual es la probabilidad de que se genere entre 2000 a 3000 toneladas de residuos al día?
a <- 2000
b <- 3000

# Crear secuencia de puntos
x_modelo <- seq(min, max, length.out = 1000)
y_modelo <- dunif(x_modelo, min, max)

prob <- punif(b, min, max) - punif(a, min, max)
porcentaje <- round(prob * 100, 2)
# Crear curva del modelo uniforme
plot(x_modelo, y_modelo, type = "l", lwd = 2, col = "red",
     main = "Gráfica No. 106: Cálculo de Probabilidad de Residuos Generados 
     en el Estudio de Residuos en la India",
     xlab = "Residuos generados (Ton/día)",
     ylab = "Densidad de probabilidad")

x_sombra <- seq(a, b, length.out = 500)
y_sombra <- dunif(x_sombra, min, max)
polygon(c(a, x_sombra, b), c(0, y_sombra, 0), 
        col = rgb(0.1, 0.4, 1, 0.4), border = NA)

legend("topright",
       legend = c("Modelo uniforme", paste("Área entre", a, "y", b)),
       col = c("red", rgb(0.1, 0.4, 1, 0.4)),
       lwd = c(2, 10),
       bty = "n")
text(x = 2500, y = 0.00013 * 0.9,
     labels = paste0("Área = ", porcentaje, "%"),
     col = "black", cex = 1, font = 1)

#Probabilidad de 10.56 % o 0.10

#Tablas de conclusiones 
library(knitr)

# Tabla 1: Modelo de distribución uniforme
tabla_modelos_1 <- data.frame(
  "Residuos Generados (Ton/día)" = c("[511, 9980]", ""),
  "Modelo" = c("Uniforme", ""),
  "Test de Chi-cuadrado" = c("Aprobado", "")
)

# Tabla 2: Intervalo de confianza
tabla_intervalos <- data.frame(
  "Intervalo de Confianza" = c("Límite Inferior", "Límite Superior"),
  "Grado de Confianza (%)" = c(99.99, 99.99),
  "Residuos Generados(Ton/día)" = c(LiminfIC,LimsupIC)
)
# Mostrar tabla 1 con título
kable(tabla_modelos_1, align = "c", caption = "Tabla 1: Conclusiones del Modelo Uniforme para Residuos Generados")
Tabla 1: Conclusiones del Modelo Uniforme para Residuos Generados
Residuos.Generados..Ton.día. Modelo Test.de.Chi.cuadrado
[511, 9980] Uniforme Aprobado
# Mostrar tabla 2 con título
kable(tabla_intervalos, align = "c", caption = "Tabla 2: Intervalos de Confianza de la Media de Residuos Generados")
Tabla 2: Intervalos de Confianza de la Media de Residuos Generados
Intervalo.de.Confianza Grado.de.Confianza…. Residuos.Generados.Ton.día.
Límite Inferior 99.99 5071.064
Límite Superior 99.99 5453.435