CARGA DE DATOS Y LIBRERÍAS

# Cargar datos
datos<- read.csv("~/UNI/estadistica/2026/dataset_geologico_limpio_80.csv")
cat(" Dimensiones:", nrow(datos), "observaciones:", ncol(datos), "variables\n\n")
##  Dimensiones: 27784 observaciones: 58 variables
# Extraer variable
latitud_raw<- datos$LATITUDE
cat("Primeros valores de LATITUDE:\n")
## Primeros valores de LATITUDE:
head(latitud_raw)
## [1] 41.10000 40.85000 41.38333 41.63333 41.35000 41.90000
latitud_raw <- as.numeric(latitud_raw)
latitud<- na.omit(latitud_raw)
summary(latitud)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -16.23   38.82   41.20   39.25   42.35   80.81
n <- length(latitud)
cat("Número de observaciones válidas (n):", n, "\n\n")
## Número de observaciones válidas (n): 27784
# CARGA DE LIBRERÍAS
library(gt)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(knitr)
library(e1071)
library(moments)
## 
## Adjuntando el paquete: 'moments'
## The following objects are masked from 'package:e1071':
## 
##     kurtosis, moment, skewness

TABLA DE DISTRIBUCIÓN DE FRECUENCIA

Agrupación por la regla de Sturges

# Numero de datos
n <- length(latitud)

# Parámetros de Sturges
minimo<- min(latitud)
maximo<- max(latitud)
R <- maximo - minimo
k <- floor(1 + 3.3 * log10(n))
A <- R / k

cat("PARÁMETROS:\n")
## PARÁMETROS:
cat("  Rango (R)            :", round(R, 4), "grados\n")
##   Rango (R)            : 97.0458 grados
cat("  Número intervalos (k):", k, "\n")
##   Número intervalos (k): 15
cat("  Amplitud clase (A)   :", round(A, 4), "grados\n\n")
##   Amplitud clase (A)   : 6.4697 grados
# Límites de clase
li <- seq(from = min(latitud), to = max(latitud) - A, by = A)
ls <- seq(from = min(latitud) + A, to = max(latitud), by = A)
MC <- round((li + ls) / 2,2)

# Frecuencias absolutas agrupadas
n_i <- numeric(length (li))
for (i in 1:length (li)) {
  n_i[i] <- sum(latitud >= li[i] & latitud < ls[i])
}
n_i[length(li)] <- sum(latitud >= li[length(li)] & latitud<= maximo)

# Frecuencias relativas y acumuladas
h_i <- (n_i / sum(n_i)) * 100
Ni_asc <- cumsum(n_i)
Hi_asc <- round(cumsum(h_i),2)
Ni_desc <- rev(cumsum(rev(n_i)))
Hi_desc <- round(rev(cumsum(rev(h_i))),2)

# Crear tabla agrupada
TablaFrecuenciasAgrupada <- round(data.frame(
  li, ls,MC,n_i,h_i,Ni_asc,Hi_asc,Ni_desc,Hi_desc
),2)

TablaFrecuenciasAgrupada[nrow(TablaFrecuenciasAgrupada) + 1, ] <- 
  c(NA, NA, "TOTAL", sum(n_i), round(sum(h_i), 2), NA, NA, NA, NA)

TablaFrecuenciasAgrupada
##        li    ls    MC   n_i   h_i Ni_asc Hi_asc Ni_desc Hi_desc
## 1  -16.23 -9.76   -13    12  0.04     12   0.04   27784     100
## 2   -9.76 -3.29 -6.53     0     0     12   0.04   27772   99.96
## 3   -3.29  3.18 -0.06     0     0     12   0.04   27772   99.96
## 4    3.18  9.65  6.41     9  0.03     21   0.08   27772   99.96
## 5    9.65 16.12 12.88    48  0.17     69   0.25   27763   99.92
## 6   16.12 22.59 19.35  1062  3.82   1131   4.07   27715   99.75
## 7   22.59 29.06 25.82  1882  6.77   3013  10.84   26653   95.93
## 8   29.06 35.53 32.29  2124  7.64   5137  18.49   24771   89.16
## 9   35.53    42 38.76 12443 44.78  17580  63.27   22647   81.51
## 10     42 48.47 45.23  9449 34.01  27029  97.28   10204   36.73
## 11  48.47 54.93  51.7   325  1.17  27354  98.45     755    2.72
## 12  54.93  61.4 58.17    55   0.2  27409  98.65     430    1.55
## 13   61.4 67.87 64.64   151  0.54  27560  99.19     375    1.35
## 14  67.87 74.34 71.11   220  0.79  27780  99.99     224    0.81
## 15  74.34 80.81 77.58     4  0.01  27784    100       4    0.01
## 16   <NA>  <NA> TOTAL 27784   100   <NA>   <NA>    <NA>    <NA>

# Mostrar tabla con formato mejorada

