Variable Original: x

Nombre Variable: LON

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

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

3.- Frecuencia

min_lon <- min(LON)
max_lon <- max(LON)
R <- max_lon - min_lon

# 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_lon, to = max_lon - A, by = A)
Ls <- c(seq(from = min_lon + A, to = max_lon - A, by = A), max_lon)

# 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(LON >= Li[i] & LON < Ls[i])
  } else {
    # Último intervalo cerrado: [Li, Ls]
    ni[i] <- sum(LON >= Li[i] & LON <= 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_lon)

4.- Tabla de distribución de frecuencia

4.1- Tabla con regla de Sturges

TDF_lon <- 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_lon_completa <- rbind(TDF_lon, totales)

TDF_lon_completa %>%
  gt() %>%
  tab_header(
    title    = md("Tabla Nro. 1"),
    subtitle = md("Distribución de frecuencia de Longitud Geográfica (LON) 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 Longitud Geográfica (LON) 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
[-988.037 - -896.481) -942.259 25 9.58 25 261 9.58 100
[-896.481 - -804.926) -850.704 149 57.09 174 236 66.67 90.42
[-804.926 - -713.37) -759.148 53 20.31 227 87 86.97 33.33
[-713.37 - -621.815) -667.592 0 0.00 227 34 86.97 13.03
[-621.815 - -530.259) -576.037 0 0.00 227 34 86.97 13.03
[-530.259 - -438.703) -484.481 0 0.00 227 34 86.97 13.03
[-438.703 - -347.148) -392.926 0 0.00 227 34 86.97 13.03
[-347.148 - -255.592) -301.37 0 0.00 227 34 86.97 13.03
[-255.592 - -164.037) -209.814 1 0.38 228 34 87.36 13.03
[-164.037 - -72.481] -118.259 33 12.64 261 33 100 12.64
Totales - 261 100.00 - - - -
Autor: Luis Cruz

4.2- Tabla de intervalos reducidos

brks2 <- pretty(LON, 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(LON >= Li2[i] & LON < Ls2[i])
  } else {
    ni2[i] <- sum(LON >= Li2[i] & LON <= 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_lon_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_lon_10_completa <- rbind(TDF_lon_10, totales2)

TDF_lon_10_completa %>%
  gt() %>%
  tab_header(
    title    = md("Tabla Nro. 2"),
    subtitle = md("Distribución de frecuencia de Longitud Geográfica (LON), 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 Longitud Geográfica (LON), intervalos reducidos.
Intervalo MC ni hi Ni_ascendente Ni_descendente Hi_ascendente Hi_descendente
[-1000 - -900) -950 24 9.20 24 261 9.2 100
[-900 - -800) -850 158 60.54 182 237 69.73 90.8
[-800 - -700) -750 45 17.24 227 79 86.97 30.27
[-700 - -600) -650 0 0.00 227 34 86.97 13.03
[-600 - -500) -550 0 0.00 227 34 86.97 13.03
[-500 - -400) -450 0 0.00 227 34 86.97 13.03
[-400 - -300) -350 0 0.00 227 34 86.97 13.03
[-300 - -200) -250 0 0.00 227 34 86.97 13.03
[-200 - -100) -150 3 1.15 230 34 88.12 13.03
[-100 - 0] -50 31 11.88 261 31 100 11.88
Totales - 261 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(LON, breaks = breaks_hist,
     main = "Gráfica Nro. 1\nDistribución de LON en instalaciones\nmineras de Estados Unidos",
     xlab = "Longitud (°)", ylab = "Cantidad",
     col = "#C00000", border = "white",
     cex.main = 0.9)

Histograma con relación al todo

par(mar = c(5, 5, 4, 2))
hist(LON, breaks = breaks_hist,
     main = "Gráfica Nro. 2\nDistribución de LON en instalaciones\nmineras de Estados Unidos",
     xlab = "Longitud (°)", 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 LON en instalaciones\nmineras de Estados Unidos",
        xlab = "Longitud (°)", 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 LON en instalaciones\nmineras de Estados Unidos",
        xlab = "Longitud (°)", 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(LON,
        horizontal = TRUE,
        main = "Gráfica Nro. 5\nDistribución de LON en instalaciones\nmineras de Estados Unidos",
        xlab = "Longitud (°)",
        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\nLON",
     xlab = "Longitud (°)", 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\nLON",
     xlab = "Longitud (°)", 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(LON)
Me <- median(LON)

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

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

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

# Outliers (regla de Tukey, 1.5*IQR) — se usan en la conclusión
q1 <- quantile(LON, 0.25)
q3 <- quantile(LON, 0.75)
iqr_val <- q3 - q1
lim_inf <- q1 - 1.5 * iqr_val
lim_sup <- q3 + 1.5 * iqr_val
outliers <- LON[LON < lim_inf | LON > lim_sup]
n_outliers <- length(outliers)
porc_outliers <- round(n_outliers / n * 100, 2)

Tabla_indicadores <- data.frame(
  Variable = "LON",
  Rango    = paste0("[", round(min_lon, 3), " - ", round(max_lon, 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 LON 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 LON 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)
LON [-988.037 - -72.481] -735.016 -818.479 -850 256.063 34.84 2.0495 2.5576
Autor: Luis Cruz

7.- Conclusión

La variable LON fluctúa entre un mínimo de -988.037° y un máximo de -72.481°, y gira en torno a una media de -735.016°, con una desviación estándar de 256.063°. Se han detectado 59 valores atípicos (22.61% del total), lo que sugiere que la actividad minera no se distribuye de forma uniforme entre las distintas longitudes del país. Debido a un coeficiente de variación del 34.84%, es un conjunto de datos con dispersión alta, cuyos valores se agrupan fuertemente en la parte baja de LON. Por lo anterior, el comportamiento es perjudicial para la vigilancia ambiental, ya que la actividad minera se concentra en franjas longitudinales específicas, dificultando una cobertura regulatoria uniforme a lo largo del territorio.