# 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
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 | ||||||||
## 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)
# 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 | ||||||||
# 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 | |||
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.”