Tabla_GT <- TablaFrecuenciasAgrupada %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N.º 1**"),
    subtitle = md("**Tabla de distribución de frecuencias de la variable LATITUDE  
                  Accidentes, Lesiones y Enfermedades en Operaciones Mineras**")
  ) %>%
  tab_source_note(
    source_note = md("**Autor: Grupo**")
  ) %>%
  cols_label(
    li = "Límite Inferior",
    ls = "Límite Superior",
    MC = "Marca de Clase",
    n_i = "ni",
    h_i = "hi (%)",
    Ni_asc = "Ni Asc",
    Hi_asc = "Hi Asc (%)",
    Ni_desc = "Ni Desc",
    Hi_desc = "Hi Desc (%)"
  ) %>%
  fmt_number(
    columns = c(li, ls, MC),
    decimals = 2
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = MC == "TOTAL"
    )
  )

Tabla_GT
Tabla N.º 1
Tabla de distribución de frecuencias de la variable LATITUDE
Accidentes, Lesiones y Enfermedades en Operaciones Mineras
Límite Inferior Límite Superior Marca de Clase ni hi (%) Ni Asc Hi Asc (%) Ni Desc Hi Desc (%)
-16.23 -9.76 -13 12 0.04 12 0.04 27784 100
-9.76 -3.29 -6.53 0 0 12 0.04 27772 99.96
-3.29 3.18 -0.06 0 0 12 0.04 27772 99.96
3.18 9.65 6.41 9 0.03 21 0.08 27772 99.96
9.65 16.12 12.88 48 0.17 69 0.25 27763 99.92
16.12 22.59 19.35 1062 3.82 1131 4.07 27715 99.75
22.59 29.06 25.82 1882 6.77 3013 10.84 26653 95.93
29.06 35.53 32.29 2124 7.64 5137 18.49 24771 89.16
35.53 42 38.76 12443 44.78 17580 63.27 22647 81.51
42 48.47 45.23 9449 34.01 27029 97.28 10204 36.73
48.47 54.93 51.7 325 1.17 27354 98.45 755 2.72
54.93 61.4 58.17 55 0.2 27409 98.65 430 1.55
61.4 67.87 64.64 151 0.54 27560 99.19 375 1.35
67.87 74.34 71.11 220 0.79 27780 99.99 224 0.81
74.34 80.81 77.58 4 0.01 27784 100 4 0.01
NA NA TOTAL 27784 100 NA NA NA NA
Autor: Grupo

GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA

## HISTOGRAMA LOCAL - FRECUENCIAS ABSOLUTAS
hist(latitud,
     main = "Grafica 1:Distribucion de Cantidad de la latitud de Depòsitos Marinos",
     xlab = "latitud (grados)",
     ylab = "Cantidad (ni)",
     col = "lightcoral",
     border = "white",
     las = 1,
     breaks = k,
     ylim = c(0, max(n_i) * 1.8))


# HISTOGRAMA GLOBAL - FRECUENCIAS ABSOLUTAS
hist(latitud,
     main = "Grafica 2:Distribucion de Cantidad de la latitud de Depòsitos Marinos",
     xlab = "latitud (grados)",
     ylab = "Cantidad (ni)",
     col = "steelblue",
     border = "white",
     las = 1,
     breaks = k,
     ylim = c(0, max(n_i) * 1.8))


# HISTOGRAMA LOCAL - FRECUENCIAS RELATIVAS
barplot(h_i,
        main="Grafica 3:Distribucion de Porcentaje de la latitud de Depòsitos Marinos",
        xlab="latitud",
        ylab="Porcentaje (%)",
        col="mediumpurple",
        border="white",
        names.arg=round(MC,1),
        las=2,
        cex.names=0.7,
        space=0,
        ylim=c(0,max(h_i)*1.2))
abline(h=0,lwd=1)


# HISTOGRAMA GLOBAL - FRECUENCIAS RELATIVAS
barplot(h_i,
        main = "Grafica 4:Distribucion de Porcentaje de la latitud de Depòsitos Marinos",
        xlab = "latitud",
        ylab = "Porcentaje (%)",
        col = "darkorange",
        border = "white",
        names.arg = round(MC, 1),
        las = 2,
        cex.names = 0.7,
        space = 0,
        ylim = c(0, max(h_i) * 1.2))
abline(h=0,lwd=1)


# OJIVAS - FRECUENCIAS ABSOLUTAS
plot(MC, Ni_asc,
     type = "b",
     main = "Grafica 5: Ojivas Combinadas de Cantidad acumulada de 
     la latitud de Depòsitos Marinos",
     xlab = "latitud (grados)",
     ylab = "Cantidad Acumulada (NI)",
     col = "blue",
     lwd = 2,pch = 16,cex = 1.2,las = 1,
     ylim = c(0, n))

lines(MC, Ni_desc,
      type = "b",col = "red",
      lwd = 2,pch = 16,cex = 1.2)

