Variable Original: y

Nombre Variable: LAT

Tipo: Cuantitativa Continua

0.- Carga de Librerías

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

1.- Carga de Datos

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

2.- Selección de variable

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

3.- Frecuencia

min_lat <- min(LAT)
max_lat <- max(LAT)
R <- max_lat - min_lat

# 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): 10
# Generación de límites de intervalo
Li <- seq(from = min_lat, to = max_lat - A, by = A)
Ls <- c(seq(from = min_lat + A, to = max_lat - A, by = A), max_lat)

# Marcas de clase (MC)
MC <- round((Li + Ls) / 2, 3)

# 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(LAT >= Li[i] & LAT < Ls[i])
  } else {
    # Último intervalo cerrado: [Li, Ls]
    ni[i] <- sum(LAT >= Li[i] & LAT <= 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, 3), " - ", round(Ls, 3), ")")
Intervalo[length(Intervalo)] <- paste0("[", round(Li[length(Li)], 3), " - ",
                                        round(Ls[length(Ls)], 3), "]")

# Vector completo de breaks (incluye el límite superior del último
# intervalo) para usar directamente en hist()
breaks_hist <- c(Li, max_lat)

4.- Tabla de distribución de frecuencia

4.1- Tabla con regla de Sturges

TDF_lat <- 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_lat_completa <- rbind(TDF_lat, totales)

