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))
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): 13
# 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

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
[-165.393 - -157.743) -161.568 4 0.13 4 2996 0.13 100
[-157.743 - -150.094) -153.919 4 0.13 8 2992 0.27 99.87
[-150.094 - -142.444) -146.269 12 0.40 20 2988 0.67 99.73
[-142.444 - -134.795) -138.619 1 0.03 21 2976 0.7 99.33
[-134.795 - -127.145) -130.97 1 0.03 22 2975 0.73 99.3
[-127.145 - -119.495) -123.32 43 1.44 65 2974 2.17 99.27
[-119.495 - -111.846) -115.671 188 6.28 253 2931 8.44 97.83
[-111.846 - -104.196) -108.021 217 7.24 470 2743 15.69 91.56
[-104.196 - -96.547) -100.371 113 3.77 583 2526 19.46 84.31
[-96.547 - -88.897) -92.722 226 7.54 809 2413 27 80.54
[-88.897 - -81.247) -85.072 1428 47.66 2237 2187 74.67 73
[-81.247 - -73.598) -77.423 677 22.60 2914 759 97.26 25.33
[-73.598 - -65.948] -69.773 82 2.74 2996 82 100 2.74
Totales - 2996 100.00 - - - -
Autor: Luis Cruz

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
[-170 - -160) -165 2 0.07 2 2996 0.07 100
[-160 - -150) -155 6 0.20 8 2994 0.27 99.93
[-150 - -140) -145 12 0.40 20 2988 0.67 99.73
[-140 - -130) -135 2 0.07 22 2976 0.73 99.33
[-130 - -120) -125 39 1.30 61 2974 2.04 99.27
[-120 - -110) -115 253 8.44 314 2935 10.48 97.96
[-110 - -100) -105 175 5.84 489 2682 16.32 89.52
[-100 - -90) -95 285 9.51 774 2507 25.83 83.68
[-90 - -80) -85 1668 55.67 2442 2222 81.51 74.17
[-80 - -70) -75 545 18.19 2987 554 99.7 18.49
[-70 - -60] -65 9 0.30 2996 9 100 0.3
Totales - 2996 100.00 - - - -
Autor: Luis Cruz

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

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)

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))

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)

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 [-165.393 - -65.948] -88.16 -82.804 -85 12.973 14.71 -1.7645 3.5915
Autor: Luis Cruz

7.- Conclusión

En conclusión:

La variable LON fluctúa entre un mínimo de -165.393° y un máximo de -65.948°, con una media de -88.16° y una desviación estándar de 12.973°. Debido a un coeficiente de variación del 14.71%, se concluye que es un conjunto de valores con dispersión baja, con una distribución de asimetría negativa (-1.7645). Se han detectado 372 valores atípicos (12.42% del total), lo que sugiere que la actividad minera no se distribuye de forma uniforme entre las distintas longitudes del país.