Variable Original: NOx total emissions (tons) by state

Nombre Variable: EMIS_NOX
Tipo: Cuantitativa Continua
Escala: Relación

Justificación de la variable

Las emisiones de NOx están registradas a nivel estatal para el año 2018, asociadas a la variable STATE (estado administrativo responsable de cada instalación minera). Cada instalación minera hereda el valor de emisión del estado al que pertenece administrativamente, permitiendo correlacionar la actividad minera con las emisiones de óxidos de nitrógeno.


1. Carga de Librerías y Datos

library(dplyr)
library(gt)
library(e1071)

datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset.csv",
                  sep = ";", stringsAsFactors = FALSE)

datos$NOx.total.emissions..tons..by.state <- as.numeric(gsub(",", ".", datos$NOx.total.emissions..tons..by.state))

EMIS_NOX <- datos$NOx.total.emissions..tons..by.state
EMIS_NOX <- EMIS_NOX[!is.na(EMIS_NOX)]
n        <- length(EMIS_NOX)

cat("Variable  : NOx total emissions (tons) by state\n")
## Variable  : NOx total emissions (tons) by state
cat("Nombre    : EMIS_NOX\n")
## Nombre    : EMIS_NOX
cat("n validos :", n, "\n")
## n validos : 411
cat("Min       :", round(min(EMIS_NOX), 2), "ton\n")
## Min       : 252.01 ton
cat("Max       :", round(max(EMIS_NOX), 2), "ton\n")
## Max       : 144293.8 ton

2. Parámetros de Clasificación

k  <- ceiling(1 + 3.322 * log10(n))
am <- (max(EMIS_NOX) - min(EMIS_NOX)) / k
am <- round(am, 2)

cat("k (Sturges)      :", k, "\n")
## k (Sturges)      : 10
cat("Amplitud ajustada:", am, "\n")
## Amplitud ajustada: 14404.18

3. Definición de Clases

breaks <- seq(min(EMIS_NOX), min(EMIS_NOX) + k * am, length.out = k + 1)
breaks[length(breaks)] <- max(EMIS_NOX) + 0.001

cat("Límites de clases:\n")
## Límites de clases:
print(round(breaks, 2))
##  [1]    252.01  14656.19  29060.37  43464.55  57868.73  72272.91  86677.09
##  [8] 101081.27 115485.45 129889.63 144293.81

4. Cálculo de Frecuencias

cortes <- cut(EMIS_NOX, breaks = breaks, include.lowest = TRUE, right = FALSE)
fi     <- as.vector(table(cortes))
fri    <- round(fi / n * 100, 2)
Ni     <- cumsum(fi)
Nd     <- rev(cumsum(rev(fi)))
Hi     <- round(Ni / n * 100, 2)
Hd     <- round(Nd / n * 100, 2)
mc     <- round((breaks[-length(breaks)] + breaks[-1]) / 2, 2)

5. Tabla de Frecuencias

TDF <- data.frame(
  Desde = round(breaks[-length(breaks)], 2),
  Hasta = round(breaks[-1], 2),
  MC    = mc,
  fi    = fi, fri = fri,
  Ni    = Ni, Nd  = Nd,
  Hi    = Hi, Hd  = Hd
)
print(TDF)
##        Desde     Hasta        MC  fi   fri  Ni  Nd     Hi     Hd
## 1     252.01  14656.19   7454.10  74 18.00  74 411  18.00 100.00
## 2   14656.19  29060.37  21858.28 221 53.77 295 337  71.78  82.00
## 3   29060.37  43464.55  36262.46   0  0.00 295 116  71.78  28.22
## 4   43464.55  57868.73  50666.64   0  0.00 295 116  71.78  28.22
## 5   57868.73  72272.91  65070.82   0  0.00 295 116  71.78  28.22
## 6   72272.91  86677.09  79475.00   0  0.00 295 116  71.78  28.22
## 7   86677.09 101081.27  93879.18   0  0.00 295 116  71.78  28.22
## 8  101081.27 115485.45 108283.36   0  0.00 295 116  71.78  28.22
## 9  115485.45 129889.63 122687.54   0  0.00 295 116  71.78  28.22
## 10 129889.63 144293.81 137091.72 116 28.22 411 116 100.00  28.22

