Variable Original: CO2 total emissions (tons) by state

Nombre Variable: EMIS_CO2

Tipo: Cuantitativa Continua

Escala: Razó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. Cada instalación minera hereda el valor de emisión del estado administrativo al que pertenece, lo que permite evaluar la correlación entre actividad minera y emisiones de CO2.


1 Carga de Datos y Librerías

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

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

2 Extraer y Limpiar la Variable

EMIS_CO2 <- as.numeric(gsub(",", ".", datos$CO2.total.emissions..tons..by.state))
## Warning: NAs introducidos por coerción
EMIS_CO2 <- EMIS_CO2[!is.na(EMIS_CO2)]
n <- length(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

3 Tabla de Distribución de Parámetros por Sturges

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

parametros_sturges <- data.frame(
  Parametro = c("Rango (R)", "Número de datos (n)",
                "Número de intervalos (k)", "Amplitud de clase (A)"),
  Valor = c(round(rango, 2), n, k, am)
)

parametros_sturges %>%
  gt() %>%
  tab_header(title = md("**Tabla 1**"),
             subtitle = "Parámetros de Sturges para EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 1
Parámetros de Sturges para EMIS_CO2
Parametro Valor
Rango (R) 233376501
Número de datos (n) 2921
Número de intervalos (k) 13
Amplitud de clase (A) 17952039
Autor: Grupo 4 - Minas
breaks <- seq(min(EMIS_CO2), min(EMIS_CO2) + k * am, length.out = k + 1)
breaks[length(breaks)] <- max(EMIS_CO2) + 0.001

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)

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
)

TDF %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla 2**"),
    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("Autor: Grupo 4 - Minas"))
Tabla 2
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
Autor: Grupo 4 - Minas

4 Gráficas de Distribución de Cantidad

par(mar = c(5, 5, 4, 2))
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")

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")

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")

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")

h <- hist(EMIS_CO2, breaks = breaks, col = "#2E75B6", border = "white",
          main = "Gráfica 5: Histograma con Polígono de Frecuencias — EMIS_CO2",
          xlab = "Emisiones CO2 (toneladas)", ylab = "Frecuencia absoluta")
lines(h$mids, h$counts, type = "o", pch = 16, col = "darkred", lwd = 1.5)

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 6: 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")

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

hist(EMIS_CO2, breaks = breaks, col = "lightgray", border = "white",
     main = "Gráfica 8: Histograma con Diagrama de Caja Superpuesto — EMIS_CO2",
     xlab = "Emisiones CO2 (toneladas)", ylab = "Frecuencia absoluta")
boxplot(EMIS_CO2, horizontal = TRUE, add = TRUE,
        at = par("usr")[4] * 0.08, boxwex = par("usr")[4] * 0.06,
        col = rgb(0.2, 0.2, 1, 0.3), border = "blue", xaxt = "n", yaxt = "n")

5 Indicadores Estadísticos y Outliers

minimo  <- min(EMIS_CO2)
maximo  <- max(EMIS_CO2)
media   <- mean(EMIS_CO2)
mediana <- median(EMIS_CO2)
moda    <- as.numeric(names(sort(table(EMIS_CO2), decreasing = TRUE))[1])
rango2  <- maximo - minimo

varianza <- var(EMIS_CO2)
desv     <- sd(EMIS_CO2)
cv       <- desv / media * 100
if (cv < 15) {
  interpretacion_cv <- "BAJA (CV < 15%)"
} else if (cv < 30) {
  interpretacion_cv <- "MODERADA (15% <= CV < 30%)"
} else {
  interpretacion_cv <- "ALTA (CV >= 30%)"
}

q1  <- quantile(EMIS_CO2, 0.25)
q2  <- quantile(EMIS_CO2, 0.50)
q3  <- quantile(EMIS_CO2, 0.75)
iqr_val <- q3 - q1
lim_inf <- q1 - 1.5 * iqr_val
lim_sup <- q3 + 1.5 * iqr_val
outliers <- EMIS_CO2[EMIS_CO2 < lim_inf | EMIS_CO2 > lim_sup]
n_outliers <- length(outliers)
porc_outliers <- round(n_outliers / n * 100, 2)