TDF_lat_completa %>%
  gt() %>%
  tab_header(
    title    = md("Tabla Nro. 1"),
    subtitle = md("Distribución de frecuencia de Latitud Geográfica (LAT) 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 = Intervalo == "Totales")
  ) %>%
  tab_source_note(source_note = md("Autor: Luis Cruz"))
Tabla Nro. 1
Distribución de frecuencia de Latitud Geográfica (LAT) para el análisis de la actividad minera y emisión de gases en Estados Unidos.
Intervalo MC ni hi Ni_ascendente Ni_descendente Hi_ascendente Hi_descendente
[28.709 - 90.899) 59.804 30 10.99 30 273 10.99 100
[90.899 - 153.089) 121.994 0 0.00 30 243 10.99 89.01
[153.089 - 215.279) 184.184 3 1.10 33 243 12.09 89.01
[215.279 - 277.469) 246.374 1 0.37 34 240 12.45 87.91
[277.469 - 339.658) 308.564 30 10.99 64 239 23.44 87.55
[339.658 - 401.848) 370.753 151 55.31 215 209 78.75 76.56
[401.848 - 464.038) 432.943 53 19.41 268 58 98.17 21.25
[464.038 - 526.228) 495.133 3 1.10 271 5 99.27 1.83
[526.228 - 588.418) 557.323 0 0.00 271 2 99.27 0.73
[588.418 - 650.608] 619.513 2 0.73 273 2 100 0.73
Totales - 273 100.00 - - - -
Autor: Luis Cruz

4.2- Tabla de intervalos reducidos

brks2 <- pretty(LAT, 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(LAT >= Li2[i] & LAT < Ls2[i])
  } else {
    ni2[i] <- sum(LAT >= Li2[i] & LAT <= 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("[", round(Li2, 1), " - ", round(Ls2, 1), ")")
Intervalo2[length(Intervalo2)] <- paste0(
  "[", round(Li2[length(Li2)], 1), " - ", round(Ls2[length(Ls2)], 1), "]")

TDF_lat_10 <- data.frame(
  Intervalo = Intervalo2,
  MC = round(MC2, 1),
  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_lat_10_completa <- rbind(TDF_lat_10, totales2)

TDF_lat_10_completa %>%
  gt() %>%
  tab_header(
    title    = md("Tabla Nro. 2"),
    subtitle = md("Distribución de frecuencia de Latitud Geográfica (LAT), 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 Latitud Geográfica (LAT), intervalos reducidos.
Intervalo MC ni hi Ni_ascendente Ni_descendente Hi_ascendente Hi_descendente
[0 - 50) 25 30 10.99 30 273 10.99 100
[50 - 100) 75 0 0.00 30 243 10.99 89.01
[100 - 150) 125 0 0.00 30 243 10.99 89.01
[150 - 200) 175 3 1.10 33 243 12.09 89.01
[200 - 250) 225 0 0.00 33 240 12.09 87.91
[250 - 300) 275 4 1.47 37 240 13.55 87.91
[300 - 350) 325 39 14.29 76 236 27.84 86.45
[350 - 400) 375 133 48.72 209 197 76.56 72.16
[400 - 450) 425 58 21.25 267 64 97.8 23.44
[450 - 500) 475 4 1.47 271 6 99.27 2.2
[500 - 550) 525 0 0.00 271 2 99.27 0.73
[550 - 600) 575 0 0.00 271 2 99.27 0.73
[600 - 650) 625 1 0.37 272 2 99.63 0.73
[650 - 700] 675 1 0.37 273 1 100 0.37
Totales - 273 100.00 - - - -
Autor: Luis Cruz

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

5.1- Histogramas de cantidad

Histograma general

par(mar = c(5, 5, 4, 2))
hist(LAT, breaks = breaks_hist,
     main = "Gráfica Nro. 1\nDistribución de LAT en instalaciones\nmineras de Estados Unidos",
     xlab = "Latitud (°)", ylab = "Cantidad",
     col = "#C00000", border = "white",
     cex.main = 0.9)

Histograma con relación al todo

par(mar = c(5, 5, 4, 2))
hist(LAT, breaks = breaks_hist,
     main = "Gráfica Nro. 2\nDistribución de LAT en instalaciones\nmineras de Estados Unidos",
     xlab = "Latitud (°)", ylab = "Cantidad",
     col = "#C00000", border = "white",
     ylim = c(0, n),
     cex.main = 0.9)

5.2- Histogramas Porcentuales

Histograma porcentual general

par(mar = c(5, 5, 4, 2))
barplot(hi2,
        names.arg = round(MC2, 1),
        main = "Gráfica Nro. 3\nDistribución porcentual de LAT en instalaciones\nmineras de Estados Unidos",
        xlab = "Latitud (°)", ylab = "Porcentaje (%)",
        col = "#FF9999", border = "black",
        las = 2, cex.names = 0.8,
        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, 1),
        main = "Gráfica Nro. 4\nDistribución porcentual de LAT en instalaciones\nmineras de Estados Unidos",
        xlab = "Latitud (°)", ylab = "Porcentaje (%)",
        col = "#FF9999", border = "black",
        las = 2, cex.names = 0.8,
        ylim = c(0, 100))

5.3- Diagrama de caja y bigotes

options(scipen = 999)
boxplot(LAT,
        horizontal = TRUE,
        main = "Gráfica Nro. 5\nDistribución de LAT en instalaciones\nmineras de Estados Unidos",
        xlab = "Latitud (°)",
        col = "#FFB3B3",
        border = "#7B0000",
        pch = 1)

5.4- Diagrama de Ojivas

par(mar = c(5, 5, 4, 2))
plot(MC2, Ni2_asc,
     type = "b", pch = 16, lwd = 2, col = "#C00000",
     main = "Gráfica Nro. 6\nOjiva ascendente y descendente de\nLAT",
     xlab = "Latitud (°)", 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("#C00000","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 = "#C00000",
     main = "Gráfica Nro. 7\nOjiva porcentual ascendente y descendente de\nLAT",
     xlab = "Latitud (°)", 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("#C00000","black"), lwd = 2, pch = 16, bty = "n", cex = 0.8)
grid()
box()

6.- Indicadores Estadísticos

X  <- mean(LAT)
Me <- median(LAT)

# Moda: marca de clase del intervalo con mayor ni (tabla reducida)
moda_idx <- which.max(ni2)
Mo <- round(MC2[moda_idx], 2)

desv <- sd(LAT)
V    <- var(LAT)
CV   <- round((desv / X) * 100, 2)

As <- skewness(LAT, type = 2)
K  <- kurtosis(LAT, type = 2)

# Outliers (regla de Tukey, 1.5*IQR) — se usan en la conclusión
q1 <- quantile(LAT, 0.25)
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)

Tabla_indicadores <- data.frame(
  Variable = "LAT",
  Rango    = paste0("[", round(min_lat, 3), " - ", round(max_lat, 3), "]"),
  Media    = round(X, 3),
  Mediana  = round(Me, 3),
  Moda     = Mo,
  DesvEst  = round(desv, 3),
  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 LAT para el análisis de la actividad minera y emisión de gases en Estados Unidos.")
  ) %>%
  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 LAT para el análisis de la actividad minera y emisión de gases en Estados Unidos.
Variable Rango
Tendencia Central
Dispersión
Forma
Media (X) Mediana (Me) Moda (Mo) Desv. Est. (sd) CV (%) Asimetría (As) Curtosis (K)
LAT [28.709 - 650.608] 339.858 373.525 375 115.2 33.9 -1.8224 2.8462
Autor: Luis Cruz

7.- Conclusión

La variable LAT fluctúa entre un mínimo de 28.709° y un máximo de 650.608°, y gira en torno a una media de 339.858°, con una desviación estándar de 115.2°. Se han detectado 35 valores atípicos (12.82% del total), lo que sugiere que la actividad minera no se distribuye de forma uniforme entre las distintas latitudes del país. Debido a un coeficiente de variación del 33.9%, es un conjunto de datos con dispersión alta, cuyos valores se agrupan fuertemente en la parte alta de LAT. Por lo anterior, el comportamiento es perjudicial para la vigilancia ambiental, ya que la actividad minera se concentra en franjas latitudinales específicas (coincidentes con la región Apalache), dificultando una cobertura regulatoria uniforme a lo largo del país.