6. Tabla de Presentación

TDF %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla 1**"),
    subtitle = md("Distribución de frecuencias — Emisiones NOx (ton) por estado")
  ) %>%
  cols_label(
    Desde = "Desde (ton)", Hasta = "Hasta (ton)", MC = "Marca Clase",
    fi = "fi", fri = "fri (%)",
    Ni = "Ni Asc.", Nd = "Ni Desc.",
    Hi = "Hi Asc. %", Hd = "Hi Desc. %"
  ) %>%
  tab_source_note(md("Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018"))
Tabla 1
Distribución de frecuencias — Emisiones NOx (ton) por estado
Desde (ton) Hasta (ton) Marca Clase fi fri (%) Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
252.01 14656.19 7454.10 74 18.00 74 411 18.00 100.00
14656.19 29060.37 21858.28 221 53.77 295 337 71.78 82.00
29060.37 43464.55 36262.46 0 0.00 295 116 71.78 28.22
43464.55 57868.73 50666.64 0 0.00 295 116 71.78 28.22
57868.73 72272.91 65070.82 0 0.00 295 116 71.78 28.22
72272.91 86677.09 79475.00 0 0.00 295 116 71.78 28.22
86677.09 101081.27 93879.18 0 0.00 295 116 71.78 28.22
101081.27 115485.45 108283.36 0 0.00 295 116 71.78 28.22
115485.45 129889.63 122687.54 0 0.00 295 116 71.78 28.22
129889.63 144293.81 137091.72 116 28.22 411 116 100.00 28.22
Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018

7. Histogramas

7.1 Frecuencia Absoluta Global

par(mar = c(5, 5, 4, 2), scipen = 999)
hist(EMIS_NOX, breaks = breaks, col = "#ED7D31", border = "white",
     main = "Gráfica 1: Frecuencia Absoluta Global — EMIS_NOX",
     xlab = "Emisiones NOx (toneladas)", ylab = "Frecuencia absoluta")

7.2 Frecuencia Absoluta Rango Principal

p95   <- quantile(EMIS_NOX, 0.95)
NOX_z <- EMIS_NOX[EMIS_NOX <= p95]
k_z   <- ceiling(1 + 3.322 * log10(length(NOX_z)))
br_z  <- seq(min(NOX_z), max(NOX_z), length.out = k_z + 1)

par(mar = c(5, 5, 4, 2), scipen = 999)
hist(NOX_z, breaks = br_z, col = "#ED7D31", border = "white",
     main = paste0("Gráfica 2: Rango Principal — EMIS_NOX (hasta P95=",
                   round(p95/1000, 1), "K ton)"),
     xlab = "Emisiones NOx (toneladas)", ylab = "Frecuencia absoluta")

7.3 Frecuencia Relativa Local

par(mar = c(5, 5, 4, 2), scipen = 999)
hist(NOX_z, breaks = br_z, col = "#ED7D31", border = "white",
     freq = FALSE,
     main = "Gráfica 3: Frecuencia Relativa Local — EMIS_NOX",
     xlab = "Emisiones NOx (toneladas)", ylab = "Densidad")

7.4 Frecuencia Relativa Global

par(mar = c(5, 5, 4, 2), scipen = 999)
hist(EMIS_NOX, breaks = breaks, col = "#ED7D31", border = "white",
     freq = FALSE,
     main = "Gráfica 4: Frecuencia Relativa Global — EMIS_NOX",
     xlab = "Emisiones NOx (toneladas)", ylab = "Densidad")


8. Ojivas Combinadas

ojiva <- data.frame(mc = mc, Ni = Ni, Nd = Nd)
par(scipen = 999)
plot(ojiva$mc, ojiva$Ni, type = "b", col = "black", pch = 16, lwd = 1.5,
     main = "Gráfica 5: Ojivas Combinadas — EMIS_NOX",
     xlab = "Emisiones NOx (toneladas)", ylab = "Frecuencia acumulada")
lines(ojiva$mc, ojiva$Nd, type = "b", col = "#ED7D31", pch = 16, lwd = 1.5)
legend("right", legend = c("Ascendente","Descendente"),
       col = c("black","#ED7D31"), lwd = 2, pch = 16, bty = "n")


