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

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
[18.375 - 22.198) 20.286 5 0.17 5 2993 0.17 100
[22.198 - 26.02) 24.109 0 0.00 5 2988 0.17 99.83
[26.02 - 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.7 89.98
[37.487 - 41.309) 39.398 1262 42.17 2570 1685 85.87 56.3
[41.309 - 45.131) 43.22 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.4 0.63
[60.421 - 64.243) 62.332 4 0.13 2979 18 99.53 0.6
[64.243 - 68.065] 66.154 14 0.47 2993 14 100 0.47
Totales - 2993 100.00 - - - -
Autor: Luis Cruz

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
[15 - 20) 17.5 3 0.10 3 2993 0.1 100
[20 - 25) 22.5 2 0.07 5 2990 0.17 99.9
[25 - 30) 27.5 44 1.47 49 2988 1.64 99.83
[30 - 35) 32.5 412 13.77 461 2944 15.4 98.36
[35 - 40) 37.5 1661 55.50 2122 2532 70.9 84.6
[40 - 45) 42.5 755 25.23 2877 871 96.12 29.1
[45 - 50) 47.5 96 3.21 2973 116 99.33 3.88
[50 - 55) 52.5 0 0.00 2973 20 99.33 0.67
[55 - 60) 57.5 2 0.07 2975 20 99.4 0.67
[60 - 65) 62.5 8 0.27 2983 18 99.67 0.6
[65 - 70] 67.5 10 0.33 2993 10 100 0.33
Totales - 2993 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(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)

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

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)

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 [18.375 - 68.065] 38.244 37.764 37.5 4.131 10.8 1.487 10.6051
Autor: Luis Cruz

7.- Conclusión

En conclusión:

La variable LAT fluctúa entre un mínimo de 18.375° y un máximo de 68.065°, con una media de 38.244° y una desviación estándar de 4.131°. Debido a un coeficiente de variación del 10.8%, se concluye que es un conjunto de valores con dispersión baja, con una distribución de asimetría positiva (1.487). Se han detectado 201 valores atípicos (6.72% del total), lo que sugiere que la actividad minera no se distribuye de forma uniforme entre las distintas latitudes del país.