Variable Original: AREA_
Nombre Variable: COD_AREA
Tipo: Cualitativa Nominal
library(dplyr)
library(gt)
library(knitr)
datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset.csv",
sep = ";", stringsAsFactors = FALSE)
Se selecciona la variable AREA_. A pesar de su nombre,
esta columna no mide superficie/área geográfica: sus
valores corresponden a códigos de área telefónicos de
Estados Unidos (ej. 215, 304, 570), por lo que se clasifica como
cualitativa nominal y no como cuantitativa continua.
Adicionalmente, la variable presenta un 83.2% de valores
vacíos (2494 de 2996 registros), por lo que el análisis se
realiza únicamente sobre los 502 registros que sí cuentan con dato. De
los 105 códigos de área distintos presentes, el Top 15 concentra el
56.77% de esos registros, por lo que se agrupan en Top 15 + “Otros
Códigos” para la tabla, y los gráficos se construyen únicamente con el
Top 15 (misma lógica aplicada en CITY y
MCITY).
COD_AREA <- trimws(as.character(datos$AREA_))
COD_AREA <- COD_AREA[!is.na(COD_AREA) & COD_AREA != ""]
n <- length(COD_AREA)
frecuencias <- sort(table(COD_AREA), decreasing = TRUE)
top_n <- 15
top_codigos <- names(frecuencias)[1:top_n]
COD_AREA_agrupada <- ifelse(COD_AREA %in% top_codigos, COD_AREA, "Otros Códigos")
# --- Tabla completa: Top 15 + "Otros Códigos" ---
TDF_Area <- as.data.frame(table(COD_AREA_agrupada))
colnames(TDF_Area) <- c("Codigo", "ni")
ni <- TDF_Area$ni
hi <- round(ni / sum(ni) * 100, 2)
# Ajuste matemático para forzar que la suma de 'hi' sea exactamente 100
diferencia <- 100 - sum(hi)
if (diferencia != 0) {
pos_max <- which.max(ni)
hi[pos_max] <- hi[pos_max] + diferencia
}
TDF_Area <- data.frame(Codigo = TDF_Area$Codigo, ni, hi) %>%
arrange(desc(ni))
# Se asegura que "Otros Códigos" quede al final de la tabla
TDF_Area <- TDF_Area %>%
arrange(Codigo == "Otros Códigos", desc(ni))
# Fila de resumen (TOTAL)
Summary <- data.frame(Codigo = "TOTAL", ni = sum(TDF_Area$ni), hi = sum(TDF_Area$hi))
TDF_Area_suma <- rbind(TDF_Area, Summary)
colnames(TDF_Area_suma) <- c("Codigo", "ni", "hi(%)")
# --- Solo Top 15 (sin "Otros Códigos"), usado únicamente para los gráficos ---
TDF_Top15 <- TDF_Area %>%
filter(Codigo != "Otros Códigos") %>%
arrange(desc(ni))
TDF_Area_suma %>%
gt() %>%
tab_header(
title = md("Tabla Nro. 1"),
subtitle = md("Distribución de frecuencias de la variable Código de Área (AREA_): Top 15 códigos con mayor frecuencia y el resto agrupado en 'Otros Códigos', para el análisis de la actividad minera y emisión de gases en Estados Unidos.")
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = Codigo == "TOTAL")
) %>%
tab_source_note(source_note = md("Autor: Luis Cruz "))
| Tabla Nro. 1 | ||
| Distribución de frecuencias de la variable Código de Área (AREA_): Top 15 códigos con mayor frecuencia y el resto agrupado en ‘Otros Códigos’, para el análisis de la actividad minera y emisión de gases en Estados Unidos. | ||
| Codigo | ni | hi(%) |
|---|---|---|
| 304 | 48 | 9.56 |
| 334 | 34 | 6.77 |
| 706 | 26 | 5.18 |
| 303 | 23 | 4.58 |
| 307 | 23 | 4.58 |
| 970 | 21 | 4.18 |
| 276 | 17 | 3.39 |
| 606 | 16 | 3.19 |
| 704 | 14 | 2.79 |
| 828 | 14 | 2.79 |
| 320 | 11 | 2.19 |
| 478 | 10 | 1.99 |
| 724 | 10 | 1.99 |
| 270 | 9 | 1.79 |
| 330 | 9 | 1.79 |
| Otros Códigos | 217 | 43.24 |
| TOTAL | 502 | 100.00 |
| Autor: Luis Cruz | ||
Nota: los siguientes gráficos se construyen únicamente con los 15 códigos de mayor frecuencia (sin la categoría “Otros Códigos”), ya que esta última domina visualmente el gráfico sin aportar información útil.
par(mar = c(6, 5, 4, 2))
barplot(TDF_Top15$ni,
names.arg = TDF_Top15$Codigo,
main = "Gráfica Nro. 1\nTop 15 códigos de área con mayor frecuencia\nen instalaciones mineras de Estados Unidos",
xlab = "", ylab = "Cantidad (ni)",
col = "#2E75B6",
las = 2, cex.names = 0.9)
par(mar = c(6, 5, 4, 2))
barplot(TDF_Top15$hi,
names.arg = TDF_Top15$Codigo,
main = "Gráfica Nro. 2\nTop 15 códigos de área: porcentaje sobre\nel total de registros con dato",
xlab = "", ylab = "Porcentaje (%)",
col = "#AEC6E8",
las = 2, cex.names = 0.9,
ylim = c(0, max(TDF_Top15$hi) + 2))
Este gráfico muestra la distribución relativa entre los 15 códigos principales (es decir, qué proporción del Top 15 corresponde a cada uno), no su porcentaje sobre el total de registros (ese dato está en la Tabla Nro. 1).
colores <- c("#1f78b4","#33a02c","#e31a1c","#ff7f00",
"#6a3d9a","#b15928","#a6cee3","#b2df8a",
"#fb9a99","#fdbf6f","#cab2d6","#ffff99",
"#8dd3c7","#bc80bd","#ccebc5")
hi_relativo <- round(TDF_Top15$ni / sum(TDF_Top15$ni) * 100, 2)
layout(matrix(1:2, nrow = 1), widths = c(1, 1.8))
par(mar = c(2, 2, 4, 1))
pie(hi_relativo,
labels = NA,
col = colores[1:nrow(TDF_Top15)],
radius = 0.9,
main = "Gráfica Nro. 3\nDistribución relativa entre el\nTop 15 de códigos de área")
par(mar = c(2, 1, 4, 1))
plot.new()
legend("left",
legend = paste0(TDF_Top15$Codigo, " (", hi_relativo, "%)"),
fill = colores[1:nrow(TDF_Top15)],
title = "CÓDIGO DE ÁREA",
bty = "n", cex = 0.95)
# Cálculo de la moda (Mo): el código con mayor frecuencia (ni)
Moda_row <- TDF_Top15[which.max(TDF_Top15$ni), ]
Mo <- as.character(Moda_row$Codigo[1])
tabla_indicadores <- data.frame(
"Variable" = "Código de Área (AREA_)",
"Rango" = "-",
"X" = "-",
"Me" = "-",
"Mo" = Mo,
"V" = "-",
"Sd" = "-",
"Cv" = "-",
"As" = "-",
"K" = "-",
"Valores Atípicos" = "-"
)
kable(tabla_indicadores, align = 'c',
caption = "Indicadores estadísticos de la variable Código de Área (AREA_)")
| Variable | Rango | X | Me | Mo | V | Sd | Cv | As | K | Valores.Atípicos |
|---|---|---|---|---|---|---|---|---|---|---|
| Código de Área (AREA_) | - | - | - | 304 | - | - | - | - | - | - |
El valor más frecuente de la variable Código de Área es 304, con 48 instalaciones (9.56% del total).