#------------------ 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 y Reciclaje en la India
# Etapa: Estadística Inferencial
# Integrantes: Jazmin Guañuna, Nayely Perugachi, Helen Taipe, Gabriela Usiña
# Fecha: 12/7/2025

#REGRESIÓN LINEAL #
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(readr)  
# Leer los datos
datos <- read_delim("Waste_Management_and_Recycling_India.csv xd.csv", 
                    delim = ";", escape_double = FALSE, trim_ws = TRUE)
## Rows: 850 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (5): City/District, Waste Type, Disposal Method, Landfill Name, Landfill...
## dbl (8): Waste Generated (Tons/Day), Recycling Rate (%), Population Density ...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(datos)[names(datos) == "Cost of Waste Management (₹/Ton)"] <- "Cost of Waste Management (rupia/Ton)"

# Filtrar solo datos del año 2023
datos_2023 <- datos %>% 
  filter(Year == 2023)

# Calcular promedios por ciudad: residuos y costo
promedios_ciudad <- datos_2023 %>%
  group_by(`City/District`) %>%
  summarise(
    x = mean(`Waste Generated (Tons/Day)`, na.rm = TRUE),      # Promedio de residuos
    y = mean(`Cost of Waste Management (rupia/Ton)`, na.rm = TRUE) # Promedio de costo de gestión
  )

# Verificar primeras filas
head(promedios_ciudad)
## # A tibble: 6 × 3
##   `City/District`     x     y
##   <chr>           <dbl> <dbl>
## 1 Agra            4630. 2732.
## 2 Ahmedabad       6563. 2786.
## 3 Allahabad       6150. 3142.
## 4 Amritsar        5326. 2526.
## 5 Bengaluru       5826. 3052.
## 6 Bhopal          5846. 1887.
# Gráfico de dispersión
plot(promedios_ciudad$x, promedios_ciudad$y,
     main = "Gráfica No 119 :Diagrama de Dispersión entre Costo de Gestión 
   y Residuos Generados en el  2023",
     xlab = "Residuos generados (Tons/Día)",
     ylab = "Costo de gestión (rupia/Ton)",
     pch = 19, col = "blue")

subset_intervalo <- promedios_ciudad %>%
  filter(x > 6200, x < 6800)

# Verificar subconjunto
head(subset_intervalo)
## # A tibble: 6 × 3
##   `City/District`     x     y
##   <chr>           <dbl> <dbl>
## 1 Ahmedabad       6563. 2786.
## 2 Coimbatore      6716. 3440.
## 3 Gwalior         6400. 2651.
## 4 Mumbai          6545. 2616.
## 5 Rajkot          6330. 1981.
## 6 Surat           6673. 3465.
# 1.Identificar las dos variables de manera lógica

promresiduos<-subset_intervalo$x
promcosto<-subset_intervalo$y

# 2.Definir la variable dependiente e independiente

x<-promresiduos
y<-promcosto

# 3.Diagrama de dispersión o pares de puntos
plot(x, y,
     main = "Gráfica No.120:  Dispersión de pares de puntos en el Intervalo 
  Definido entre del Costo de Gestión y Residuos Generados ",
     xlab = "Residuos generados (Tons/Día)",
     ylab = "Costo de gestión (rupia/Ton)",
     pch = 19, col = "blue")

# 4. Conjetura
#Linea recta

# 5.Sobreponer la curva y cálculo de los parámetros

regresionlineal <- lm(y ~ x, data = subset_intervalo)
regresionlineal
## 
## Call:
## lm(formula = y ~ x, data = subset_intervalo)
## 
## Coefficients:
## (Intercept)            x  
##  -20476.397        3.561
# y=-20476.397 +3.561x
summary(regresionlineal)
## 
## Call:
## lm(formula = y ~ x, data = subset_intervalo)
## 
## Residuals:
##        1        2        3        4        5        6        7 
## -112.426   -1.177  335.724 -217.010  -84.781  177.361  -97.691 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -2.048e+04  3.938e+03  -5.200  0.00347 **
## x            3.561e+00  6.035e-01   5.901  0.00199 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 210.1 on 5 degrees of freedom
## Multiple R-squared:  0.8744, Adjusted R-squared:  0.8493 
## F-statistic: 34.82 on 1 and 5 DF,  p-value: 0.001988
plot(x, y,
     main = "Gráfica No.121 :Modelo y Realidad en el Intervalo Definido 
     entre Costo de Gestión y Residuos Generados ",
     xlab = "Residuos generados (Tons/Día)",
     ylab = "Costo de gestión (rupia/Ton)",
     pch = 19, col = "blue", ylim =c(1500,4000), xlim =c(6000,7000))
abline(regresionlineal, col = "red", lwd = 2)

# 6. Realizar el Test de bondad
#TEST
r<-cor(x,y)
r
## [1] 0.9351169
#Coeficiente de determinación
r2<-(r^2)*100
r2
## [1] 87.44437
# 7.Predicción 
#¿Cuál será el costo de gestión de residuos (en rupias por tonelada) si una ciudad 
#genera en promedio 6500 toneladas de residuos al día en 2023?

x6500 <- 6500
prediccion <- -20476.397 + 3.561 * 6500
prediccion
## [1] 2670.103
# Conclusiones
# En el intervalo entre el costo de gestión y los residuos generados del Estudio
# de residuos de la India existe una relacion de tipo lineal representado por:

# y=-20476.397 +3.561x 

#Siendo x los residuos generados en (ton/dia) & y el costo 
# de gestión en (rupias/ton),dentro del intervalo seleccionado no existen
#restricciones

# Además el costo de gestión esta influenciado en un 87.44 % por los residuos generados
#mientras que el 12.56 % se debe a otros factores.