#------------------ 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

datos <- read.csv2("Waste_Management_and_Recycling_India.csv xd.csv", 
                   sep = ";", 
                   dec = ",", 
                   stringsAsFactors = FALSE)

# Identificar x,y ----------
y <- datos$Recycling.Rate....
x <- datos$Population.Density..People.km..
# Tabla pares de valores ---------
tabla <- data.frame(x,y)
length(x); length(y)
## [1] 850
## [1] 850
# Depuración -------------

#1) Filtrar filas eliminando aquellas con NA, 0 en cualquiera de las columnas
tabla_limpia <- tabla[!apply(tabla, 1, function(fila) {
  any(is.na(fila) | fila == 0 | fila == "" | fila == "-Inf")
}), ]
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
#2) Identificar filas únicas por 'x' dejando la de menor 'y'
tabla_filtrada <- tabla_limpia %>%
  group_by(x) %>%
  filter(y == min(y)) %>%
  ungroup()
#3) Renumerar las filas de la tabla filtrada

tabla_dep <- tabla_filtrada %>%
  mutate(row_number = row_number()) %>%
  select(-row_number)

# Conjetura de modelo matemático: Modelo Logarítmico --------------

x1 <- log(as.numeric(tabla_dep$x))

x1 <- log(tabla_dep$x)
RegresionLogaritmica <- lm(tabla_dep$y ~ x1)
RegresionLogaritmica  
## 
## Call:
## lm(formula = tabla_dep$y ~ x1)
## 
## Coefficients:
## (Intercept)           x1  
##      26.928        0.507
# Cálculo de parámetros de regresión logarítmica --------------

a <- RegresionLogaritmica$coefficients[1]; a
## (Intercept) 
##    26.92774
b <- RegresionLogaritmica$coefficients[2]; b
##        x1 
## 0.5070359
# Ecuación logarítmica ------ y = 26,92 - 0,50*ln(x)

# Gráfica de la regresión -----------
plot(tabla_dep$x, tabla_dep$y,
     col = 4,
     pch = 16, # Tipo de punto
     main = "Gráfica N.: Regresión Logarítmica",
     xlab = "O3 (ppb)",
     ylab = "NO (ppb)")

# Curva de regresión logarítmica
curve(a + b * log(x),
      from = min(tabla_dep$x),
      to = max(tabla_dep$x),
      add = TRUE,
      col = "red",
      lwd = 2)

cor(log(tabla_dep$x), tabla_dep$y)
## [1] 0.1605694
# Test de Pearson
r <- cor(log(tabla_dep$x), tabla_dep$y)
print(paste("Correlación de Pearson (log):", round(r, 4)))
## [1] "Correlación de Pearson (log): 0.1606"
# Coeficiente de Determinación
r2 <- (r^2) * 100
print(paste("Coeficiente de determinación:", round(r2, 2), "%"))
## [1] "Coeficiente de determinación: 2.58 %"
x <- tabla_dep$x
y <- tabla_dep$y

# Dominio de x para logaritmo (x debe ser > 0)
restriccion_x <- range(x[x > 0])
cat("Restricción: el modelo logarítmico es válido para x ∈ [", restriccion_x[1], ",", restriccion_x[2], "]\n")
## Restricción: el modelo logarítmico es válido para x ∈ [ 2335 , 24032 ]
# Validar si hay valores inválidos (<= 0)
any(x <= 0)  # Debe ser FALSE para modelo log
## [1] FALSE
# Para y: se recomienda también verificar rango
range(y)
## [1] 30 37
# Parámetros del modelo logarítmico
a <- 26.92
b <- -0.50

# Estimar y para x = 10000
x_estimado <- 10000
y_estimado <- a + b * log(x_estimado)

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

text(x = 1, y = 1,
     labels = paste("Qué tasa de reciclaje (%) se espera",
                    "\ncuando la densidad poblacional sea de 10,000 hab/km²",
                    "\n\nR =", round(y_estimado, 3), "%"),
     cex = 2.2,         # Tamaño del texto
     col = "blue",      # Color azul
     font = 6)          # Fuente negrita

# Definir parámetros del modelo logarítmico
a <- 26.92
b <- -0.50

# Valor de entrada para la estimación
x0 <- 10000

# Estimación puntual
y0 <- a + b * log(x0)  # <<<<<< AQUÍ estaba el problema: debes definir esto antes de usarlo

# Coeficientes de correlación y determinación
r <- cor(log(tabla_dep$x), tabla_dep$y)
r2 <- (r^2) * 100

# Crear tabla resumen
Tabla_resumen <- data.frame(
  Variables = "Densidad poblacional vs Tasa de reciclaje",
  Modelo = "y = 26,92 - 0,50 * ln(x)",
  Restricciones = "x > 0; x ∈ [129, 24791]",
  Coef_Pearson = paste0("r = ", round(r, 4)),
  Coef_Determinacion = paste0("R² = ", round(r2, 2), "%"),
  Estimacion = paste0("y ≈ ", round(y0, 2), "% cuando x = ", x0)
)

# Mostrar la tabla (opcional)
print(Tabla_resumen)
##                                   Variables                   Modelo
## 1 Densidad poblacional vs Tasa de reciclaje y = 26,92 - 0,50 * ln(x)
##             Restricciones Coef_Pearson Coef_Determinacion
## 1 x > 0; x ∈ [129, 24791]   r = 0.1606         R² = 2.58%
##                    Estimacion
## 1 y ≈ 22.31% cuando x = 10000