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
longitud_raw<- datos$LONGITUDE
cat("Primeros valores de LONGITUDE:\n")
## Primeros valores de LONGITUDE:
head(longitud_raw)
## [1] -69.28333 -68.91667 -66.98333 -67.95000 -67.98333 -69.61667
longitud_raw <- as.numeric(longitud_raw)
longitud<- na.omit(longitud_raw)
summary(longitud)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -170.52  -75.54  -70.97  -72.77  -70.17  123.56
n <- length(longitud)
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(longitud)

# Parámetros de Sturges
minimo<- min(longitud)
maximo<- max(longitud)
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)            : 294.0768 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)   : 19.6051 grados
# Límites de clase
li <- seq(from = min(longitud), to = max(longitud) - A, by = A)
ls <- seq(from = min(longitud) + A, to = max(longitud), 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(longitud >= li[i] & longitud < ls[i])
}
n_i[length(li)] <- sum(longitud >= li[length(li)] & longitud<= 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  -170.52 -150.91 -160.72   118  0.42    118   0.42   27784     100
## 2  -150.91 -131.31 -141.11   265  0.95    383   1.38   27666   99.58
## 3  -131.31  -111.7 -121.51   714  2.57   1097   3.95   27401   98.62
## 4   -111.7   -92.1  -101.9   357  1.28   1454   5.23   26687   96.05
## 5    -92.1  -72.49   -82.3  9969 35.88  11423  41.11   26330   94.77
## 6   -72.49  -52.89  -62.69 15803 56.88  27226  97.99   16361   58.89
## 7   -52.89  -33.28  -43.09     0     0  27226  97.99     558    2.01
## 8   -33.28  -13.68  -23.48     0     0  27226  97.99     558    2.01
## 9   -13.68    5.93   -3.88   166   0.6  27392  98.59     558    2.01
## 10    5.93   25.53   15.73    19  0.07  27411  98.66     392    1.41
## 11   25.53   45.14   35.33     0     0  27411  98.66     373    1.34
## 12   45.14   64.74   54.94     0     0  27411  98.66     373    1.34
## 13   64.74   84.35   74.54    15  0.05  27426  98.71     373    1.34
## 14   84.35  103.95   94.15     5  0.02  27431  98.73     358    1.29
## 15  103.95  123.56  113.75   353  1.27  27784    100     353    1.27
## 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 LONGITUDE  
                  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 LONGITUDE
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 (%)
-170.52 -150.91 -160.72 118 0.42 118 0.42 27784 100
-150.91 -131.31 -141.11 265 0.95 383 1.38 27666 99.58
-131.31 -111.7 -121.51 714 2.57 1097 3.95 27401 98.62
-111.7 -92.1 -101.9 357 1.28 1454 5.23 26687 96.05
-92.1 -72.49 -82.3 9969 35.88 11423 41.11 26330 94.77
-72.49 -52.89 -62.69 15803 56.88 27226 97.99 16361 58.89
-52.89 -33.28 -43.09 0 0 27226 97.99 558 2.01
-33.28 -13.68 -23.48 0 0 27226 97.99 558 2.01
-13.68 5.93 -3.88 166 0.6 27392 98.59 558 2.01
5.93 25.53 15.73 19 0.07 27411 98.66 392 1.41
25.53 45.14 35.33 0 0 27411 98.66 373 1.34
45.14 64.74 54.94 0 0 27411 98.66 373 1.34
64.74 84.35 74.54 15 0.05 27426 98.71 373 1.34
84.35 103.95 94.15 5 0.02 27431 98.73 358 1.29
103.95 123.56 113.75 353 1.27 27784 100 353 1.27
NA NA TOTAL 27784 100 NA NA NA NA
Autor: Grupo

GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA

## HISTOGRAMA LOCAL - FRECUENCIAS ABSOLUTAS
hist(longitud,
     main = "Grafica 1:Distribucion de Cantidad de la longitud de Depòsitos Marinos",
     xlab = "longitud (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(longitud,
     main = "Grafica 2:Distribucion de Cantidad de la longitud de Depòsitos Marinos",
     xlab = "longitud (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 longitud de Depòsitos Marinos",
        xlab="longitud",
        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.1))
abline(h=0,lwd=1)


# HISTOGRAMA GLOBAL - FRECUENCIAS RELATIVAS
barplot(h_i,
        main = "Grafica 4:Distribucion de Porcentaje de la longitud de Depòsitos Marinos",
        xlab = "longitud",
        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.1))
abline(h=0,lwd=1)


# OJIVAS - FRECUENCIAS ABSOLUTAS
plot(MC, Ni_asc,
     type = "b",
     main = "Grafica 5: Ojivas Combinadas de Cantidad acumulada de 
     la longitud de Depòsitos Marinos",
     xlab = "longitud (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 longitud de Depòsitos Marinos",
     xlab = "longitud (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(longitud)
boxplot(longitud,
        horizontal = TRUE,
        main = "Grafica 7: Distribucion de cantidad de la longitud en Depòsitos Marinos",
        xlab = "longitud (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(longitud)
maximo <- max(longitud)
rango <- maximo - minimo
media <- mean(longitud)
mediana <- median(longitud)
moda <- as.numeric(names(sort(table(longitud), decreasing = TRUE)[1]))

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


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

TablaIndicadores <- data.frame(
  Variable = "longitud (%)",
  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
## 1 longitud (%) -170.52 123.56 -72.77  -70.97     25.4 -34.90761  4.416136
##   Curtosis
## 1 36.10975

# Tabla Mejorada
TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("Indicadores estadísticos de la variable longitud (%)")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº2
Indicadores estadísticos de la variable longitud (%)
Variable Minimo Maximo Media Mediana Desv_Est CV Asimetria Curtosis
longitud (%) -170.52 123.56 -72.77 -70.97 25.4 -34.90761 4.416136 36.10975
Autor: Grupo 3

OUTLIERS

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

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

#Outliers
outliers <- longitud[longitud < limite_inferior | longitud > 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%         5027         18.09 -83.59956 -62.10694

#Tabla Mejorada 
TablaOutliers %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº3**"),
    subtitle = md("Valores atípicos de la variable longitud (%)")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº3
Valores atípicos de la variable longitud (%)
num_outliers porc_outliers minimo máximo
5027 18.09 -83.59956 -62.10694
Autor: Grupo 3

CONCLUSIONES

La Variable LONGITUDE fluctua entre [-170.52:123.55] y sus valores giran en torno a la mediana de -70.97, con una desviacion estandar de 25.40,mostrando un comportamiento heterogéneo, ligeramente uerte en la parte baja con la existencia de 5027 valores atipicos que empiezan desde -89.85

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, la curtosis elevada (36.11) y la cantidad considerable de valores atípicos indican que la distribución no es uniforme y presenta concentraciones fuertes en determinados intervalos longitudinales. Esto puede deberse a que los sedimentos marinos analizados provienen de zonas específicas de acumulación sedimentaria o regiones oceánicas particulares, lo que genera una distribución espacial irregular en los registros del dataset.