Variable Original: CO2 total emissions (tons) by state

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

Justificación de la variable

Las emisiones de CO2 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, lo que permite evaluar la correlación entre actividad minera y emisiones de CO2.


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$CO2.total.emissions..tons..by.state <- as.numeric(gsub(",", ".", datos$CO2.total.emissions..tons..by.state))

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

cat("Variable  : CO2 total emissions (tons) by state\n")
## Variable  : CO2 total emissions (tons) by state
cat("Nombre    : EMIS_CO2\n")
## Nombre    : EMIS_CO2
cat("n validos :", n, "\n")
## n validos : 2921
cat("Min       :", round(min(EMIS_CO2), 2), "ton\n")
## Min       : 49075.86 ton
cat("Max       :", round(max(EMIS_CO2), 2), "ton\n")
## Max       : 233425577 ton

2. Parámetros de Clasificación

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

cat("k (Sturges)      :", k, "\n")
## k (Sturges)      : 13
cat("Amplitud ajustada:", am, "\n")
## Amplitud ajustada: 17952039

3. Definición de Clases

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

cat("Límites de clases:\n")
## Límites de clases:
print(round(breaks, 2))
##  [1]     49075.86  18001114.42  35953152.98  53905191.54  71857230.10
##  [6]  89809268.66 107761307.22 125713345.78 143665384.34 161617422.90
## [11] 179569461.46 197521500.02 215473538.58 233425577.10

4. Cálculo de Frecuencias

cortes <- cut(EMIS_CO2, 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      49075.86  18001114   9025095  174  5.96  174 2921   5.96 100.00
## 2   18001114.42  35953153  26977134  468 16.02  642 2747  21.98  94.04
## 3   35953152.98  53905192  44929172  335 11.47  977 2279  33.45  78.02
## 4   53905191.54  71857230  62881211 1210 41.42 2187 1944  74.87  66.55
## 5   71857230.10  89809269  80833249  533 18.25 2720  734  93.12  25.13
## 6   89809268.66 107761307  98785288   62  2.12 2782  201  95.24   6.88
## 7  107761307.22 125713346 116737327   23  0.79 2805  139  96.03   4.76
## 8  125713345.78 143665384 134689365    0  0.00 2805  116  96.03   3.97
## 9  143665384.34 161617423 152641404    0  0.00 2805  116  96.03   3.97
## 10 161617422.90 179569461 170593442    0  0.00 2805  116  96.03   3.97
## 11 179569461.46 197521500 188545481    0  0.00 2805  116  96.03   3.97
## 12 197521500.02 215473539 206497519    0  0.00 2805  116  96.03   3.97
## 13 215473538.58 233425577 224449558  116  3.97 2921  116 100.00   3.97

6. Tabla de Presentación

TDF %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla 1**"),
    subtitle = md("Distribución de frecuencias — Emisiones CO2 (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 CO2 (ton) por estado
Desde (ton) Hasta (ton) Marca Clase fi fri (%) Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
49075.86 18001114 9025095 174 5.96 174 2921 5.96 100.00
18001114.42 35953153 26977134 468 16.02 642 2747 21.98 94.04
35953152.98 53905192 44929172 335 11.47 977 2279 33.45 78.02
53905191.54 71857230 62881211 1210 41.42 2187 1944 74.87 66.55
71857230.10 89809269 80833249 533 18.25 2720 734 93.12 25.13
89809268.66 107761307 98785288 62 2.12 2782 201 95.24 6.88
107761307.22 125713346 116737327 23 0.79 2805 139 96.03 4.76
125713345.78 143665384 134689365 0 0.00 2805 116 96.03 3.97
143665384.34 161617423 152641404 0 0.00 2805 116 96.03 3.97
161617422.90 179569461 170593442 0 0.00 2805 116 96.03 3.97
179569461.46 197521500 188545481 0 0.00 2805 116 96.03 3.97
197521500.02 215473539 206497519 0 0.00 2805 116 96.03 3.97
215473538.58 233425577 224449558 116 3.97 2921 116 100.00 3.97
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_CO2, breaks = breaks, col = “#2E75B6”, border = “white”, main = “Gráfica 1: Frecuencia Absoluta Global — EMIS_CO2”, xlab = “Emisiones CO2 (toneladas)”, ylab = “Frecuencia absoluta”)

7.2 Frecuencia Absoluta Rango Principal

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

par(mar = c(5, 5, 4, 2))
hist(CO2_z, breaks = br_z, col = "#2E75B6", border = "white",
     main = paste0("Gráfica 2: Rango Principal — EMIS_CO2 (hasta P95=",
                   round(p95/1e6, 1), "M ton)"),
     xlab = "Emisiones CO2 (toneladas)", ylab = "Frecuencia absoluta")

7.3 Frecuencia Relativa Local

hist(CO2_z, breaks = br_z, col = "#2E75B6", border = "white",
     freq = FALSE,
     main = "Gráfica 3: Frecuencia Relativa Local — EMIS_CO2",
     xlab = "Emisiones CO2 (toneladas)", ylab = "Densidad")

7.4 Frecuencia Relativa Global

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


8. Ojivas Combinadas

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


9. Diagrama de Caja

boxplot(EMIS_CO2, horizontal = TRUE, col = "#AEC6E8", border = "#1F4E79",
        main = "Gráfica 6: Diagrama de Caja — EMIS_CO2",
        xlab = "Emisiones CO2 (toneladas)")


10. Indicadores Estadísticos

media   <- mean(EMIS_CO2)
mediana <- median(EMIS_CO2)
desv    <- sd(EMIS_CO2)
cv      <- desv / media * 100
asim    <- skewness(EMIS_CO2)
kurt    <- kurtosis(EMIS_CO2)
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_CO2")
  ) %>%
  cols_label(Indicador="Indicador", Resultado="Resultado") %>%
  tab_source_note(md("Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018"))
Tabla 2
Indicadores estadísticos — EMIS_CO2
Indicador Resultado
Media (IC 95%) 65592226.5 [64102051.09 - 67082401.91]
Mediana 65429380.98
Desv. S 41074759.24
CV (%) 62.62
Asimetria 2.4657
Curtosis 8.4293
Fuente: Dataset MSHA — Emisiones estatales EE.UU. 2018

11. Valores Atípicos

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

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

12. Conclusión

cat(sprintf(
"La variable EMIS_CO2 registra las emisiones totales de CO2 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
concentran valores muy altos.

El CV de %.2f%% confirma alta heterogeneidad entre estados. Se
identificaron %d valores atipicos correspondientes a estados con alta
densidad de instalaciones mineras activas, lo que respalda la hipotesis
de correlacion positiva entre actividad minera y emisiones de CO2.\n",
  min(EMIS_CO2), max(EMIS_CO2), media, mediana,
  asim, cv, length(outs)
))
## La variable EMIS_CO2 registra las emisiones totales de CO2 en toneladas
## por estado administrativo (STATE) para 2018. Cada instalacion minera
## hereda el valor del estado al que pertenece administrativamente.
## 
## Los valores oscilan entre 49075.86 y 233425577.10 toneladas, con media de 65592226.50 ton
## y mediana de 65429380.98 ton. La asimetria positiva (As=2.4657) indica que la
## mayoria de los estados registran emisiones bajas mientras pocos estados
## concentran valores muy altos.
## 
## El CV de 62.62% confirma alta heterogeneidad entre estados. Se
## identificaron 116 valores atipicos correspondientes a estados con alta
## densidad de instalaciones mineras activas, lo que respalda la hipotesis
## de correlacion positiva entre actividad minera y emisiones de CO2.