Variable Original:
CO2 total emissions (tons) by state
Nombre Variable: EMIS_CO2
library(dplyr)
library(gt)
library(e1071)
datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset.csv",
sep = ";", stringsAsFactors = FALSE)
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)
min_co2 <- min(EMIS_CO2)
max_co2 <- max(EMIS_CO2)
R <- max_co2 - min_co2
# Número de intervalos mediante la Regla de Sturges
k_detallado <- ceiling(1 + 3.322 * log10(n))
# Amplitud de clase
A <- R / k_detallado
cat("Número de intervalos (k):", k_detallado, "\n")
## Número de intervalos (k): 13
# Generación de límites de intervalo
Li <- seq(from = min_co2, to = max_co2 - A, by = A)
Ls <- c(seq(from = min_co2 + A, to = max_co2 - A, by = A), max_co2)
# Marcas de clase (MC)
MC <- round((Li + Ls) / 2, 2)
# Frecuencias absolutas (ni)
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
if (i < length(Li)) {
# Intervalo abierto por la derecha: [Li, Ls)
ni[i] <- sum(EMIS_CO2 >= Li[i] & EMIS_CO2 < Ls[i])
} else {
# Último intervalo cerrado: [Li, Ls]
ni[i] <- sum(EMIS_CO2 >= Li[i] & EMIS_CO2 <= Ls[i])
}
}
# Frecuencias relativas y acumuladas
hi <- (ni / n) * 100
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))
# Formatear la columna Intervalo
Intervalo <- paste0("[", round(Li, 2), " - ", round(Ls, 2), ")")
Intervalo[length(Intervalo)] <- paste0("[", round(Li[length(Li)], 2), " - ",
round(Ls[length(Ls)], 2), "]")
# Vector completo de breaks (incluye el límite superior del último
# intervalo) para usar directamente en hist()
breaks_hist <- c(Li, max_co2)
TDF_co2 <- data.frame(
Intervalo = Intervalo,
MC = MC,
ni = ni,
hi = round(hi, 2),
Ni_ascendente = Ni_asc,
Ni_descendente = Ni_desc,
Hi_ascendente = round(Hi_asc, 2),
Hi_descendente = round(Hi_desc, 2)
)
totales <- data.frame(
Intervalo = "Totales", MC = "-", ni = sum(ni), hi = round(sum(hi), 2),
Ni_ascendente = "-", Ni_descendente = "-",
Hi_ascendente = "-", Hi_descendente = "-"
)
TDF_co2_completa <- rbind(TDF_co2, totales)
TDF_co2_completa %>%
gt() %>%
tab_header(
title = md("Tabla Nro. 1"),
subtitle = md("Distribución de frecuencia de Emisiones de CO2 (EMIS_CO2) para el análisis de la actividad minera y emisión de gases.")
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Intervalo == "Totales")
) %>%
tab_source_note(source_note = md("Autor: Luis Cruz"))
| Tabla Nro. 1 | |||||||
| Distribución de frecuencia de Emisiones de CO2 (EMIS_CO2) para el análisis de la actividad minera y emisión de gases. | |||||||
| Intervalo | MC | ni | hi | Ni_ascendente | Ni_descendente | Hi_ascendente | Hi_descendente |
|---|---|---|---|---|---|---|---|
| [49075.86 - 18001114.42) | 9025095.14 | 174 | 5.96 | 174 | 2921 | 5.96 | 100 |
| [18001114.42 - 35953152.97) | 26977133.7 | 468 | 16.02 | 642 | 2747 | 21.98 | 94.04 |
| [35953152.97 - 53905191.53) | 44929172.25 | 335 | 11.47 | 977 | 2279 | 33.45 | 78.02 |
| [53905191.53 - 71857230.09) | 62881210.81 | 1210 | 41.42 | 2187 | 1944 | 74.87 | 66.55 |
| [71857230.09 - 89809268.64) | 80833249.37 | 533 | 18.25 | 2720 | 734 | 93.12 | 25.13 |
| [89809268.64 - 107761307.2) | 98785287.92 | 62 | 2.12 | 2782 | 201 | 95.24 | 6.88 |
| [107761307.2 - 125713345.76) | 116737326.48 | 23 | 0.79 | 2805 | 139 | 96.03 | 4.76 |
| [125713345.76 - 143665384.32) | 134689365.04 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [143665384.32 - 161617422.87) | 152641403.59 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [161617422.87 - 179569461.43) | 170593442.15 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [179569461.43 - 197521499.99) | 188545480.71 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [197521499.99 - 215473538.54) | 206497519.26 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [215473538.54 - 233425577.1] | 224449557.82 | 116 | 3.97 | 2921 | 116 | 100 | 3.97 |
| Totales | - | 2921 | 100.00 | - | - | - | - |
| Autor: Luis Cruz | |||||||
brks2 <- pretty(EMIS_CO2, n = 10)
Li2 <- brks2[-length(brks2)]
Ls2 <- brks2[-1]
MC2 <- (Li2 + Ls2) / 2
ni2 <- numeric(length(Li2))
for (i in 1:length(Li2)) {
if (i < length(Li2)) {
ni2[i] <- sum(EMIS_CO2 >= Li2[i] & EMIS_CO2 < Ls2[i])
} else {
ni2[i] <- sum(EMIS_CO2 >= Li2[i] & EMIS_CO2 <= Ls2[i])
}
}
hi2 <- (ni2 / n) * 100
Ni2_asc <- cumsum(ni2)
Ni2_desc <- rev(cumsum(rev(ni2)))
Hi2_asc <- cumsum(hi2)
Hi2_desc <- rev(cumsum(rev(hi2)))
Intervalo2 <- paste0("[", format(round(Li2, 0), big.mark = ","), " - ",
format(round(Ls2, 0), big.mark = ","), ")")
Intervalo2[length(Intervalo2)] <- paste0(
"[", format(round(Li2[length(Li2)], 0), big.mark = ","), " - ",
format(round(Ls2[length(Ls2)], 0), big.mark = ","), "]")
TDF_co2_10 <- data.frame(
Intervalo = Intervalo2,
MC = round(MC2, 0),
ni = ni2,
hi = round(hi2, 2),
Ni_ascendente = Ni2_asc,
Ni_descendente = Ni2_desc,
Hi_ascendente = round(Hi2_asc, 2),
Hi_descendente = round(Hi2_desc, 2)
)
totales2 <- data.frame(
Intervalo = "Totales", MC = "-", ni = sum(ni2), hi = round(sum(hi2), 2),
Ni_ascendente = "-", Ni_descendente = "-",
Hi_ascendente = "-", Hi_descendente = "-"
)
TDF_co2_10_completa <- rbind(TDF_co2_10, totales2)
TDF_co2_10_completa %>%
gt() %>%
tab_header(
title = md("Tabla Nro. 2"),
subtitle = md("Distribución de frecuencia de Emisiones de CO2 (EMIS_CO2), intervalos reducidos.")
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Intervalo == "Totales")
) %>%
tab_source_note(source_note = md("Autor: Luis Cruz"))
| Tabla Nro. 2 | |||||||
| Distribución de frecuencia de Emisiones de CO2 (EMIS_CO2), intervalos reducidos. | |||||||
| Intervalo | MC | ni | hi | Ni_ascendente | Ni_descendente | Hi_ascendente | Hi_descendente |
|---|---|---|---|---|---|---|---|
| [0.0e+00 - 2.0e+07) | 1e+07 | 209 | 7.16 | 209 | 2921 | 7.16 | 100 |
| [2.0e+07 - 4.0e+07) | 3e+07 | 556 | 19.03 | 765 | 2712 | 26.19 | 92.84 |
| [4.0e+07 - 6.0e+07) | 5e+07 | 346 | 11.85 | 1111 | 2156 | 38.03 | 73.81 |
| [6.0e+07 - 8.0e+07) | 7e+07 | 1109 | 37.97 | 2220 | 1810 | 76 | 61.97 |
| [8.0e+07 - 1.0e+08) | 9e+07 | 562 | 19.24 | 2782 | 701 | 95.24 | 24 |
| [1.0e+08 - 1.2e+08) | 1.1e+08 | 23 | 0.79 | 2805 | 139 | 96.03 | 4.76 |
| [1.2e+08 - 1.4e+08) | 1.3e+08 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [1.4e+08 - 1.6e+08) | 1.5e+08 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [1.6e+08 - 1.8e+08) | 1.7e+08 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [1.8e+08 - 2.0e+08) | 1.9e+08 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [2.0e+08 - 2.2e+08) | 2.1e+08 | 0 | 0.00 | 2805 | 116 | 96.03 | 3.97 |
| [2.2e+08 - 2.4e+08] | 2.3e+08 | 116 | 3.97 | 2921 | 116 | 100 | 3.97 |
| Totales | - | 2921 | 100.00 | - | - | - | - |
| Autor: Luis Cruz | |||||||
Histograma general
par(mar = c(5, 5, 4, 2))
hist(EMIS_CO2, breaks = breaks_hist,
main = "Gráfica Nro. 1\nDistribución de EMIS_CO2 en instalaciones\nmineras de Estados Unidos",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Cantidad",
col = "#2E75B6", border = "white",
cex.main = 0.9)
Histograma con relación al todo
par(mar = c(5, 5, 4, 2))
hist(EMIS_CO2, breaks = breaks_hist,
main = "Gráfica Nro. 2\nDistribución de EMIS_CO2 en instalaciones\nmineras de Estados Unidos",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Cantidad",
col = "#2E75B6", border = "white",
ylim = c(0, n),
cex.main = 0.9)
Histograma porcentual general
par(mar = c(5, 5, 4, 2))
barplot(hi2,
names.arg = round(MC2, 0),
main = "Gráfica Nro. 3\nDistribución porcentual de EMIS_CO2 en instalaciones\nmineras de Estados Unidos",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Porcentaje (%)",
col = "#AEC6E8", border = "black",
las = 2, cex.names = 0.7,
ylim = c(0, max(hi2) + 5))
Histograma porcentual con relación al todo
par(mar = c(5, 5, 4, 2))
barplot(hi2,
names.arg = round(MC2, 0),
main = "Gráfica Nro. 4\nDistribución porcentual de EMIS_CO2 en instalaciones\nmineras de Estados Unidos",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Porcentaje (%)",
col = "#AEC6E8", border = "black",
las = 2, cex.names = 0.7,
ylim = c(0, 100))
options(scipen = 999)
boxplot(EMIS_CO2,
horizontal = TRUE,
main = "Gráfica Nro. 5\nDistribución de EMIS_CO2 en instalaciones\nmineras de Estados Unidos",
xlab = "Emisiones de CO2 (toneladas)",
col = "turquoise3",
pch = 1)
par(mar = c(5, 5, 4, 2))
plot(MC2, Ni2_asc,
type = "b", pch = 16, lwd = 2, col = "turquoise3",
main = "Gráfica Nro. 6\nOjiva ascendente y descendente de\nEMIS_CO2",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Cantidad",
ylim = c(0, n))
lines(MC2, Ni2_desc, type = "b", pch = 16, lwd = 1, col = "black")
legend("right", legend = c("Ascendente","Descendente"),
col = c("turquoise3","black"), lwd = 2, pch = 16, bty = "n", cex = 0.8)
grid()
box()
par(mar = c(5, 5, 4, 2))
plot(MC2, Hi2_asc,
type = "b", pch = 16, lwd = 2, col = "turquoise3",
main = "Gráfica Nro. 7\nOjiva porcentual ascendente y descendente de\nEMIS_CO2",
xlab = "Emisiones de CO2 (toneladas)", ylab = "Porcentaje (%)",
ylim = c(0, 100))
lines(MC2, Hi2_desc, type = "b", pch = 16, lwd = 1, col = "black")
legend("right", legend = c("Ascendente","Descendente"),
col = c("turquoise3","black"), lwd = 2, pch = 16, bty = "n", cex = 0.8)
grid()
box()
X <- mean(EMIS_CO2)
Me <- median(EMIS_CO2)
# Moda: marca de clase del intervalo con mayor ni (tabla reducida)
moda_idx <- which.max(ni2)
Mo <- round(MC2[moda_idx], 2)
desv <- sd(EMIS_CO2)
V <- var(EMIS_CO2)
CV <- round((desv / X) * 100, 2)
As <- skewness(EMIS_CO2, type = 2)
K <- kurtosis(EMIS_CO2, type = 2)
# Outliers (regla de Tukey, 1.5*IQR) — se usan en la conclusión
q1 <- quantile(EMIS_CO2, 0.25)
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)
Tabla_indicadores <- data.frame(
Variable = "EMIS_CO2",
Rango = paste0("[", round(min_co2, 2), " - ", round(max_co2, 2), "]"),
Media = round(X, 2),
Mediana = round(Me, 2),
Moda = Mo,
DesvEst = round(desv, 2),
CV = CV,
Asimetria = round(As, 4),
Curtosis = round(K, 4)
)
Tabla_indicadores %>%
gt() %>%
cols_label(
Variable = "Variable", Rango = "Rango",
Media = "Media (X)", Mediana = "Mediana (Me)", Moda = "Moda (Mo)",
DesvEst = "Desv. Est. (sd)", CV = "CV (%)",
Asimetria = "Asimetría (As)", Curtosis = "Curtosis (K)"
) %>%
tab_header(
title = md("Tabla Nro. 3"),
subtitle = md("Indicadores Estadísticos de EMIS_CO2 para el análisis de la actividad minera y emisión de gases.")
) %>%
tab_spanner(label = "Tendencia Central", columns = c(Media, Mediana, Moda)) %>%
tab_spanner(label = "Dispersión", columns = c(DesvEst, CV)) %>%
tab_spanner(label = "Forma", columns = c(Asimetria, Curtosis)) %>%
cols_align(align = "center", columns = everything()) %>%
tab_source_note(source_note = md("Autor: Luis Cruz"))
| Tabla Nro. 3 | ||||||||
| Indicadores Estadísticos de EMIS_CO2 para el análisis de la actividad minera y emisión de gases. | ||||||||
| Variable | Rango |
Tendencia Central
|
Dispersión
|
Forma
|
||||
|---|---|---|---|---|---|---|---|---|
| Media (X) | Mediana (Me) | Moda (Mo) | Desv. Est. (sd) | CV (%) | Asimetría (As) | Curtosis (K) | ||
| EMIS_CO2 | [49075.86 - 233425577.1] | 65592227 | 65429381 | 70000000 | 41074759 | 62.62 | 2.4682 | 8.4536 |
| Autor: Luis Cruz | ||||||||
En conclusión:
La variable EMIS_CO2 fluctúa entre un mínimo de 49075.86 y un máximo de 233425577.1 toneladas, con una media de 65592226.5 y una desviación estándar de 41074759.24. Debido a un coeficiente de variación del 62.62%, se concluye que es un conjunto de valores heterogéneo entre estados, con una distribución de asimetría positiva (2.4682). Se han detectado 116 valores atípicos (3.97% del total), correspondientes a los estados con mayor concentración de actividad minera.