9. Diagrama de Caja

par(scipen = 999)
boxplot(EMIS_NOX, horizontal = TRUE, col = "#F9C49A", border = "#843D0A",
        main = "Gráfica 6: Diagrama de Caja — EMIS_NOX",
        xlab = "Emisiones NOx (toneladas)")


10. Indicadores Estadísticos

media   <- mean(EMIS_NOX)
mediana <- median(EMIS_NOX)
desv    <- sd(EMIS_NOX)
cv      <- desv / media * 100
asim    <- skewness(EMIS_NOX)
kurt    <- kurtosis(EMIS_NOX)
ic_inf  <- media - qt(0.975, n-1) * desv / sqrt(n)
ic_sup  <- media + qt(0.975, n-1) * desv / sqrt(n)

data.frame(
  Indicador = c("Media (IC 95%)","Mediana","Desv. S",
                "CV (%)","Asimetria","Curtosis"),
  Resultado = c(
    paste0(round(media,2)," [",round(ic_inf,2)," - ",round(ic_sup,2),"]"),
    round(mediana,2), round(desv,2),
    round(cv,2), round(asim,4), round(kurt,4)
  )
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla 2**"),
    subtitle = md("Indicadores estadísticos — EMIS_NOX")
  ) %>%
  cols_label(Indicador="Indicador", Resultado="Resultado") %>%
  tab_source_note(md("Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018"))
Tabla 2
Indicadores estadísticos — EMIS_NOX
Indicador Resultado
Media (IC 95%) 52845.15 [47213.74 - 58476.56]
Mediana 26924.67
Desv. S 58077.25
CV (%) 109.9
Asimetria 0.8872
Curtosis -1.1007
Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018

11. Valores Atípicos

q1   <- quantile(EMIS_NOX, 0.25)
q3   <- quantile(EMIS_NOX, 0.75)
outs <- EMIS_NOX[EMIS_NOX < q1-1.5*(q3-q1) | EMIS_NOX > q3+1.5*(q3-q1)]

cat("Número de valores atípicos:", length(outs), "\n")
## Número de valores atípicos: 0
if (length(outs) > 0) {
  cat("Mínimo outlier:", round(min(outs),2), "ton\n")
  cat("Máximo outlier:", round(max(outs),2), "ton\n")
}

12. Conclusión

cat(sprintf(
"La variable EMIS_NOX registra las emisiones totales de oxidos de
nitrogeno en toneladas por estado administrativo (STATE) para 2018.
Cada instalacion minera hereda el valor del estado al que pertenece
administrativamente.

Los valores oscilan entre %.2f y %.2f toneladas, con media de %.2f ton
y mediana de %.2f ton. La asimetria positiva (As=%.4f) indica que la
mayoria de los estados registran emisiones bajas mientras pocos estados
con alta actividad minera concentran valores significativamente mayores.

El CV de %.2f%% refleja alta heterogeneidad entre estados. Se
identificaron %d valores atipicos correspondientes a estados con mayor
densidad de instalaciones mineras activas, lo que refuerza la hipotesis
de correlacion entre actividad minera y emisiones de NOx del proyecto.\n",
  min(EMIS_NOX), max(EMIS_NOX), media, mediana,
  asim, cv, length(outs)
))
## La variable EMIS_NOX registra las emisiones totales de oxidos de
## nitrogeno en toneladas por estado administrativo (STATE) para 2018.
## Cada instalacion minera hereda el valor del estado al que pertenece
## administrativamente.
## 
## Los valores oscilan entre 252.01 y 144293.81 toneladas, con media de 52845.15 ton
## y mediana de 26924.67 ton. La asimetria positiva (As=0.8872) indica que la
## mayoria de los estados registran emisiones bajas mientras pocos estados
## con alta actividad minera concentran valores significativamente mayores.
## 
## El CV de 109.90% refleja alta heterogeneidad entre estados. Se
## identificaron 0 valores atipicos correspondientes a estados con mayor
## densidad de instalaciones mineras activas, lo que refuerza la hipotesis
## de correlacion entre actividad minera y emisiones de NOx del proyecto.