Variable Original: MCITY

Nombre Variable: CIUDAD_MINA

Tipo: Cualitativa Nominal


0.- Carga de librerías

library(dplyr)
library(gt)
library(knitr)

1.- Carga de datos

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

2.- Selección de la variable

Se selecciona la variable MCITY, que corresponde a la ciudad de la dirección postal registrada para la mina (distinta de CITY, que es la ciudad donde está físicamente ubicada la instalación). Al analizarla se encontró que el dataset contiene 1226 ciudades distintas (con 75 valores vacíos), de las cuales el 60.6% aparece una única vez. Por esta razón, se optó por presentar la tabla completa agrupando las 15 ciudades con mayor frecuencia más una categoría “Otras Ciudades” (para mantener el resumen tabular manejable), pero los gráficos se construyen únicamente con las 15 ciudades de mayor concentración, ya que incluir “Otras Ciudades” no aporta información visual (siempre domina el gráfico sin mostrar nada relevante).

CIUDAD_MINA <- trimws(as.character(datos$MCITY))
CIUDAD_MINA <- CIUDAD_MINA[!is.na(CIUDAD_MINA) & CIUDAD_MINA != ""]
n <- length(CIUDAD_MINA)

frecuencias <- sort(table(CIUDAD_MINA), decreasing = TRUE)

top_n <- 15
top_ciudades <- names(frecuencias)[1:top_n]

CIUDAD_MINA_agrupada <- ifelse(CIUDAD_MINA %in% top_ciudades, CIUDAD_MINA, "Otras Ciudades")

# Indicadores de dispersión geográfica (para la sección de conclusiones)
n_ciudades_unicas   <- length(frecuencias)
n_ciudades_1vez     <- sum(frecuencias == 1)
pct_ciudades_1vez   <- round(n_ciudades_1vez / n_ciudades_unicas * 100, 1)
pct_registros_1vez  <- round(n_ciudades_1vez / n * 100, 1)

3.- Frecuencia

# --- Tabla completa: Top 15 + "Otras Ciudades" ---
TDF_Ciudad <- as.data.frame(table(CIUDAD_MINA_agrupada))
colnames(TDF_Ciudad) <- c("Ciudad", "ni")

ni <- TDF_Ciudad$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_Ciudad <- data.frame(Ciudad = TDF_Ciudad$Ciudad, ni, hi) %>%
  arrange(desc(ni))

# Se asegura que "Otras Ciudades" quede al final de la tabla
TDF_Ciudad <- TDF_Ciudad %>%
  arrange(Ciudad == "Otras Ciudades", desc(ni))

# Fila de resumen (TOTAL)
Summary <- data.frame(Ciudad = "TOTAL", ni = sum(TDF_Ciudad$ni), hi = sum(TDF_Ciudad$hi))
TDF_Ciudad_suma <- rbind(TDF_Ciudad, Summary)

colnames(TDF_Ciudad_suma) <- c("Ciudad", "ni", "hi(%)")

# --- Solo Top 15 (sin "Otras Ciudades"), usado únicamente para los gráficos ---
TDF_Top15 <- TDF_Ciudad %>%
  filter(Ciudad != "Otras Ciudades") %>%
  arrange(desc(ni))

4.- Tabla de distribución de frecuencias

TDF_Ciudad_suma %>%
  gt() %>%
  tab_header(
    title    = md("Tabla Nro. 1"),
    subtitle = md("Distribución de frecuencias de la variable Ciudad Mina (MCITY): Top 15 ciudades con mayor concentración de instalaciones mineras y el resto agrupado en 'Otras Ciudades', 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 = Ciudad == "TOTAL")
  ) %>%
  tab_source_note(source_note = md("Autor: Luis Cruz"))
Tabla Nro. 1
Distribución de frecuencias de la variable Ciudad Mina (MCITY): Top 15 ciudades con mayor concentración de instalaciones mineras y el resto agrupado en ‘Otras Ciudades’, para el análisis de la actividad minera y emisión de gases en Estados Unidos.
Ciudad ni hi(%)
PIKEVILLE 57 1.95
BECKLEY 38 1.30
ELBERTON 34 1.16
STANVILLE 27 0.92
GRUNDY 23 0.79
MADISON 22 0.75
ASHLAND 21 0.72
HAZARD 21 0.72
WISE 21 0.72
JASPER 20 0.68
KITTANNING 20 0.68
COEBURN 17 0.58
COSHOCTON 17 0.58
LONDON 17 0.58
MIDDLESBORO 17 0.58
Otras Ciudades 2549 87.29
TOTAL 2921 100.00
Autor: Luis Cruz

5.- Gráficos de distribución de frecuencia

Nota: los siguientes gráficos se construyen únicamente con las 15 ciudades de mayor concentración (sin la categoría “Otras Ciudades”), ya que esta última domina visualmente el gráfico sin aportar información útil, dado el altísimo nivel de dispersión geográfica de la variable (ver Conclusiones).

5.1- Diagrama de cantidad

par(mar = c(8, 5, 4, 2))
barplot(TDF_Top15$ni,
        names.arg = TDF_Top15$Ciudad,
        main = "Gráfica Nro. 1\nTop 15 ciudades (dirección postal de la mina)\ncon mayor concentración de instalaciones",
        xlab = "", ylab = "Cantidad (ni)",
        col = "#2E75B6",
        las = 2, cex.names = 0.9)

5.2- Diagramas procentuales

par(mar = c(8, 5, 4, 2))
barplot(TDF_Top15$hi,
        names.arg = TDF_Top15$Ciudad,
        main = "Gráfica Nro. 2\nTop 15 ciudades: porcentaje sobre\nel total de instalaciones mineras",
        xlab = "", ylab = "Porcentaje (%)",
        col = "#AEC6E8",
        las = 2, cex.names = 0.9,
        ylim = c(0, max(TDF_Top15$hi) + 2))

5.3- Diagrama circular

Este gráfico muestra la distribución relativa entre las 15 ciudades principales (es decir, qué proporción del Top 15 corresponde a cada una), no su porcentaje sobre el total del dataset (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 ciudades")

par(mar = c(2, 1, 4, 1))
plot.new()
legend("left",
       legend = paste0(TDF_Top15$Ciudad, " (", hi_relativo, "%)"),
       fill = colores[1:nrow(TDF_Top15)],
       title = "CIUDAD MINA",
       bty = "n", cex = 0.95)

6.- Indicadores estadísticos

# Cálculo de la moda (Mo): la ciudad con mayor frecuencia (ni)
Moda_row <- TDF_Top15[which.max(TDF_Top15$ni), ]
Mo <- as.character(Moda_row$Ciudad[1])

tabla_indicadores <- data.frame(
  "Variable" = "Ciudad Mina (MCITY)",
  "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 Ciudad Mina (MCITY)")
Indicadores estadísticos de la variable Ciudad Mina (MCITY)
Variable Rango X Me Mo V Sd Cv As K Valores.Atípicos
Ciudad Mina (MCITY) - - - PIKEVILLE - - - - - -

7.- Conclusiones

En conclusión:

El valor más frecuente de la variable Ciudad Mina es PIKEVILLE, con 57 instalaciones (1.95% del total).