1. Cargar datos

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
setwd("C:/Users/LENOVO/OneDrive/Escritorio/ESTADISTICA")
datos <- read.csv("china_water_pollution_data.csv")

# Selección de variables
nitratos <- datos$Nitrate_mg_L
calidad_agua <- datos$Water_Quality_Index
datos_sel <- data.frame(nitratos, calidad_agua)

2.Limpieza de datos y eliminación de valores atípicos

# Eliminar NA
datos_sel <- na.omit(datos_sel)

# Función para eliminar atípicos por IQR
quitar_atipicos_IQR <- function(x) {
  Q1 <- quantile(x, 0.25, na.rm = TRUE)
  Q3 <- quantile(x, 0.75, na.rm = TRUE)
  IQR <- Q3 - Q1
  x >= (Q1 - 1.5 * IQR) & x <= (Q3 + 1.5 * IQR)
}

datos_limpios <- datos_sel[
  quitar_atipicos_IQR(datos_sel$nitratos) &
    quitar_atipicos_IQR(datos_sel$calidad_agua),
]
# Agrupación por intervalos (bins)
num_bins <- 4

datos_binned <- datos_limpios %>%
  mutate(
    NO3_BIN = cut(
      nitratos,
      breaks = seq(
        floor(min(nitratos, na.rm = TRUE)),
        ceiling(max(nitratos, na.rm = TRUE)),
        length.out = num_bins + 1
      )
    )
  )

datos_resumen <- datos_binned %>%
  group_by(NO3_BIN) %>%
  summarise(
    NO3_mediana = median(nitratos, na.rm = TRUE),
    Cal_mediana = median(calidad_agua, na.rm = TRUE),
    n = n()
  ) %>%
  filter(!is.na(NO3_mediana) & !is.na(Cal_mediana))

3. datos_resumen

datos_resumen
## # A tibble: 4 × 4
##   NO3_BIN NO3_mediana Cal_mediana     n
##   <fct>         <dbl>       <dbl> <int>
## 1 (0,1]         0.865        49.9    54
## 2 (1,2]         1.66         50.7  1490
## 3 (2,3]         2.32         50.5  1377
## 4 (3,4]         3.1          51.9    57

4. Definir variables para análisis

x <- datos_resumen$NO3_mediana
y <- datos_resumen$Cal_mediana

5. Conjetura

plot(
  x, y,
  pch = 19,
  col = "purple",
  xlab = "Nitratos (mg/L)",
  ylab = "Índice de Calidad de Agua",
  main = "Relación Nitratos vs Calidad de Agua"
)

7. Parámetros del modelo

#Modelo de regresión lineal simple
regresion_lineal <- lm(y ~ x)
regresion_lineal
## 
## Call:
## lm(formula = y ~ x)
## 
## Coefficients:
## (Intercept)            x  
##      49.137        0.812
a <- coef(regresion_lineal)[2]  # pendiente
b <- coef(regresion_lineal)[1]  # intercepto

7.1 Ecuación del modelo

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(
  x = 1, y = 1,
  labels = paste0(
    "Ecuación lineal\n",
    "y = ax + b\n",
    "y = ", round(a, 2), "x + ", round(b, 2)
  ),
  cex = 2,
  col = "blue",
  font = 2
)

# 7.2 Gráfico con recta de regresión

plot(
  x, y,
  col = "deepskyblue",
  pch = 16,
  main = "Diagrama de dispersión con la línea de regresión",
  xlab = "Nitratos (mg/L)",
  ylab = "Índice de Calidad del Agua"
)

abline(regresion_lineal, col = "red", lwd = 2)

# 8. Correlación y coeficiente de determinación

r <- cor(x, y, method = "pearson", use = "complete.obs")
r2 <- r^2 * 100

cat("Correlación de Pearson:", round(r, 4), "\n")
## Correlación de Pearson: 0.9189
cat("Coeficiente de determinación:", round(r2, 2), "%\n")
## Coeficiente de determinación: 84.44 %

#9. Restricciones del modelo Los nitratos no pueden tomar valores negativos: x≥0 El índice de calidad del agua no puede ser negativo: y≥0 El modelo es válido solo dentro del rango observado:0.86≤x≤3.10 mg/L

10. ESTIMACIÓN

¿Qué valor del Índice de Calidad del Agua se espera cuando la concentración de nitratos es de 2 mg/L?

estimacion_NO3_2 <- a * 2 + b
estimacion_NO3_2
##        x 
## 50.76117
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(
  x = 1, y = 1,
  labels = paste0(
    "Estimacion del Indice de Calidad del Agua\n",
    "para nitratos = 2 mg/L\n\n",
    "Resultado = ", round(estimacion_NO3_2, 2)
  ),
  cex = 1.6,
  col = "blue",
  font = 2
)

# 11. Conclusiones En la contaminación del agua en China se observa una relación lineal positiva entre la concentración de nitratos y el Índice de Calidad del Agua, la cual se describe mediante la ecuación:

y=0.81x+49.14

Este modelo explica aproximadamente el 84.44 % de la variabilidad del Índice de Calidad del Agua, lo que indica una fuerte asociación entre ambas variables. El porcentaje restante de la variabilidad puede atribuirse a otros factores físicos, químicos y biológicos que no fueron considerados en el análisis, como la temperatura del agua, el oxígeno disuelto o la presencia de otros contaminantes.