#------------------ 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 Inferencial
# Nombre: Helen Taipe
# Fecha: 20/07/2025
bd<- datos <- read.csv2("Waste_Management_and_Recycling_India.csv xd.csv", 
                        sep = ";", 
                        dec = ",", 
                        stringsAsFactors = FALSE)
names(bd)
##  [1] "City.District"                     "Waste.Type"                       
##  [3] "Waste.Generated..Tons.Day."        "Recycling.Rate...."               
##  [5] "Population.Density..People.km.."   "Municipal.Efficiency.Score..1.10."
##  [7] "Disposal.Method"                   "Cost.of.Waste.Management....Ton." 
##  [9] "Awareness.Campaigns.Count"         "Landfill.Name"                    
## [11] "Landfill.Location..Lat..Long."     "Landfill.Capacity..Tons."         
## [13] "Year"
names(bd) <- c(
  "Ciudad",
  "Tipo_Residuo",
  "Residuos_Generados_TonDia",
  "Tasa_Reciclaje_Porc",
  "Densidad_Poblacional",
  "Eficiencia_Municipal",
  "Metodo_Disposicion",
  "Costo_Gestion_Residuos",
  "Campanas_Concientizacion",
  "Nombre_Relleno",
  "Ubicacion_Relleno",
  "Capacidad_Relleno_Ton",
  "Anio"
)
#install.packages("naniar")
#install.packages("tidyr")

library(naniar)
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(tidyr)
bd <- bd %>%
  separate(Ubicacion_Relleno, into = c("Latitud", "Longitud"), sep = ",", remove = FALSE) %>%
  mutate(
    Latitud = as.numeric(trimws(Latitud)),
    Longitud = as.numeric(trimws(Longitud)))

# ESTADPISTICA INFERENCIAL

# 1. Selección de variable continua
x <- bd$Capacidad_Relleno_Ton

# 2. Histograma 

hist(x, main = "Gráfica No.1: de Frecuencias de la Capacidad de Vertedero", 
     xlab = "Capacidad", 
     col = "lightblue", 
     breaks = 10)

# 3 - 4 Conjetura de Modelo Probabilístico

# Los datos aparentar conjeturar a una distribución normal
# Cálculo de parámetros (media y desviación estándar)
media <- mean(x, na.rm = TRUE)
desv <- sd(x, na.rm = TRUE)
cat("Media:", round(media,2), "\n")
## Media: 58934.62
cat("Desviación estándar:", round(desv, 2), "\n")
## Desviación estándar: 19413.63
cat("En promedio las ciudades de  la India la capacidad de relleno es de", 
    media 
    ,"toneladas de residuos al dia.")
## En promedio las ciudades de  la India la capacidad de relleno es de 58934.62 toneladas de residuos al dia.
# Histograma con densidad

hist(x, prob= TRUE, breaks=4,ylim = c(0,0.00002),
     col = "lightblue",
     main = "Gráfica No.2: Modelo Normal de la Variable Capacidad de Vertedero 
     en India",
     xlab = "Capacidad de Vertedero (ton)")   # Añadir curva normal teórica

curve(dnorm(x ,mean = media, sd = desv),
      col = "red", lwd = 2, add = TRUE)

# 5. Test de Bondad de Ajuste (Chi-Cuadrado para normalidad)

u <- mean(x)
sigma <- sd(x)

# Histograma con 5 intervalos sin graficar
hlongitud <- hist(x, breaks = 9, plot = FALSE)

# Frecuencias observadas
Fo <- hlongitud$counts
Fo
## [1]  50 125 125 100 225  75 100  50
liminf <- hlongitud$breaks[1:8]
limsup <- hlongitud$breaks[2:9]
P <- c()
for (i in 1:length(Fo)) {
  P[i] <- pnorm(limsup[i], u, sigma) - pnorm(liminf[i], u, sigma)
}

P
## [1] 0.04560265 0.09664342 0.15797845 0.19920448 0.19377222 0.14540296 0.08416377
## [8] 0.03757608
# Frecuencias esperadas
Fe <- P * length(x)
Fe
## [1]  38.76225  82.14691 134.28169 169.32381 164.70639 123.59252  71.53920
## [8]  31.93967
h<-length(hlongitud$counts)
P<-c(0)
for (i in 1:h) {
  P[i] <-(pnorm(hlongitud$breaks[i+1],u,sigma)-
            pnorm(hlongitud$breaks[i],u,sigma))}

#Frecuencia esperada
FE<-P*length(hlongitud)
plot(Fo,Fe,main="Gráfica No.3:Correlación entre la frecuencia observada y la 
     frecuencia esperada en el Modelo Normal ",
     xlab="Frecuencia Observada(FO)",
     ylab="Frecuencia Esperada(FE)",col="blue3")
abline(lm(Fe ~ Fo), col="red",lwd=2)

Correlación<-cor(Fo,Fe)*100
Correlación
## [1] 67.41208
# Estadístico chi-cuadrado manual
X2 <- sum((((Fo - Fe)^2) / Fe))
X2
## [1] 117.3482
# Valor crítico para gl = 5-1-2 = 2, nivel 99%
VC <- qchisq(0.95, df = 6)

X2>VC
## [1] TRUE
# 6. Cálculo de Probabilidades (Ej: ¿P[X > 60000 toneladas/día]?)
p_mayor_100 <- 1 - pnorm(60000, mean = media, sd = desv)
cat("P[X > 100] =", round(p_mayor_100, 4), "\n")
## P[X > 100] = 0.4781
# 7. Estimación puntual (media y desviación estándar)
cat("Estimación puntual (media):", round(media, 2), "\n")
## Estimación puntual (media): 58934.62
cat("Estimación puntual (desv. estándar):", round(desv, 2), "\n")
## Estimación puntual (desv. estándar): 19413.63
# 8. Estimación por Intervalo de Confianza para la media (nivel 95%)
n <- length(na.omit(x))
error_est <- qt(0.975, df = n - 1) * desv / sqrt(n)
li <- media - error_est
ls <- media + error_est

cat("IC del 95% para la media:", round(li, 2), "a", round(ls, 2), "\n")
## IC del 95% para la media: 57627.65 a 60241.59
#### Conclusiones #### 

# La variable de la capacidad de los rellenos sanitarios (en toneladas) se modeliza 
#a través de un modelo normal. A pesar de esto se rechazó la hipótesis nula en la prueba de bondad de ajuste (X² = 117.35 > VC = 12.59).

# Sin embargo, si se estima una aproximación normal para efectos de análisis,
# se obtienen los siguientes parámetros: media ≈ 58934.62 toneladas y desviación estándar ≈ 19413.63 toneladas.

# Podemos afirmar que la media aritmética poblacional se encuentra entre [57627.65, 60241.59] toneladas con un 95% de confianza.