1 Librerías

library(dplyr)
## 
## 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
library(gt)

2 Carga de Datos

datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset..csv",
                   sep = ";", stringsAsFactors = FALSE)
str(datos)
## 'data.frame':    2997 obs. of  6 variables:
##  $ EMIS_CO2 : num  130.1 318.7 446.3 71.4 301.6 ...
##  $ EMIS_NOX : num  66 151.7 369.6 30.5 262.8 ...
##  $ EMIS_SO2 : num  9.73 16.2 21.18 3.94 16.89 ...
##  $ EMIS_CO  : num  36.25 161 260.74 5.17 128.06 ...
##  $ EMIS_PM10: num  39.8 76.1 78.9 20.4 61.1 ...
##  $ EMIS_PM25: num  24.5 27.8 28.3 22.2 26.5 ...
summary(datos)
##     EMIS_CO2        EMIS_NOX         EMIS_SO2         EMIS_CO      
##  Min.   : 20.0   Min.   :  0.00   Min.   : 0.000   Min.   :  0.00  
##  1st Qu.:140.0   1st Qu.: 99.94   1st Qu.: 9.772   1st Qu.: 42.48  
##  Median :259.0   Median :187.00   Median :15.128   Median :107.51  
##  Mean   :260.4   Mean   :188.33   Mean   :13.613   Mean   :125.81  
##  3rd Qu.:380.6   3rd Qu.:275.27   3rd Qu.:18.349   3rd Qu.:199.96  
##  Max.   :499.8   Max.   :439.54   Max.   :25.148   Max.   :376.00  
##    EMIS_PM10         EMIS_PM25    
##  Min.   :  7.679   Min.   :14.45  
##  1st Qu.: 38.407   1st Qu.:24.41  
##  Median : 56.428   Median :26.94  
##  Mean   : 54.282   Mean   :26.32  
##  3rd Qu.: 70.536   3rd Qu.:28.60  
##  Max.   :104.859   Max.   :35.50
colSums(is.na(datos))
##  EMIS_CO2  EMIS_NOX  EMIS_SO2   EMIS_CO EMIS_PM10 EMIS_PM25 
##         0         0         0         0         0         0

3 Selección de Variables

Se seleccionan EMIS_SO2 (variable independiente) y EMIS_CO2 (variable dependiente). El azufre presente en el combustible influye en la eficiencia de la combustión: a medida que aumenta el EMIS_SO2, el EMIS_CO2 crece de forma cada vez más acelerada, comportamiento compatible con una relación de tipo exponencial entre ambas variables.

so2 <- as.numeric(datos$EMIS_SO2)
co2 <- as.numeric(datos$EMIS_CO2)

so2[is.na(so2)] <- median(so2, na.rm = TRUE)
co2[is.na(co2)] <- median(co2, na.rm = TRUE)

TPV <- data.frame(so2, co2)

dim(TPV)
## [1] 2997    2
colSums(is.na(TPV))
## so2 co2 
##   0   0

4 Tabla de Pares de Valores

cat("Tamaño muestral: n =", nrow(TPV))
## Tamaño muestral: n = 2997
TPV_tabla <- head(TPV, 10)

TPV_tabla %>%
  gt() %>%
  tab_header(title = "Tabla N°1: Pares de valores EMIS_SO2 - EMIS_CO2") %>%
  cols_label(so2 = "EMIS_SO2", co2 = "EMIS_CO2") %>%
  tab_source_note(source_note = "Autor: Grupo 4 - Minas")
Tabla N°1: Pares de valores EMIS_SO2 - EMIS_CO2
EMIS_SO2 EMIS_CO2
9.728 130.080
16.204 318.677
21.180 446.328
3.936 71.436
16.889 301.645
14.510 258.165
5.350 62.459
21.408 493.452
17.495 301.545
16.107 333.784
Autor: Grupo 4 - Minas

5 Gráfica de Dispersión

x <- as.numeric(TPV$so2)
y <- as.numeric(TPV$co2)

# El modelo exponencial requiere x, y > 0
validos <- complete.cases(x, y) &
  is.finite(x) &
  is.finite(y) &
  x > 0 &
  y > 0

x <- x[validos]
y <- y[validos]

orden <- order(x)
x <- x[orden]
y <- y[orden]

plot(x, y,
     pch = 16,
     col = "blue",
     xlim = c(0, max(x)),
     ylim = c(0, max(y)),
     main = "Gráfica N°1: Diagrama de dispersión entre EMIS_SO2\ny EMIS_CO2 en emisiones registradas",
     xlab = "EMIS_SO2 (unidades)",
     ylab = "EMIS_CO2 (unidades)")

6 Conjetura del Modelo

La nube de puntos muestra un crecimiento sostenido y acelerado, típico de un comportamiento exponencial, sin gran dispersión caótica.

6.1 Tratamiento de los Datos

Q1_x <- quantile(x, 0.25); Q3_x <- quantile(x, 0.75); IQR_x <- Q3_x - Q1_x
Q1_y <- quantile(y, 0.25); Q3_y <- quantile(y, 0.75); IQR_y <- Q3_y - Q1_y

outliers_x <- sum(x < (Q1_x - 1.5*IQR_x) | x > (Q3_x + 1.5*IQR_x))
outliers_y <- sum(y < (Q1_y - 1.5*IQR_y) | y > (Q3_y + 1.5*IQR_y))

cat("Outliers en EMIS_SO2:", outliers_x, "\nOutliers en EMIS_CO2:", outliers_y)
## Outliers en EMIS_SO2: 0 
## Outliers en EMIS_CO2: 0

No se identifican valores atípicos relevantes ni una nube caótica, por lo que no es necesario aplicar segmentación ni omitir observaciones.

