# CARGA DE LIBRERÍAS
library(gt)
## Warning: package 'gt' was built under R version 4.6.1
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.6.1
##
## 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)
## Warning: package 'knitr' was built under R version 4.6.1
library(e1071)
## Warning: package 'e1071' was built under R version 4.6.1
library(moments)
##
## Adjuntando el paquete: 'moments'
## The following objects are masked from 'package:e1071':
##
## kurtosis, moment, skewness
# Cargar datos
datos <- read.csv(
"~/dataset csv/dataset_geologico_limpio_80.csv",
header = TRUE,
sep = ",",
dec = ".",
stringsAsFactors = FALSE
)
# 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
# LIMPIEZA DE LA VARIABLE
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úmero de datos
n <- length(latitud)
cat("Número de observaciones válidas (n):", n, "\n\n")
## Número de observaciones válidas (n): 27784
La variable LATITUDE representa la posición geográfica norte-sur en la que fue recolectada cada muestra de sedimento marino. Es una variable cuantitativa continua, porque puede tomar valores decimales dentro de un intervalo. Para el análisis se eliminan los valores faltantes y se conservan únicamente las latitudes válidas, comprendidas entre −90° y 90°.
TABLA DE DISTRIBUCIÓN DE CANTIDAD POR STURGES
La distribución de LATITUDE se construye aplicando directamente la regla de Sturges, sin limitar previamente el número de clases. De esta manera, los valores de latitud se organizan en intervalos de clase, permitiendo presentar la agrupación teórica recomendada de acuerdo con el tamaño de la muestra y facilitando el análisis de la ubicación norte-sur de las muestras de sedimento marino.
# 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
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**")
) %>%
tab_source_note(
source_note = md("**Autor: Grupo 2**")
) %>%
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 | ||||||||
| 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 2 | ||||||||
La regla de Sturges recomienda 15 clases, lo que genera límites de clase con valores decimales que, aunque son estadísticamente válidos, resultan complejos para la lectura y la comparación. Por esta razón se elabora una tabla simplificada de 10 clases con límites más sencillos, a fin de facilitar la comprensión e interpretación de la distribución. Esta simplificación no modifica la naturaleza continua de la variable.
TABLA DE DISTRIBUCIÓN SIMPLIFICADA
cat("TABLA DE FRECUENCIAS SIMPLE (AGRUPADA)\n")
## TABLA DE FRECUENCIAS SIMPLE (AGRUPADA)
# Límites extremos redondeados a múltiplos de 10
limite_inferior <- floor(minimo / 10) * 10
limite_superior <- ceiling(maximo / 10) * 10
# Amplitud de clase
A <- 10
# Límites de clase
li <- seq(from = limite_inferior,
to = limite_superior - A,
by = A)
ls <- seq(from = limite_inferior + A,
to = limite_superior,
by = A)
# Número de intervalos y rango
k <- length(li)
R <- limite_superior - limite_inferior
cat("PARÁMETROS:\n")
## PARÁMETROS:
cat(" Rango (R) :", round(R, 4), "grados\n")
## Rango (R) : 110 grados
cat(" Número intervalos (k):", k, "\n")
## Número intervalos (k): 11
cat(" Amplitud clase (A) :", A, "grados\n\n")
## Amplitud clase (A) : 10 grados
# Marca de clase
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])
}
# Corregir el último intervalo para incluir el valor máximo
n_i[length(li)] <- sum(latitud >= li[length(li)] &
latitud <= limite_superior)
# Frecuencias relativas y acumuladas
h_i <- round((n_i / sum(n_i)) * 100, 2)
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 <- data.frame(
LI = li,
LS = ls,
MC = MC,
ni = n_i,
hi = h_i,
Ni_asc = Ni_asc,
Hi_asc = Hi_asc,
Ni_desc = Ni_desc,
Hi_desc = Hi_desc
)
# Fila TOTAL
TablaFrecuenciasAgrupada[nrow(TablaFrecuenciasAgrupada) + 1, ] <-
c(NA, NA, NA, sum(n_i), round(sum(h_i), 1), NA, NA, NA, NA)
# Mostrar tabla
TablaFrecuenciasAgrupada
## LI LS MC ni hi Ni_asc Hi_asc Ni_desc Hi_desc
## 1 -20 -10 -15 12 0.04 12 0.04 27784 100.01
## 2 -10 0 -5 0 0.00 12 0.04 27772 99.97
## 3 0 10 5 9 0.03 21 0.07 27772 99.97
## 4 10 20 15 1074 3.87 1095 3.94 27763 99.94
## 5 20 30 25 2642 9.51 3737 13.45 26689 96.07
## 6 30 40 35 4267 15.36 8004 28.81 24047 86.56
## 7 40 50 45 19034 68.51 27038 97.32 19780 71.20
## 8 50 60 55 324 1.17 27362 98.49 746 2.69
## 9 60 70 65 417 1.50 27779 99.99 422 1.52
## 10 70 80 75 3 0.01 27782 100.00 5 0.02
## 11 80 90 85 2 0.01 27784 100.01 2 0.01
## 12 NA NA NA 27784 100.00 NA NA NA NA
library(gt)
TablaFrecuenciasAgrupada_gt <- TablaFrecuenciasAgrupada %>%
gt() %>%
tab_header(
title = md("**Tabla de distribución de frecuencias agrupada**"),
subtitle = "Variable: Latitud"
) %>%
cols_label(
LI = "Límite inferior",
LS = "Límite superior",
MC = "Marca de clase",
ni = "ni",
hi = "hi (%)",
Ni_asc = "Ni ↑",
Hi_asc = "Hi ↑ (%)",
Ni_desc = "Ni ↓",
Hi_desc = "Hi ↓ (%)"
) %>%
fmt_number(
columns = c(LI, LS, MC, hi, Hi_asc, Hi_desc),
decimals = 2
) %>%
fmt_number(
columns = c(ni, Ni_asc, Ni_desc),
decimals = 0
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = is.na(LI)
)
) %>%
tab_options(
table.font.size = px(13),
heading.title.font.size = px(18),
heading.subtitle.font.size = px(14),
table.width = pct(100)
)
TablaFrecuenciasAgrupada_gt
| Tabla de distribución de frecuencias agrupada | ||||||||
| Variable: Latitud | ||||||||
| Límite inferior | Límite superior | Marca de clase | ni | hi (%) | Ni ↑ | Hi ↑ (%) | Ni ↓ | Hi ↓ (%) |
|---|---|---|---|---|---|---|---|---|
| −20.00 | −10.00 | −15.00 | 12 | 0.04 | 12 | 0.04 | 27,784 | 100.01 |
| −10.00 | 0.00 | −5.00 | 0 | 0.00 | 12 | 0.04 | 27,772 | 99.97 |
| 0.00 | 10.00 | 5.00 | 9 | 0.03 | 21 | 0.07 | 27,772 | 99.97 |
| 10.00 | 20.00 | 15.00 | 1,074 | 3.87 | 1,095 | 3.94 | 27,763 | 99.94 |
| 20.00 | 30.00 | 25.00 | 2,642 | 9.51 | 3,737 | 13.45 | 26,689 | 96.07 |
| 30.00 | 40.00 | 35.00 | 4,267 | 15.36 | 8,004 | 28.81 | 24,047 | 86.56 |
| 40.00 | 50.00 | 45.00 | 19,034 | 68.51 | 27,038 | 97.32 | 19,780 | 71.20 |
| 50.00 | 60.00 | 55.00 | 324 | 1.17 | 27,362 | 98.49 | 746 | 2.69 |
| 60.00 | 70.00 | 65.00 | 417 | 1.50 | 27,779 | 99.99 | 422 | 1.52 |
| 70.00 | 80.00 | 75.00 | 3 | 0.01 | 27,782 | 100.00 | 5 | 0.02 |
| 80.00 | 90.00 | 85.00 | 2 | 0.01 | 27,784 | 100.01 | 2 | 0.01 |
| NA | NA | NA | 27,784 | 100.00 | NA | NA | NA | NA |
TablaFrecuenciasAgrupada <- data.frame(
Intervalo = paste0("[", li, " - ", ls, ")"),
LI = li,
LS = ls,
MC = MC,
ni = n_i,
hi = h_i,
Ni_asc = Ni_asc,
Hi_asc = Hi_asc,
Ni_desc = Ni_desc,
Hi_desc = Hi_desc
)
TablaFrecuenciasAgrupada[nrow(TablaFrecuenciasAgrupada) + 1, ] <-
c("TOTAL", NA, NA, NA, sum(n_i), round(sum(h_i), 1), NA, NA, NA, NA)
## HISTOGRAMA LOCAL - FRECUENCIAS ABSOLUTAS
hist(latitud,
breaks = c(li, limite_superior),
main = "Grafica 1: Distribucion de Cantidad de la Latitud
de Depositos Marinos",
xlab = "Latitud (grados)",
ylab = "Cantidad (ni)",
col = "lightcoral",
border = "white",
xaxt = "n",
ylim = c(0, max(n_i)*1.2))
axis(1,
at = c(li, maximo),
labels = round(c(li, maximo),2),
las = 2,
cex.axis = 0.7)
# HISTOGRAMA GLOBAL - FRECUENCIAS ABSOLUTAS
hist(latitud,
breaks = c(li, limite_superior),
main = "Grafica 2: Distribucion de Cantidad de
la Latitud de Depositos Marinos",
xlab = "Latitud (grados)",
ylab = "Cantidad (ni)",
col = "steelblue",
border = "white",
xaxt = "n",
ylim = c(0,n))
axis(1,
at = c(li, maximo),
labels = round(c(li, maximo),2),
las = 2,
cex.axis = 0.7)
# HISTOGRAMA LOCAL - FRECUENCIAS RELATIVAS
# Etiquetas de los intervalos
etiquetas <- paste0("[", round(li,2), " - ", round(ls,2), ")")
bp <- barplot(h_i,
main = "Grafica 3: Distribucion de Porcentaje de
la Latitud de Depositos Marinos",
xlab = "Limites de Clase",
ylab = "Porcentaje (%)",
col = "mediumpurple",
border = "white",
names.arg = etiquetas,
las = 2,
cex.names = 0.7,
space = 0,
ylim = c(0,max(h_i)*1.2))
axis(1, at = bp, labels = etiquetas, las = 2, cex.axis = 0.7)
box()
# HISTOGRAMA GLOBAL - FRECUENCIAS RELATIVAS
bp <- barplot(h_i,
main = "Grafica 4: Distribucion de Porcentaje de la Latitud de Depositos Marinos",
xlab = "Limites de Clase",
ylab = "Porcentaje (%)",
col = "darkorange",
border = "white",
names.arg = etiquetas,
las = 2,
cex.names = 0.7,
space = 0,
ylim = c(0,100))
axis(1, at = bp, labels = etiquetas, las = 2, cex.axis = 0.7)
box()
# 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: Diagrama de Cajade la distribucio 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)
# GRAFICA 8: HISTOGRAMA CON DIAGRAMA DE CAJA SOBREPUESTO
# Histograma
h <- hist(latitud,
breaks = c(li, maximo),
probability = TRUE,
main = "Grafica 8: Histograma y Diagrama de Caja Sobrepuesto",
xlab = "Latitud (grados)",
ylab = "Densidad",
col = "lightgray",
border = "black",
xaxt = "n")
axis(1,
at = c(li, maximo),
labels = round(c(li, maximo),2),
las = 2,
cex.axis = 0.7)
# Posición vertical donde aparecerá la caja
altura_caja <- max(h$density) * 0.5
# Boxplot horizontal sobrepuesto
boxplot(latitud,
horizontal = TRUE,
add = TRUE,
at = altura_caja,
axes = FALSE,
boxwex = max(h$density) * 0.75,
col = rgb(0, 0.75, 1, 0.5),
border = "black",
outline = TRUE)
grid(col = "gray", lty = "dotted")
# Histograma usando porcentajes reales
h <- hist(latitud,
breaks = c(li, maximo),
plot = FALSE)
# Convertir frecuencias absolutas a porcentajes
h$counts <- h_i
# Dibujar histograma con barras en porcentaje
plot(h,
freq = TRUE,
main = "Grafica 9: Poligono de Frecuencias Relativas de la Latitud",
xlab = "Latitud (grados)",
ylab = "Porcentaje (%)",
col = "white",
border = "black",
xaxt = "n",
ylim = c(0, max(h_i) * 1.2))
## Warning in plot.histogram(h, freq = TRUE, main = "Grafica 9: Poligono de
## Frecuencias Relativas de la Latitud", : the AREAS in the plot are wrong --
## rather use 'freq = FALSE'
axis(1,
at = c(li, maximo),
labels = round(c(li, maximo), 2),
las = 2,
cex.axis = 0.7)
# Agregar puntos extremos para cerrar el polígono
MC_pol <- c(MC[1] - A, MC, MC[length(MC)] + A)
h_i_pol <- c(0, h_i, 0)
lines(MC_pol,
h_i_pol,
type = "b",
lwd = 3,
pch = 16,
col = "blue")
grid(col = "gray", lty = "dotted")
# 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º3**"),
subtitle = md("Indicadores estadísticos de la variable Latitud (%)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
| Tabla Nº3 | ||||||||
| 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 2 | ||||||||
OUTLIERS
# ============================================================
# OUTLIERS
# ============================================================
# Cuartiles e IQR
Q1 <- quantile(latitud, 0.25, na.rm = TRUE)
Q3 <- quantile(latitud, 0.75, na.rm = TRUE)
IQR_val <- IQR(latitud, na.rm = TRUE)
# Límites para detectar outliers
limite_inferior <- Q1 - 1.5 * IQR_val
limite_superior <- Q3 + 1.5 * IQR_val
# Outliers a la izquierda y derecha
outliers_izquierda <- latitud[latitud < limite_inferior]
outliers_derecha <- latitud[latitud > limite_superior]
# Todos los outliers
outliers <- latitud[
latitud < limite_inferior |
latitud > limite_superior
]
# Cantidades
num_izquierda <- length(outliers_izquierda)
num_derecha <- length(outliers_derecha)
num_outliers <- length(outliers)
# Porcentaje total de outliers
porcentaje_outliers <- round(
(num_outliers / length(latitud)) * 100,
2
)
# Tabla resumen
TablaOutliers <- data.frame(
`Outliers izquierda` = num_izquierda,
`Outliers derecha` = num_derecha,
`Total de outliers` = num_outliers,
`Porcentaje (%)` = porcentaje_outliers,
check.names = FALSE
)
TablaOutliers
## Outliers izquierda Outliers derecha Total de outliers Porcentaje (%)
## 1 4264 755 5019 18.06
# ============================================================
# TABLA GT DE OUTLIERS
# ============================================================
library(gt)
TablaOutliers %>%
gt() %>%
tab_header(
title = "Tabla de Valores Atípicos de LATITUDE",
subtitle = "Distribución de outliers según su ubicación"
) %>%
cols_align(
align = "center",
columns = everything()
) %>%
fmt_number(
columns = c(
`Outliers izquierda`,
`Outliers derecha`,
`Total de outliers`
),
decimals = 0
) %>%
fmt_number(
columns = `Porcentaje (%)`,
decimals = 2
)
| Tabla de Valores Atípicos de LATITUDE | |||
| Distribución de outliers según su ubicación | |||
| Outliers izquierda | Outliers derecha | Total de outliers | Porcentaje (%) |
|---|---|---|---|
| 4,264 | 755 | 5,019 | 18.06 |
La variable LATITUDE presenta valores comprendidos entre −16.23° y 80.81°, con una media de 39.25° y una mediana de 41.20°, lo que indica que gran parte de las muestras se concentra alrededor de latitudes cercanas a los 40°. La desviación estándar de 7.27° y el coeficiente de variación de 18.51 % muestran una dispersión moderada de las ubicaciones respecto a su valor central.
La distribución presenta una asimetría negativa moderada de −0.56, lo que indica una ligera extensión hacia las latitudes más bajas. Asimismo, la curtosis de 8.72 evidencia una distribución con una concentración marcada alrededor de determinados valores y con observaciones alejadas del centro. La presencia de valores atípicos no implica necesariamente errores, ya que LATITUDE es una coordenada geográfica y estos registros pueden corresponder a muestras recolectadas en zonas geográficamente alejadas de aquellas donde se concentra la mayoría de los datos. En conjunto, la variable muestra que las muestras de sedimentos marinos no están distribuidas uniformemente según la latitud, sino que presentan una mayor concentración en determinadas franjas geográficas