legend("right",
       legend = c("Ascendente", "Descendente"), 
       col = c("blue", "red"),lty = 1,
       lwd = 2,pch = 16,bty = "n")
grid(col = "gray", lty = "dotted")


# OJIVAS - FRECUENCIAS RELATIVAS
plot(MC, Hi_asc,
     type = "b",
     main = "Grafica 6: Ojivas Combinadas de Cantidad acumulada 
     de la latitud de Depòsitos Marinos",
     xlab = "latitud (grados)", 
     ylab = "Cantidad Acumulada (HI)",
     col = "blue",
     lwd = 2,pch = 16,cex = 1.2,las = 1,ylim = c(0, 100))

lines(MC, Hi_desc,
      type = "b",col = "red",
      lwd = 2,pch = 16,cex = 1.2)

legend("right",
       legend = c("Ascendente (%)", "Descendente (%)"),
       col = c("blue", "red"),lty = 1,
       lwd = 2, pch = 16, bty = "n")
grid(col = "gray", lty = "dotted")


# DIAGRAMA DE CAJA
media <- mean(latitud)
boxplot(latitud,
        horizontal = TRUE,
        main = "Grafica 7: Distribucion de cantidad de la latitud en Depòsitos Marinos",
        xlab = "latitud (grados)",
        col = "lightgreen",
        border = "darkgreen",
        outcol = "red",
        outpch = 16,
        las = 1)
points(media, 1, pch = 23, bg = "blue", cex = 1.5)


INDICADORES ESTADÍSTICOS

# Cálculo de indicadores

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

varianza <- var(latitud)
desviacion_estandar <- sd(latitud)
rango <- range(latitud)
coeficiente_variacion <- (desviacion_estandar / media) * 100


asimetria <- skewness(latitud)
curtosis <- kurtosis(latitud)

TablaIndicadores <- data.frame(
  Variable = "Latitud (%)",
  Minimo = round(minimo,2),
  Maximo = round(maximo,2),
  Media = round(media,2),
  Mediana = round(mediana,2),
  Desv_Est = round(desviacion_estandar,2),
  CV = coeficiente_variacion,
  Asimetria = asimetria,
  Curtosis = curtosis
)

TablaIndicadores
##      Variable Minimo Maximo Media Mediana Desv_Est       CV Asimetria Curtosis
## 1 Latitud (%) -16.23  80.81 39.25    41.2     7.27 18.51402  -0.55677  8.71737

# Tabla Mejorada
TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("Indicadores estadísticos de la variable Latitud (%)")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº2
Indicadores estadísticos de la variable Latitud (%)
Variable Minimo Maximo Media Mediana Desv_Est CV Asimetria Curtosis
Latitud (%) -16.23 80.81 39.25 41.2 7.27 18.51402 -0.55677 8.71737
Autor: Grupo 3

OUTLIERS

# Cuartiles
Q1 <- quantile(latitud, 0.25)
Q3 <- quantile(latitud, 0.75)
IQR_val <- IQR(latitud)

# Límites
limite_inferior <- Q1 - 1.5 * IQR_val
limite_superior <- Q3 + 1.5 * IQR_val

#Outliers
outliers <- latitud[latitud < limite_inferior | latitud > limite_superior]
num_outliers <- length(outliers)
porcentaje_outliers <- round((num_outliers / n) * 100, 2)

TablaOutliers <- data.frame(
  num_outliers =num_outliers,
  porc_outliers = porcentaje_outliers,
  minimo = limite_inferior,
  máximo = limite_superior
)


TablaOutliers
##     num_outliers porc_outliers  minimo   máximo
## 25%         5019         18.06 33.5262 47.63634

#Tabla Mejorada 
TablaOutliers %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº3**"),
    subtitle = md("Valores atípicos de la variable Latitud (%)")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº3
Valores atípicos de la variable Latitud (%)
num_outliers porc_outliers minimo máximo
5019 18.06 33.5262 47.63634
Autor: Grupo 3

CONCLUSIONES

La Variable LATITUDE fluctua entre [-16.23:80.81] y sus valores giran en torno a la mediana de 41.20, con una desviacion estandar de 7.26, mostrando un comportamiento heterogéneo, ligeramente fuerte en la parte baja con la existencia de 5019 valores atipicos que empiezan desde 33.11.

Por todo lo anterior, el comportamiento de la variable no es completamente favorable, ya que aunque los datos corresponden a coordenadas geográficas válidas dentro del contexto de depósitos de sedimentos marinos, la alta asimetría y la curtosis elevada (36.11), junto con la presencia de una cantidad considerable de valores atípicos, indican que la distribución no es uniforme y presenta concentraciones marcadas en determinados intervalos latitudinales. Esto puede deberse a que los sedimentos marinos analizados se concentran principalmente en ciertas franjas latitudinales donde las condiciones oceanográficas y tectónicas favorecen la acumulación sedimentaria, generando así una distribución espacial irregular en los registros del dataset.”