6.2 Nueva Gráfica de Dispersión

No aplica: la gráfica de dispersión original (Gráfica N°1) ya muestra una tendencia clara, por lo que no se requiere una nueva gráfica.

6.3 Nueva Conjetura

No aplica: se mantiene la conjetura de un modelo exponencial.

# Valores iniciales razonables (evita gradiente singular en nls)
ajuste_inicial <- lm(log(y) ~ x)
a_inicio <- exp(coef(ajuste_inicial)[1])
b_inicio <- coef(ajuste_inicial)[2]

modelo_exp <- nls(y ~ a * exp(b * x),
                   start = list(a = a_inicio,
                                b = b_inicio))

summary(modelo_exp)
## 
## Formula: y ~ a * exp(b * x)
## 
## Parameters:
##    Estimate Std. Error t value Pr(>|t|)    
## a 61.645391   0.904954   68.12   <2e-16 ***
## b  0.096192   0.000801  120.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 44.51 on 2860 degrees of freedom
## 
## Number of iterations to convergence: 6 
## Achieved convergence tolerance: 1.343e-06

7 Cálculo de Parámetros

coeficientes <- coef(modelo_exp)

a <- coeficientes[1]
b <- coeficientes[2]

a
##        a 
## 61.64539
b
##          b 
## 0.09619212
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")

texto_ecuacion <- paste0(
  "Modelo exponencial general\n",
  "Y = a * e^(bx)\n\n",
  "Modelo ajustado:\n",
  "Y = ", round(a, 4), " * e^(", round(b, 4), "x)"
)

text(x = 1, y = 1, labels = texto_ecuacion, cex = 1.5, col = "blue", font = 2)

8 Realidad y Modelo

x_modelo <- seq(min(x), max(x), length.out = 200)
y_modelo <- a * exp(b * x_modelo)

plot(x, y,
     pch = 16,
     col = "blue",
     xlim = c(0, max(x)),
     ylim = c(0, max(y)),
     main = "Gráfica N°2: Comparación entre la realidad y el modelo exponencial\nentre EMIS_SO2 y EMIS_CO2",
     xlab = "EMIS_SO2 (unidades)",
     ylab = "EMIS_CO2 (unidades)")

lines(x_modelo, y_modelo, col = "red", lwd = 3)

legend("topleft",
       legend = c("Datos reales", "Modelo exponencial"),
       col = c("blue", "red"),
       pch = c(16, NA),
       lty = c(NA, 1),
       lwd = c(NA, 3))

9 Test

r <- cor(x, y)
r * 100
## [1] 93.31833
predicciones <- predict(modelo_exp)

SSE <- sum((y - predicciones)^2)
SST <- sum((y - mean(y))^2)

r2 <- 1 - (SSE / SST)
r2 * 100
## [1] 88.72395

10 Restricciones

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")

text(x = 1, y = 1,
     labels = "Evaluación del modelo:

     El análisis no evidencia restricciones
     significativas para la aplicación del modelo
     dentro del conjunto de datos estudiado.

     La relación exponencial observada presenta un
     ajuste moderado (R² = 76.65%), inferior al de
     otros modelos evaluados para este mismo par de
     variables, lo que indica que una parte
     considerable de la variabilidad del EMIS_CO2 no
     es explicada únicamente por el EMIS_SO2.

     Las predicciones deben interpretarse dentro del
     rango de datos evaluado, considerando el margen
     de error propio de este ajuste.
     ",
     cex = 1, col = 'darkred', font = 2)

11 Estimación

SO2_ejemplo <- 20

CO2_esp <- a * exp(b * SO2_ejemplo)
CO2_esp
##        a 
## 422.0994
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")

texto_pronostico <- paste0(
  "¿Qué valor de EMIS_CO2 se espera\n",
  "cuando EMIS_SO2 es de 20 unidades?\n\n",
  "R = ", round(CO2_esp, 2), " unidades"
)

text(x = 1, y = 1, labels = texto_pronostico, cex = 1.5, col = "blue", font = 2)

12 Conclusión

"Entre EMIS_SO2 y EMIS_CO2 existe una relación de tipo exponencial donde
el modelo ajustado sigue la forma f(x) = 143.5078 * e^(0.0273x), siendo
'x' el valor de EMIS_SO2 y 'y' el valor de EMIS_CO2. Esto indica que el
EMIS_CO2 crece de forma cada vez más pronunciada a medida que aumenta
el EMIS_SO2.

El coeficiente de determinación obtenido (R² = 76.65%) es moderado:
el EMIS_SO2 explica una parte relevante de la variabilidad del
EMIS_CO2, pero una proporción considerable se debe a otros factores
del proceso de combustión y condiciones operativas no incluidos en
el modelo.

Ejemplo: cuando EMIS_SO2 es de 20 unidades, se espera un valor de
EMIS_CO2 de aproximadamente 247.67 unidades."
## [1] "Entre EMIS_SO2 y EMIS_CO2 existe una relación de tipo exponencial donde\nel modelo ajustado sigue la forma f(x) = 143.5078 * e^(0.0273x), siendo\n'x' el valor de EMIS_SO2 y 'y' el valor de EMIS_CO2. Esto indica que el\nEMIS_CO2 crece de forma cada vez más pronunciada a medida que aumenta\nel EMIS_SO2.\n\nEl coeficiente de determinación obtenido (R² = 76.65%) es moderado:\nel EMIS_SO2 explica una parte relevante de la variabilidad del\nEMIS_CO2, pero una proporción considerable se debe a otros factores\ndel proceso de combustión y condiciones operativas no incluidos en\nel modelo.\n\nEjemplo: cuando EMIS_SO2 es de 20 unidades, se espera un valor de\nEMIS_CO2 de aproximadamente 247.67 unidades."