Variable Original: y

Nombre Variable: LAT

Tipo: Cuantitativa Continua

Escala: Razón

Justificación de la variable: La latitud geográfica permite identificar la distribución espacial norte-sur de las instalaciones mineras en EE.UU. Su análisis revela en qué zonas climáticas se concentra la actividad minera, complementando el análisis de correlación con las emisiones de CO2, NOx y CH4.


1 Carga de Datos y Librerías

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

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

2 Extraer y Limpiar la Variable

LAT <- as.numeric(gsub(",", ".", datos$y))
## Warning: NAs introducidos por coerción
LAT <- LAT[!is.na(LAT)]
n <- length(LAT)

cat("n validos :", n, "\n")
## n validos : 2993
cat("Min       :", round(min(LAT), 3), "grados\n")
## Min       : 18.375 grados
cat("Max       :", round(max(LAT), 3), "grados\n")
## Max       : 68.065 grados

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

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

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, 3), n, k, am)
)

parametros_sturges %>%
  gt() %>%
  tab_header(title = md("**Tabla 1**"),
             subtitle = "Parámetros de Sturges para LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 1
Parámetros de Sturges para LAT
Parametro Valor
Rango (R) 49.69
Número de datos (n) 2993.00
Número de intervalos (k) 13.00
Amplitud de clase (A) 3.80
Autor: Grupo 4 - Minas
breaks <- seq(min(LAT), max(LAT) + 1e-6, length.out = k + 1)

cortes <- cut(LAT, 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, 3)

TDF <- data.frame(
  Desde = round(breaks[-length(breaks)], 3),
  Hasta = round(breaks[-1], 3),
  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 — Latitud (y)")
  ) %>%
  cols_label(
    Desde = "Desde (°)", Hasta = "Hasta (°)", 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 — Latitud (y)
Desde (°) Hasta (°) Marca Clase fi fri (%) Ni Asc. Ni Desc. Hi Asc. % Hi Desc. %
18.375 22.198 20.286 5 0.17 5 2993 0.17 100.00
22.198 26.020 24.109 0 0.00 5 2988 0.17 99.83
26.020 29.842 27.931 38 1.27 43 2988 1.44 99.83
29.842 33.664 31.753 257 8.59 300 2950 10.02 98.56
33.664 37.487 35.576 1008 33.68 1308 2693 43.70 89.98
37.487 41.309 39.398 1262 42.17 2570 1685 85.87 56.30
41.309 45.131 43.220 314 10.49 2884 423 96.36 14.13
45.131 48.954 47.042 89 2.97 2973 109 99.33 3.64
48.954 52.776 50.865 0 0.00 2973 20 99.33 0.67
52.776 56.598 54.687 1 0.03 2974 20 99.37 0.67
56.598 60.421 58.509 1 0.03 2975 19 99.40 0.63
60.421 64.243 62.332 4 0.13 2979 18 99.53 0.60
64.243 68.065 66.154 14 0.47 2993 14 100.00 0.47
Autor: Grupo 4 - Minas

4 Gráficas de Distribución de Cantidad

par(mar = c(5, 5, 4, 2))
hist(LAT, breaks = breaks, col = "#FF0000", border = "white",
     main = "Gráfica 1: Frecuencia Absoluta Global — Latitud (y)",
     xlab = "Latitud (°)", ylab = "Frecuencia absoluta")

LAT_z <- LAT[LAT >= 30 & LAT <= 50]
if (length(LAT_z) > 1) {
  k_z  <- ceiling(1 + 3.322 * log10(length(LAT_z)))
  br_z <- seq(min(LAT_z), max(LAT_z), length.out = k_z + 1)

  par(mar = c(5, 5, 4, 2))
  hist(LAT_z, breaks = br_z, col = "#FF0000", border = "white",
       main = "Gráfica 2: Rango Principal — Latitud (30° a 50°)",
       xlab = "Latitud (°)", ylab = "Frecuencia absoluta")

  hist(LAT_z, breaks = br_z, col = "#FF0000", border = "white",
       freq = FALSE,
       main = "Gráfica 3: Frecuencia Relativa Local — Latitud",
       xlab = "Latitud (°)", ylab = "Densidad")
}

par(mar = c(5, 5, 4, 2))
hist(LAT, breaks = breaks, col = "#FF0000", border = "white",
     freq = FALSE,
     main = "Gráfica 4: Frecuencia Relativa Global — Latitud (y)",
     xlab = "Latitud (°)", ylab = "Densidad")

h <- hist(LAT, breaks = breaks, col = "#FF0000", border = "white",
          main = "Gráfica 5: Histograma con Polígono de Frecuencias — Latitud",
          xlab = "Latitud (°)", ylab = "Frecuencia absoluta")
lines(h$mids, h$counts, type = "o", pch = 16, col = "black", 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 — Latitud (y)",
     xlab = "Latitud (°)", ylab = "Frecuencia acumulada")
lines(ojiva$mc, ojiva$Nd, type = "b", col = "#FF0000", pch = 16, lwd = 1.5)
legend("right", legend = c("Ascendente","Descendente"),
       col = c("black","#FF0000"), lwd = 2, pch = 16, bty = "n")

boxplot(LAT, horizontal = TRUE, col = "#FFB3B3", border = "#7B0000",
        main = "Gráfica 7: Diagrama de Caja — Latitud (y)",
        xlab = "Latitud (°)")

hist(LAT, breaks = breaks, col = "lightgray", border = "white",
     main = "Gráfica 8: Histograma con Diagrama de Caja Superpuesto — Latitud",
     xlab = "Latitud (°)", ylab = "Frecuencia absoluta")
boxplot(LAT, horizontal = TRUE, add = TRUE,
        at = par("usr")[4] * 0.08, boxwex = par("usr")[4] * 0.06,
        col = rgb(1, 0, 0, 0.3), border = "#7B0000", xaxt = "n", yaxt = "n")

5 Modelos Probabilísticos por Agrupación Geográfica

La latitud se agrupó en 3 zonas geográficas, cada una ajustada a un modelo probabilístico distinto según su comportamiento:

# Agrupacion 1: 18° a 35° — Modelo Exponencial
g1     <- LAT[LAT >= 18 & LAT < 35]
g1_pos <- g1 - 18 + 0.001
k1     <- ceiling(1 + 3.322 * log10(length(g1)))
br1    <- seq(min(g1), max(g1), length.out = k1 + 1)
lam    <- 1 / mean(g1_pos)

cat("--- Agrupacion 1: 18 a 35 (Sur y Puerto Rico) ---\n")
## --- Agrupacion 1: 18 a 35 (Sur y Puerto Rico) ---
cat("n =", length(g1), "| lambda =", round(lam, 4), "\n")
## n = 461 | lambda = 0.0693
par(mar = c(5, 5, 4, 2))
hist(g1, breaks = br1, col = "#FFC7CE", border = "white", freq = FALSE,
     main = "Gráfica 9: Modelo Exponencial — Latitud (18° a 35°)",
     xlab = "Latitud (°)", ylab = "Densidad")
curve(dexp(x - 18 + 0.001, rate = lam), add = TRUE, col = "red", lwd = 2)
legend("topright", legend = c("Histograma","Modelo exponencial"),
       fill = c("#FFC7CE", NA), lty = c(NA,1),
       col = c("black","red"), lwd = c(NA,2), border = c("black",NA), bty = "n")

# Agrupacion 2: 35° a 45° — Modelo Normal
g2   <- LAT[LAT >= 35 & LAT < 45]
mu2  <- mean(g2)
sig2 <- sd(g2)
k2   <- ceiling(1 + 3.322 * log10(length(g2)))
br2  <- seq(min(g2), max(g2), length.out = k2 + 1)

cat("--- Agrupacion 2: 35 a 45 (Centro y Appalachia) ---\n")
## --- Agrupacion 2: 35 a 45 (Centro y Appalachia) ---
cat("n =", length(g2), "| mu =", round(mu2,3), "| sigma =", round(sig2,3), "\n")
## n = 2416 | mu = 38.798 | sigma = 2.191
par(mar = c(5, 5, 4, 2))
hist(g2, breaks = br2, col = "#C6EFCE", border = "white", freq = FALSE,
     main = "Gráfica 10: Modelo Normal — Latitud (35° a 45°)",
     xlab = "Latitud (°)", ylab = "Densidad")
curve(dnorm(x, mean = mu2, sd = sig2), add = TRUE, col = "darkgreen", lwd = 2)
legend("topright", legend = c("Histograma","Modelo normal"),
       fill = c("#C6EFCE", NA), lty = c(NA,1),
       col = c("black","darkgreen"), lwd = c(NA,2), border = c("black",NA), bty = "n")

# Agrupacion 3: 45° a 68° — Modelo Gamma
g3     <- LAT[LAT >= 45 & LAT <= 68]
g3_pos <- g3 - 45 + 0.001
k3     <- ceiling(1 + 3.322 * log10(length(g3)))
br3    <- seq(min(g3), max(g3), length.out = k3 + 1)
fg     <- fitdistr(g3_pos, "gamma")
sh     <- fg$estimate["shape"]
rt     <- fg$estimate["rate"]

cat("--- Agrupacion 3: 45 a 68 (Norte y Alaska) ---\n")
## --- Agrupacion 3: 45 a 68 (Norte y Alaska) ---
cat("n =", length(g3), "| shape =", round(sh,4), "| rate =", round(rt,4), "\n")
## n = 115 | shape = 0.6979 | rate = 0.1498
par(mar = c(5, 5, 4, 2))
hist(g3, breaks = br3, col = "#DDEBF7", border = "white", freq = FALSE,
     main = "Gráfica 11: Modelo Gamma — Latitud (45° a 68°)",
     xlab = "Latitud (°)", ylab = "Densidad")
x_g3 <- seq(0.001, max(g3_pos), length.out = 200)
lines(x_g3 + 45, dgamma(x_g3, shape = sh, rate = rt), col = "blue", lwd = 2)
legend("topright", legend = c("Histograma","Modelo gamma"),
       fill = c("#DDEBF7", NA), lty = c(NA,1),
       col = c("black","blue"), lwd = c(NA,2), border = c("black",NA), bty = "n")

Tabla 3: Resumen de Modelos Probabilísticos

data.frame(
  Agrupacion = c("18° a 35°","35° a 45°","45° a 68°"),
  n          = c(length(g1), length(g2), length(g3)),
  Pct        = c(round(length(g1)/n*100,1),
                 round(length(g2)/n*100,1),
                 round(length(g3)/n*100,1)),
  Modelo     = c("Exponencial","Normal","Gamma"),
  Parametros = c(paste0("lambda=",round(lam,4)),
                 paste0("mu=",round(mu2,3)," | sigma=",round(sig2,3)),
                 paste0("shape=",round(sh,3)," | rate=",round(rt,3))),
  Region     = c("Sur y Puerto Rico",
                 "Centro y Appalachia",
                 "Norte y Alaska")
) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla 3**"),
    subtitle = md("Resumen de modelos probabilísticos — Latitud (y)")
  ) %>%
  cols_label(
    Agrupacion="Agrupación", n="n", Pct="% total",
    Modelo="Modelo", Parametros="Parámetros", Region="Región"
  ) %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 3
Resumen de modelos probabilísticos — Latitud (y)
Agrupación n % total Modelo Parámetros Región
18° a 35° 461 15.4 Exponencial lambda=0.0693 Sur y Puerto Rico
35° a 45° 2416 80.7 Normal mu=38.798 | sigma=2.191 Centro y Appalachia
45° a 68° 115 3.8 Gamma shape=0.698 | rate=0.15 Norte y Alaska
Autor: Grupo 4 - Minas

6 Indicadores Estadísticos y Outliers

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

varianza <- var(LAT)
desv     <- sd(LAT)
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(LAT, 0.25)
q2  <- quantile(LAT, 0.50)
q3  <- quantile(LAT, 0.75)
iqr_val <- q3 - q1
lim_inf <- q1 - 1.5 * iqr_val
lim_sup <- q3 + 1.5 * iqr_val
outliers <- LAT[LAT < lim_inf | LAT > lim_sup]
n_outliers <- length(outliers)
porc_outliers <- round(n_outliers / n * 100, 2)

asimetria <- skewness(LAT)
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(LAT, 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 4: Tendencia Central

data.frame(
  Indicador = c("Mínimo","Media","Mediana","Moda","Máximo","Rango"),
  Valor = round(c(minimo, media, mediana, moda, maximo, rango2), 3),
  Unidad = rep("grados", 6)
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 4**"),
             subtitle = "Indicadores de Tendencia Central — LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 4
Indicadores de Tendencia Central — LAT
Indicador Valor Unidad
Mínimo 18.375 grados
Media 38.244 grados
Mediana 37.764 grados
Moda 37.853 grados
Máximo 68.065 grados
Rango 49.690 grados
Autor: Grupo 4 - Minas

Tabla 5: Dispersión

data.frame(
  Indicador = c("Varianza","Desviación Estándar","Coeficiente de Variación"),
  Valor = c(round(varianza,3), round(desv,3), 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 5**"),
             subtitle = "Indicadores de Dispersión — LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 5
Indicadores de Dispersión — LAT
Indicador Valor Interpretacion
Varianza 17.066 Medida de dispersión al cuadrado
Desviación Estándar 4.131 Dispersión promedio respecto a la media
Coeficiente de Variación 10.8% Dispersión relativa: BAJA (CV < 15%)
Autor: Grupo 4 - Minas

Tabla 6: 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,3), round(q2,3), round(q3,3), round(iqr_val,3),
            round(lim_inf,3), round(lim_sup,3),
            paste0(n_outliers, " (", porc_outliers, "%)"))
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 6**"),
             subtitle = "Indicadores de Posición y Outliers — LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 6
Indicadores de Posición y Outliers — LAT
Indicador Valor
Cuartil 1 (Q1) 36.79
Cuartil 2 (Q2-Mediana) 37.764
Cuartil 3 (Q3) 40.414
Rango Intercuartílico (IQR) 3.625
Límite Inferior Outliers 31.353
Límite Superior Outliers 45.851
Número de Outliers 201 (6.72%)
Autor: Grupo 4 - Minas

Tabla 7: 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 7**"),
             subtitle = "Indicadores de Forma — LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 7
Indicadores de Forma — LAT
Indicador Valor
Coeficiente de Asimetría (Fisher) 1.4855
Interpretación Asimetría Asimetría positiva (sesgo a la derecha)
Coeficiente de Curtosis (Excedente) 10.6051
Interpretación Curtosis Distribución leptocúrtica (picuda)
Autor: Grupo 4 - Minas

Tabla 8: 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,3), round(media,3), round(mediana,3), round(moda,3),
            round(maximo,3), round(rango2,3),
            round(varianza,3), round(desv,3), paste0(round(cv,2),"%"),
            round(q1,3), round(q2,3), round(q3,3), round(iqr_val,3),
            round(asimetria,4), interpretacion_asimetria,
            round(curtosis,4), interpretacion_curtosis)
) %>%
  gt() %>%
  tab_header(title = md("**Tabla 8**"),
             subtitle = "Resumen Completo de Indicadores — LAT") %>%
  tab_source_note(md("Autor: Grupo 4 - Minas"))
