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)
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
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
# 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 | |
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)")
La nube de puntos muestra una tendencia clara, creciente y sin dispersión caótica, compatible con un modelo lineal simple.
# 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).
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.
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
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)
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)
# Test de Pearson
r <- cor(x, y)
r * 100
## [1] 94.99882
# Coeficiente de determinación
r2 <- r^2
r2 * 100
## [1] 90.24777
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)
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)
"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."