asimetria <- skewness(EMIS_CO2)
if (abs(asimetria) < 0.5) {
  interpretacion_asimetria <- "Distribución simétrica"
} else if (asimetria > 0) {
  interpretacion_asimetria <- "Asimetría positiva (sesgo a la derecha)"
} else {
  interpretacion_asimetria <- "Asimetría negativa (sesgo a la izquierda)"
}

curtosis <- kurtosis(EMIS_CO2, type = 2)  # excedente (normal = 0)
if (abs(curtosis) < 0.5) {
  interpretacion_curtosis <- "Distribución mesocúrtica (normal)"
} else if (curtosis > 0) {
  interpretacion_curtosis <- "Distribución leptocúrtica (picuda)"
} else {
  interpretacion_curtosis <- "Distribución platicúrtica (aplanada)"
}

Tabla 3: Tendencia Central

data.frame(
  Indicador = c("Mínimo","Media","Mediana","Moda","Máximo","Rango"),
  Valor = round(c(minimo, media, mediana, moda, maximo, rango2), 2),
  Unidad = rep("toneladas", 6)
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 3**"),
             subtitle = "Indicadores de Tendencia Central — EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 3
Indicadores de Tendencia Central — EMIS_CO2
Indicador Valor Unidad
Mínimo 49075.86 toneladas
Media 65592226.50 toneladas
Mediana 65429380.98 toneladas
Moda 71797634.97 toneladas
Máximo 233425577.10 toneladas
Rango 233376501.24 toneladas
Autor: Grupo 4 - Minas

Tabla 4: Dispersión

data.frame(
  Indicador = c("Varianza","Desviación Estándar","Coeficiente de Variación"),
  Valor = c(round(varianza,2), round(desv,2), paste0(round(cv,2),"%")),
  Interpretacion = c("Medida de dispersión al cuadrado",
                      "Dispersión promedio respecto a la media",
                      paste("Dispersión relativa:", interpretacion_cv))
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 4**"),
             subtitle = "Indicadores de Dispersión — EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 4
Indicadores de Dispersión — EMIS_CO2
Indicador Valor Interpretacion
Varianza 1687135846230875 Medida de dispersión al cuadrado
Desviación Estándar 41074759.24 Dispersión promedio respecto a la media
Coeficiente de Variación 62.62% Dispersión relativa: ALTA (CV >= 30%)
Autor: Grupo 4 - Minas

Tabla 5: Posición y Outliers

data.frame(
  Indicador = c("Cuartil 1 (Q1)","Cuartil 2 (Q2-Mediana)","Cuartil 3 (Q3)",
                "Rango Intercuartílico (IQR)","Límite Inferior Outliers",
                "Límite Superior Outliers","Número de Outliers"),
  Valor = c(round(q1,2), round(q2,2), round(q3,2), round(iqr_val,2),
            round(lim_inf,2), round(lim_sup,2),
            paste0(n_outliers, " (", porc_outliers, "%)"))
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 5**"),
             subtitle = "Indicadores de Posición y Outliers — EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 5
Indicadores de Posición y Outliers — EMIS_CO2
Indicador Valor
Cuartil 1 (Q1) 38354703.57
Cuartil 2 (Q2-Mediana) 65429380.98
Cuartil 3 (Q3) 76406066.27
Rango Intercuartílico (IQR) 38051362.7
Límite Inferior Outliers -18722340.48
Límite Superior Outliers 133483110.32
Número de Outliers 116 (3.97%)
Autor: Grupo 4 - Minas

Tabla 6: Forma de la Distribución

data.frame(
  Indicador = c("Coeficiente de Asimetría (Fisher)","Interpretación Asimetría",
                "Coeficiente de Curtosis (Excedente)","Interpretación Curtosis"),
  Valor = c(round(asimetria,4), interpretacion_asimetria,
            round(curtosis,4), interpretacion_curtosis)
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 6**"),
             subtitle = "Indicadores de Forma — EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 6
Indicadores de Forma — EMIS_CO2
Indicador Valor
Coeficiente de Asimetría (Fisher) 2.4657
Interpretación Asimetría Asimetría positiva (sesgo a la derecha)
Coeficiente de Curtosis (Excedente) 8.4536
Interpretación Curtosis Distribución leptocúrtica (picuda)
Autor: Grupo 4 - Minas

Tabla 7: Resumen Completo

data.frame(
  Categoria = c("Tendencia Central","Tendencia Central","Tendencia Central",
                "Tendencia Central","Tendencia Central","Tendencia Central",
                "Dispersión","Dispersión","Dispersión",
                "Posición","Posición","Posición","Posición",
                "Forma","Forma","Forma","Forma"),
  Indicador = c("Mínimo","Media","Mediana","Moda","Máximo","Rango",
                "Varianza","Desviación Estándar","Coeficiente de Variación",
                "Cuartil 1 (Q1)","Cuartil 2 (Q2)","Cuartil 3 (Q3)","Rango Intercuartílico",
                "Asimetría (g1)","Interpretación Asimetría",
                "Curtosis (g2)","Interpretación Curtosis"),
  Valor = c(round(minimo,2), round(media,2), round(mediana,2), round(moda,2),
            round(maximo,2), round(rango2,2),
            round(varianza,2), round(desv,2), paste0(round(cv,2),"%"),
            round(q1,2), round(q2,2), round(q3,2), round(iqr_val,2),
            round(asimetria,4), interpretacion_asimetria,
            round(curtosis,4), interpretacion_curtosis)
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 7**"),
             subtitle = "Resumen Completo de Indicadores — EMIS_CO2") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 7
Resumen Completo de Indicadores — EMIS_CO2
Categoria Indicador Valor
Tendencia Central Mínimo 49075.86
Tendencia Central Media 65592226.5
Tendencia Central Mediana 65429380.98
Tendencia Central Moda 71797634.97
Tendencia Central Máximo 233425577.1
Tendencia Central Rango 233376501.24
Dispersión Varianza 1687135846230875
Dispersión Desviación Estándar 41074759.24
Dispersión Coeficiente de Variación 62.62%
Posición Cuartil 1 (Q1) 38354703.57
Posición Cuartil 2 (Q2) 65429380.98
Posición Cuartil 3 (Q3) 76406066.27
Posición Rango Intercuartílico 38051362.7
Forma Asimetría (g1) 2.4657
Forma Interpretación Asimetría Asimetría positiva (sesgo a la derecha)
Forma Curtosis (g2) 8.4536
Forma Interpretación Curtosis Distribución leptocúrtica (picuda)
Autor: Grupo 4 - Minas
cat("Numero de valores atipicos:", n_outliers, "\n")
## Numero de valores atipicos: 116
if (n_outliers > 0) {
  cat("Minimo outlier:", round(min(outliers), 2), "ton\n")
  cat("Maximo outlier:", round(max(outliers), 2), "ton\n")
}
## Minimo outlier: 233425577 ton
## Maximo outlier: 233425577 ton

6 Conclusión

conclusion <- sprintf(
"La variable EMIS_CO2 registra las emisiones totales de CO2 en toneladas por estado administrativo (STATE) para 2018. Cada instalación 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 asimetría (%s, As=%.4f) indica que la mayoría de los estados registran emisiones bajas mientras pocos estados concentran valores muy altos. El CV de %.2f%% (%s) confirma heterogeneidad entre estados. Se identificaron %d valores atípicos (%.2f%% del total), correspondientes a estados con alta densidad de instalaciones mineras activas, lo que respalda la hipótesis de correlación positiva entre actividad minera y emisiones de CO2 del proyecto.",
min(EMIS_CO2), max(EMIS_CO2), media, mediana, interpretacion_asimetria, asimetria,
cv, interpretacion_cv, n_outliers, porc_outliers
)
print(conclusion)
## [1] "La variable EMIS_CO2 registra las emisiones totales de CO2 en toneladas por estado administrativo (STATE) para 2018. Cada instalación 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 asimetría (Asimetría positiva (sesgo a la derecha), As=2.4657) indica que la mayoría de los estados registran emisiones bajas mientras pocos estados concentran valores muy altos. El CV de 62.62% (ALTA (CV >= 30%)) confirma heterogeneidad entre estados. Se identificaron 116 valores atípicos (3.97% del total), correspondientes a estados con alta densidad de instalaciones mineras activas, lo que respalda la hipótesis de correlación positiva entre actividad minera y emisiones de CO2 del proyecto."