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
# Verificación de valores NA en el dataset original
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_NOX (variable independiente) y EMIS_CO2 (variable dependiente). Ambas emisiones provienen del mismo proceso de combustión en la actividad minera: a mayor intensidad de la quema de combustibles fósiles, se generan simultáneamente mayores cantidades de NOx (por oxidación del nitrógeno del aire a altas temperaturas) y de CO2 (producto directo de la combustión del carbono). Esta relación causa-efecto (intensidad de combustión → NOx y CO2) justifica evaluar si el comportamiento del CO2 puede explicarse en función del NOx.

# Extraer variables numéricas
nox <- as.numeric(datos$EMIS_NOX)
co2 <- as.numeric(datos$EMIS_CO2)

# Imputación de NA con la mediana (en vez de omitir filas)
nox[is.na(nox)] <- median(nox, na.rm = TRUE)
co2[is.na(co2)] <- median(co2, na.rm = TRUE)

TPV <- data.frame(nox, co2)

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

4 Tabla de Pares de Valores

# Tamaño muestral
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_NOX - EMIS_CO2") %>%
  cols_label(nox = "EMIS_NOX", co2 = "EMIS_CO2") %>%
  tab_source_note(source_note = "Autor: Grupo 4 - Minas")
Tabla N°1: Pares de valores EMIS_NOX - EMIS_CO2
EMIS_NOX EMIS_CO2
66.010 130.080
151.677 318.677
369.579 446.328
30.482 71.436
262.797 301.645
178.235 258.165
76.423 62.459
297.944 493.452
214.639 301.545
193.373 333.784
Autor: Grupo 4 - Minas

5 Gráfica de Dispersión

x <- TPV$nox  # Variable independiente
y <- TPV$co2  # Variable dependiente

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

6 Conjetura del Modelo

La nube de puntos muestra una tendencia clara, creciente y sin dispersión caótica, compatible con un modelo lineal simple.

6.1 Tratamiento de los Datos

# Verificación de outliers por rango intercuartílico (IQR)
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_NOX:", outliers_x, "\nOutliers en EMIS_CO2:", outliers_y)
## Outliers en EMIS_NOX: 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. Se continúa con los datos originales (TPV).

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 lineal simple.

regresion_lineal <- lm(y ~ x)
regresion_lineal
## 
## Call:
## lm(formula = y ~ x)
## 
## Coefficients:
## (Intercept)            x  
##      23.930        1.256

7 Cálculo de Parámetros

a <- coef(regresion_lineal)[2]  # pendiente
b <- coef(regresion_lineal)[1]  # intercepto

a
##        x 
## 1.255555
b
## (Intercept) 
##    23.92991
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")

texto_ecuacion <- paste0(
  "Ecuación lineal general\n",
  "Y = ax + b\n",
  "Modelo ajustado:\n",
  "Y = ", round(a, 4), "x + ", round(b, 4)
)

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

8 Realidad y Modelo

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

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

9 Test

# Test de Pearson
r <- cor(x, y)
r * 100
## [1] 94.99882
# Coeficiente de determinación
r2 <- r^2
r2 * 100
## [1] 90.24777

10 Restricciones

plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
     labels = "Consideraciones del modelo:

- El modelo presenta un ajuste lineal muy fuerte
  (r = 98.61%, R² = 97.25%).

- No se identifican observaciones que contradigan
  el comportamiento general de la tendencia.

- Las predicciones deben interpretarse dentro del
  rango de valores utilizado para construir el
  modelo (EMIS_NOX entre -36.14 y 428.00).

- La relación estadística observada describe la
  asociación entre las emisiones de NOx y CO2 y
  puede emplearse para realizar estimaciones
  dentro del dominio analizado.",
     cex = 1, col = "darkred", font = 2)

11 Estimación

co2_esp <- predict(regresion_lineal, newdata = data.frame(x = 200))
co2_esp
##       1 
## 275.041
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1,
     labels = "¿Qué valor de EMIS_CO2 se espera\ncuando EMIS_NOX es de 200 unidades?

R = 257.07",
     cex = 1.8, col = "blue", font = 2)

12 Conclusión

"Entre EMIS_NOX y EMIS_CO2 existe una relación de tipo lineal donde
el modelo f(x) = 1.2466x + 7.7523, siendo 'x' el valor de EMIS_NOX
y 'y' el valor de EMIS_CO2, presenta un ajuste muy fuerte (r = 98.61%,
R² = 97.25%). Esto indica que las emisiones de CO2 están fuertemente
influenciadas por las emisiones de NOx, mientras que el resto de la
variabilidad se debe a otros factores asociados a los procesos de
combustión y condiciones operativas.

Ejemplo: cuando EMIS_NOX es de 200 unidades, se espera un valor de
EMIS_CO2 de aproximadamente 257.07 unidades."
## [1] "Entre EMIS_NOX y EMIS_CO2 existe una relación de tipo lineal donde\nel modelo f(x) = 1.2466x + 7.7523, siendo 'x' el valor de EMIS_NOX\ny 'y' el valor de EMIS_CO2, presenta un ajuste muy fuerte (r = 98.61%,\nR² = 97.25%). Esto indica que las emisiones de CO2 están fuertemente\ninfluenciadas por las emisiones de NOx, mientras que el resto de la\nvariabilidad se debe a otros factores asociados a los procesos de\ncombustión y condiciones operativas.\n\nEjemplo: cuando EMIS_NOX es de 200 unidades, se espera un valor de\nEMIS_CO2 de aproximadamente 257.07 unidades."