Tabla 8
Resumen Completo de Indicadores — LAT
Categoria Indicador Valor
Tendencia Central Mínimo 18.375
Tendencia Central Media 38.244
Tendencia Central Mediana 37.764
Tendencia Central Moda 37.853
Tendencia Central Máximo 68.065
Tendencia Central Rango 49.69
Dispersión Varianza 17.066
Dispersión Desviación Estándar 4.131
Dispersión Coeficiente de Variación 10.8%
Posición Cuartil 1 (Q1) 36.79
Posición Cuartil 2 (Q2) 37.764
Posición Cuartil 3 (Q3) 40.414
Posición Rango Intercuartílico 3.625
Forma Asimetría (g1) 1.4855
Forma Interpretación Asimetría Asimetría positiva (sesgo a la derecha)
Forma Curtosis (g2) 10.6051
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: 201
if (n_outliers > 0) {
  cat("Minimo outlier:", round(min(outliers), 3), "grados\n")
  cat("Maximo outlier:", round(max(outliers), 3), "grados\n")
}
## Minimo outlier: 18.375 grados
## Maximo outlier: 68.065 grados

7 Conclusión

conclusion <- sprintf(
"La variable LAT registra la latitud geográfica de cada instalación minera. Los valores oscilan entre %.3f° y %.3f°, con media de %.3f° y mediana de %.3f°. El análisis por agrupaciones geográficas muestra tres zonas: Sur y Puerto Rico (18° a 35°) con %.1f%% de las minas y distribución exponencial (baja densidad, datos dispersos); Centro y Appalachia (35° a 45°) con %.1f%% de las minas y distribución normal (zona de mayor concentración minera); y Norte y Alaska (45° a 68°) con %.1f%% de las minas y distribución gamma (asimétrica, pocos datos dispersos). La mayor concentración en la zona central confirma que Appalachia es el núcleo minero de EE.UU., consistente con los estados que reportan mayores emisiones de CO2, NOx y CH4 en 2018.",
min(LAT), max(LAT), media, mediana,
round(length(g1)/n*100,1),
round(length(g2)/n*100,1),
round(length(g3)/n*100,1)
)
print(conclusion)
## [1] "La variable LAT registra la latitud geográfica de cada instalación minera. Los valores oscilan entre 18.375° y 68.065°, con media de 38.244° y mediana de 37.764°. El análisis por agrupaciones geográficas muestra tres zonas: Sur y Puerto Rico (18° a 35°) con 15.4% de las minas y distribución exponencial (baja densidad, datos dispersos); Centro y Appalachia (35° a 45°) con 80.7% de las minas y distribución normal (zona de mayor concentración minera); y Norte y Alaska (45° a 68°) con 3.8% de las minas y distribución gamma (asimétrica, pocos datos dispersos). La mayor concentración en la zona central confirma que Appalachia es el núcleo minero de EE.UU., consistente con los estados que reportan mayores emisiones de CO2, NOx y CH4 en 2018."