# 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
# Cargar datos
datos<- read.csv("C:/Users/arian/OneDrive/Documentos/Universidad/3er SEMESTRE/estadistica/2026/datos/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
# LIMPIEZA DE LA VARIABLE
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úmero de datos
n <- length(longitud)
cat("Número de observaciones válidas (n):", n, "\n\n")
## Número de observaciones válidas (n): 27784
La variable LONGITUDE representa la posición geográfica este-oeste 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 longitudes válidas, comprendidas entre −180° y 180°.
TABLA DE DISTRIBUCIÓN DE CANTIDAD POR STURGES
La distribución de LONGITUDE se construye aplicando directamente la regla de Sturges, sin limitar previamente el número de clases. De esta manera, los valores de longitud 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 este-oeste de las muestras de sedimento marino.
# 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
en Depositos Marinos**")
) %>%
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 LONGITUDE en Depositos Marinos |
||||||||
| 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 2 | ||||||||
La distribución obtenida mediante la regla de Sturges genera 15 intervalos de clase. Aunque esta agrupación es estadísticamente válida, la cantidad de intervalos dificulta la lectura y comparación de la distribución. Por esta razón, se construye una tabla simplificada de 12 clases, utilizando límites más sencillos y una amplitud aproximada de 25 grados. Esta agrupación facilita la interpretación y permite representar posteriormente la distribución mediante un histograma de 12 barras, sin modificar la naturaleza cuantitativa continua de la variable LONGITUDE.
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 <- -175
limite_superior <- 125
# Amplitud de clase
A <- 25
# 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) : 300 grados
cat(" Número intervalos (k):", k, "\n")
## Número intervalos (k): 12
cat(" Amplitud clase (A) :", A, "grados\n\n")
## Amplitud clase (A) : 25 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(longitud >= li[i] & longitud < ls[i])
}
# Corregir el último intervalo para incluir el valor máximo
n_i[length(li)] <- sum(longitud >= li[length(li)] &
longitud <= limite_superior)
# Frecuencias relativas y acumuladas
h_i <- round((n_i / sum(n_i)) * 100, 2)
Ni_asc <- cumsum(n_i)
Hi_asc <- round((Ni_asc / sum(n_i)) * 100, 2)
Ni_desc <- rev(cumsum(rev(n_i)))
Hi_desc <- round((Ni_desc / sum(n_i)) * 100, 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 -175 -150 -162.5 118 0.42 118 0.42 27784 100.00
## 2 -150 -125 -137.5 275 0.99 393 1.41 27666 99.58
## 3 -125 -100 -112.5 706 2.54 1099 3.96 27391 98.59
## 4 -100 -75 -87.5 6170 22.21 7269 26.16 26685 96.04
## 5 -75 -50 -62.5 19957 71.83 27226 97.99 20515 73.84
## 6 -50 -25 -37.5 0 0.00 27226 97.99 558 2.01
## 7 -25 0 -12.5 48 0.17 27274 98.16 558 2.01
## 8 0 25 12.5 137 0.49 27411 98.66 510 1.84
## 9 25 50 37.5 0 0.00 27411 98.66 373 1.34
## 10 50 75 62.5 2 0.01 27413 98.66 373 1.34
## 11 75 100 87.5 18 0.06 27431 98.73 371 1.34
## 12 100 125 112.5 353 1.27 27784 100.00 353 1.27
## 13 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: longitud"
) %>%
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: longitud | ||||||||
| Límite inferior | Límite superior | Marca de clase | ni | hi (%) | Ni ↑ | Hi ↑ (%) | Ni ↓ | Hi ↓ (%) |
|---|---|---|---|---|---|---|---|---|
| −175.00 | −150.00 | −162.50 | 118 | 0.42 | 118 | 0.42 | 27,784 | 100.00 |
| −150.00 | −125.00 | −137.50 | 275 | 0.99 | 393 | 1.41 | 27,666 | 99.58 |
| −125.00 | −100.00 | −112.50 | 706 | 2.54 | 1,099 | 3.96 | 27,391 | 98.59 |
| −100.00 | −75.00 | −87.50 | 6,170 | 22.21 | 7,269 | 26.16 | 26,685 | 96.04 |
| −75.00 | −50.00 | −62.50 | 19,957 | 71.83 | 27,226 | 97.99 | 20,515 | 73.84 |
| −50.00 | −25.00 | −37.50 | 0 | 0.00 | 27,226 | 97.99 | 558 | 2.01 |
| −25.00 | 0.00 | −12.50 | 48 | 0.17 | 27,274 | 98.16 | 558 | 2.01 |
| 0.00 | 25.00 | 12.50 | 137 | 0.49 | 27,411 | 98.66 | 510 | 1.84 |
| 25.00 | 50.00 | 37.50 | 0 | 0.00 | 27,411 | 98.66 | 373 | 1.34 |
| 50.00 | 75.00 | 62.50 | 2 | 0.01 | 27,413 | 98.66 | 373 | 1.34 |
| 75.00 | 100.00 | 87.50 | 18 | 0.06 | 27,431 | 98.73 | 371 | 1.34 |
| 100.00 | 125.00 | 112.50 | 353 | 1.27 | 27,784 | 100.00 | 353 | 1.27 |
| 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(longitud,
breaks = c(li, limite_superior),
main = "Gráfica 1: Distribución de Cantidad de la Longitud
de Depósitos Marinos",
xlab = "Longitud (grados)",
ylab = "Cantidad (ni)",
col = "lightcoral",
border = "white",
xaxt = "n",
ylim = c(0, max(n_i) * 1.10))
axis(1,
at = c(li, limite_superior),
labels = c(li, limite_superior),
las = 2,
cex.axis = 0.7)
# HISTOGRAMA GLOBAL - FRECUENCIAS ABSOLUTAS
hist(longitud,
breaks = c(li, limite_superior),
main = "Gráfica 2: Distribución Global de Cantidad de la Longitud
de Depósitos Marinos",
xlab = "Longitud (grados)",
ylab = "Cantidad (ni)",
col = "steelblue",
border = "white",
xaxt = "n",
ylim = c(0, n))
axis(1,
at = c(li, limite_superior),
labels = c(li, limite_superior),
las = 2,
cex.axis = 0.7)
# HISTOGRAMA LOCAL - FRECUENCIAS RELATIVAS
etiquetas <- paste0(
"[", li, ", ", ls, ")"
)
# Corregir visualmente el último intervalo
etiquetas[length(etiquetas)] <- paste0(
"[", li[length(li)], ", ", ls[length(ls)], "]"
)
bp <- barplot(h_i,
main = "Gráfica 3: Distribución de Porcentaje de la Longitud
de Depósitos Marinos",
xlab = "Intervalos de Longitud",
ylab = "Porcentaje (%)",
col = "mediumpurple",
border = "white",
names.arg = etiquetas,
las = 2,
cex.names = 0.65,
space = 0,
ylim = c(0, max(h_i) * 1.10))
box()
# HISTOGRAMA GLOBAL - FRECUENCIAS RELATIVAS
bp <- barplot(h_i,
main = "Gráfica 4: Distribución Global de Porcentaje
de la Longitud de Depósitos Marinos",
xlab = "Intervalos de Longitud",
ylab = "Porcentaje (%)",
col = "darkorange",
border = "white",
names.arg = etiquetas,
las = 2,
cex.names = 0.65,
space = 0,
ylim = c(0, 100))
box()
# OJIVAS - FRECUENCIAS ABSOLUTAS
plot(MC, Ni_asc,
type = "b",
main = "Gráfica 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 = "Gráfica 6: Ojivas Combinadas de Porcentaje Acumulado
de la Longitud de Depósitos Marinos",
xlab = "Longitud (grados)",
ylab = "Porcentaje Acumulado (%)",
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 = "Gráfica 7: Diagrama de Caja de la Longitud
de 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)
# GRÁFICA 8: HISTOGRAMA CON DIAGRAMA DE CAJA SOBREPUESTO
# Histograma de densidad usando los mismos límites
# de la tabla simplificada
h <- hist(
longitud,
breaks = c(li, limite_superior),
probability = TRUE,
main = "Gráfica 8: Histograma y Diagrama de Caja Sobrepuesto
de la Longitud de Depósitos Marinos",
xlab = "Longitud (grados)",
ylab = "Densidad",
col = "lightgray",
border = "black",
xaxt = "n"
)
# Eje X con los límites de las 12 clases
axis(
1,
at = c(li, limite_superior),
labels = c(li, limite_superior),
las = 2,
cex.axis = 0.7
)
# Altura donde se colocará el boxplot
altura_caja <- max(h$density) * 0.5
# Diagrama de caja horizontal sobre el histograma
boxplot(
longitud,
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"
)
# GRÁFICA 9: POLÍGONO DE FRECUENCIAS RELATIVAS
# CON HISTOGRAMA DE FONDO
h <- hist(
longitud,
breaks = c(li, limite_superior),
plot = FALSE
)
# Sustituir las frecuencias absolutas
# por los porcentajes de la tabla simplificada
h$counts <- h_i
plot(
h,
freq = TRUE,
main = "Gráfica 9: Polígono de Frecuencias Relativas
de la Longitud de Depósitos Marinos",
xlab = "Longitud (grados)",
ylab = "Porcentaje (%)",
col = "white",
border = "black",
xaxt = "n",
ylim = c(0, max(h_i) * 1.15)
)
axis(
1,
at = c(li, limite_superior),
labels = c(li, limite_superior),
las = 2,
cex.axis = 0.7
)
# Puntos adicionales 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(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º3**"),
subtitle = md("Indicadores estadísticos de la variable longitud (%)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
| Tabla Nº3 | ||||||||
| 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 2 | ||||||||
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º4**"),
subtitle = md("Valores atípicos de la variable longitud (%)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
| Tabla Nº4 | |||
| Valores atípicos de la variable longitud (%) | |||
| num_outliers | porc_outliers | minimo | máximo |
|---|---|---|---|
| 5027 | 18.09 | -83.59956 | -62.10694 |
| Autor: Grupo 2 | |||
La variable LONGITUDE presenta valores comprendidos entre −170.52° y 123.56°, con una media de −72.77° y una mediana de −70.97°, lo que indica que una parte importante de las muestras se concentra alrededor de longitudes cercanas a −70°. La desviación estándar de 25.40° refleja una dispersión considerable de las ubicaciones longitudinales respecto a su valor central.
La distribución presenta una asimetría positiva elevada de 4.42, indicando una extensión pronunciada hacia valores de longitud más altos. Asimismo, la curtosis de 36.11 evidencia una distribución fuertemente concentrada y con presencia de valores extremos. Mediante el criterio del rango intercuartílico se identificaron 5027 valores atípicos, equivalentes aproximadamente al 18.09 % de las observaciones. Sin embargo, al tratarse de una coordenada geográfica, estos valores no deben interpretarse automáticamente como errores, ya que pueden corresponder a muestras recolectadas en regiones alejadas de la zona donde se concentra la mayoría de los registros. En conjunto, LONGITUDE presenta una distribución espacial no uniforme, con una fuerte concentración en determinadas regiones longitudinales y una menor cantidad de observaciones en zonas más alejadas.