# 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",
header = TRUE,
sep = ",",
dec = ".",
stringsAsFactors = FALSE
)
# Extraer variable
peso_raw<- datos$WEIGHT
cat("Primeros valores de Pesos de cada muestra:\n")
## Primeros valores de Pesos de cada muestra:
head(peso_raw)
## [1] 88.42723 88.42723 NA 463.34356 NA 500.99390
# LIMPIEZA DE LA VARIABLE
peso_raw <- as.numeric(peso_raw)
peso <- peso_raw[
!is.na(peso_raw) &
peso_raw > 0
]
summary(peso)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01 22.32 41.09 110.20 85.78 9086.10
# Número de datos
n <- length(peso)
cat("Número de observaciones válidas (n):", n, "\n\n")
## Número de observaciones válidas (n): 26756
La variable WEIGHT representa el peso registrado de cada muestra de sedimento marino. Es una variable cuantitativa continua, ya que puede tomar valores numéricos, incluidos valores decimales, dentro de un intervalo. Para el análisis se eliminan los valores faltantes y se conservan las observaciones que contienen información válida de peso.
TABLA DE DISTRIBUCIÓN DE CANTIDAD POR STURGES
La distribución dePesos de cada muestra se construye aplicando directamente la regla de Sturges, sin limitar previamente el número de clases. De esta manera, los valores de peso 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(peso)
# Parámetros de Sturges
minimo<- min(peso)
maximo<- max(peso)
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), "gramos\n")
## Rango (R) : 9086.09 gramos
cat(" Número intervalos (k):", k, "\n")
## Número intervalos (k): 15
cat(" Amplitud clase (A) :", round(A, 4), "gramos\n\n")
## Amplitud clase (A) : 605.7393 gramos
# Límites de clase
li <- seq(from = min(peso), to = max(peso) - A, by = A)
ls <- seq(from = min(peso) + A, to = max(peso), 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(peso >= li[i] & peso < ls[i])
}
n_i[length(li)] <- sum(peso >= li[length(li)] & peso<= 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 0.01 605.75 302.88 26013 97.22 26013 97.22 26756 100
## 2 605.75 1211.49 908.62 471 1.76 26484 98.98 743 2.78
## 3 1211.49 1817.23 1514.36 73 0.27 26557 99.26 272 1.02
## 4 1817.23 2422.97 2120.1 63 0.24 26620 99.49 199 0.74
## 5 2422.97 3028.71 2725.84 48 0.18 26668 99.67 136 0.51
## 6 3028.71 3634.45 3331.58 24 0.09 26692 99.76 88 0.33
## 7 3634.45 4240.19 3937.32 25 0.09 26717 99.85 64 0.24
## 8 4240.19 4845.92 4543.06 12 0.04 26729 99.9 39 0.15
## 9 4845.92 5451.66 5148.79 6 0.02 26735 99.92 27 0.1
## 10 5451.66 6057.4 5754.53 6 0.02 26741 99.94 21 0.08
## 11 6057.4 6663.14 6360.27 4 0.01 26745 99.96 15 0.06
## 12 6663.14 7268.88 6966.01 5 0.02 26750 99.98 11 0.04
## 13 7268.88 7874.62 7571.75 3 0.01 26753 99.99 6 0.02
## 14 7874.62 8480.36 8177.49 1 0 26754 99.99 3 0.01
## 15 8480.36 9086.1 8783.23 2 0.01 26756 100 2 0.01
## 16 <NA> <NA> TOTAL 26756 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 variablePesos de cada muestra**")
) %>%
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 variablePesos de cada muestra | ||||||||
| Límite Inferior | Límite Superior | Marca de Clase | ni | hi (%) | Ni Asc | Hi Asc (%) | Ni Desc | Hi Desc (%) |
|---|---|---|---|---|---|---|---|---|
| 0.01 | 605.75 | 302.88 | 26013 | 97.22 | 26013 | 97.22 | 26756 | 100 |
| 605.75 | 1211.49 | 908.62 | 471 | 1.76 | 26484 | 98.98 | 743 | 2.78 |
| 1211.49 | 1817.23 | 1514.36 | 73 | 0.27 | 26557 | 99.26 | 272 | 1.02 |
| 1817.23 | 2422.97 | 2120.1 | 63 | 0.24 | 26620 | 99.49 | 199 | 0.74 |
| 2422.97 | 3028.71 | 2725.84 | 48 | 0.18 | 26668 | 99.67 | 136 | 0.51 |
| 3028.71 | 3634.45 | 3331.58 | 24 | 0.09 | 26692 | 99.76 | 88 | 0.33 |
| 3634.45 | 4240.19 | 3937.32 | 25 | 0.09 | 26717 | 99.85 | 64 | 0.24 |
| 4240.19 | 4845.92 | 4543.06 | 12 | 0.04 | 26729 | 99.9 | 39 | 0.15 |
| 4845.92 | 5451.66 | 5148.79 | 6 | 0.02 | 26735 | 99.92 | 27 | 0.1 |
| 5451.66 | 6057.4 | 5754.53 | 6 | 0.02 | 26741 | 99.94 | 21 | 0.08 |
| 6057.4 | 6663.14 | 6360.27 | 4 | 0.01 | 26745 | 99.96 | 15 | 0.06 |
| 6663.14 | 7268.88 | 6966.01 | 5 | 0.02 | 26750 | 99.98 | 11 | 0.04 |
| 7268.88 | 7874.62 | 7571.75 | 3 | 0.01 | 26753 | 99.99 | 6 | 0.02 |
| 7874.62 | 8480.36 | 8177.49 | 1 | 0 | 26754 | 99.99 | 3 | 0.01 |
| 8480.36 | 9086.1 | 8783.23 | 2 | 0.01 | 26756 | 100 | 2 | 0.01 |
| NA | NA | TOTAL | 26756 | 100 | NA | NA | NA | NA |
| Autor: Grupo 2 | ||||||||
La distribución obtenida mediante la regla de Sturges genera 15 intervalos con una amplitud aproximada de 605.74 gramos. Con el propósito de facilitar la lectura y representación de la distribución, se construye una tabla simplificada utilizando una amplitud de 1000 gramos, obteniendo 9 intervalos de clase con límites más sencillos. Esta agrupación permite visualizar de manera clara la fuerte concentración de observaciones en los pesos inferiores, manteniendo todos los registros de la variable WEIGHT dentro del análisis.
TABLA DE DISTRIBUCIÓN SIMPLIFICADA
# Límites definitivos
limite_inferior <- 0
limite_superior <- 10000
A <- 1000
# Límites de clase
limites <- seq(
from = limite_inferior,
to = limite_superior,
by = A
)
li <- limites[-length(limites)]
ls <- limites[-1]
# Número de clases
k <- length(li)
# Marca de clase
MC <- (li + ls) / 2
# Frecuencias absolutas
n_i <- numeric(k)
for (i in 1:k) {
if (i < k) {
n_i[i] <- sum(
peso >= li[i] &
peso < ls[i]
)
} else {
# Último intervalo incluye el límite superior
n_i[i] <- sum(
peso >= li[i] &
peso <= ls[i]
)
}
}
# Frecuencia relativa
h_i <- round(
(n_i / sum(n_i)) * 100,
2
)
# Acumuladas ascendentes
Ni_asc <- cumsum(n_i)
Hi_asc <- round(
(Ni_asc / sum(n_i)) * 100,
2
)
# Acumuladas descendentes
Ni_desc <- rev(cumsum(rev(n_i)))
Hi_desc <- round(
(Ni_desc / sum(n_i)) * 100,
2
)
# Crear tabla
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
)
# Agregar TOTAL
TablaFrecuenciasAgrupada[
nrow(TablaFrecuenciasAgrupada) + 1,
] <- c(
NA,
NA,
NA,
sum(n_i),
100,
NA,
NA,
NA,
NA
)
TablaFrecuenciasAgrupada
## LI LS MC ni hi Ni_asc Hi_asc Ni_desc Hi_desc
## 1 0 1000 500 26434 98.80 26434 98.80 26756 100.00
## 2 1000 2000 1500 140 0.52 26574 99.32 322 1.20
## 3 2000 3000 2500 90 0.34 26664 99.66 182 0.68
## 4 3000 4000 3500 45 0.17 26709 99.82 92 0.34
## 5 4000 5000 4500 23 0.09 26732 99.91 47 0.18
## 6 5000 6000 5500 8 0.03 26740 99.94 24 0.09
## 7 6000 7000 6500 7 0.03 26747 99.97 16 0.06
## 8 7000 8000 7500 6 0.02 26753 99.99 9 0.03
## 9 8000 9000 8500 2 0.01 26755 100.00 3 0.01
## 10 9000 10000 9500 1 0.00 26756 100.00 1 0.00
## 11 NA NA NA 26756 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: peso"
) %>%
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: peso | ||||||||
| Límite inferior | Límite superior | Marca de clase | ni | hi (%) | Ni ↑ | Hi ↑ (%) | Ni ↓ | Hi ↓ (%) |
|---|---|---|---|---|---|---|---|---|
| 0.00 | 1,000.00 | 500.00 | 26,434 | 98.80 | 26,434 | 98.80 | 26,756 | 100.00 |
| 1,000.00 | 2,000.00 | 1,500.00 | 140 | 0.52 | 26,574 | 99.32 | 322 | 1.20 |
| 2,000.00 | 3,000.00 | 2,500.00 | 90 | 0.34 | 26,664 | 99.66 | 182 | 0.68 |
| 3,000.00 | 4,000.00 | 3,500.00 | 45 | 0.17 | 26,709 | 99.82 | 92 | 0.34 |
| 4,000.00 | 5,000.00 | 4,500.00 | 23 | 0.09 | 26,732 | 99.91 | 47 | 0.18 |
| 5,000.00 | 6,000.00 | 5,500.00 | 8 | 0.03 | 26,740 | 99.94 | 24 | 0.09 |
| 6,000.00 | 7,000.00 | 6,500.00 | 7 | 0.03 | 26,747 | 99.97 | 16 | 0.06 |
| 7,000.00 | 8,000.00 | 7,500.00 | 6 | 0.02 | 26,753 | 99.99 | 9 | 0.03 |
| 8,000.00 | 9,000.00 | 8,500.00 | 2 | 0.01 | 26,755 | 100.00 | 3 | 0.01 |
| 9,000.00 | 10,000.00 | 9,500.00 | 1 | 0.00 | 26,756 | 100.00 | 1 | 0.00 |
| NA | NA | NA | 26,756 | 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)
## 4. GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA
# Límites de la tabla simplificada
limites <- seq(
from = 0,
to = 10000,
by = 1000
)
li <- limites[-length(limites)]
ls <- limites[-1]
MC <- (li + ls) / 2
k <- length(li)
# Etiquetas de los intervalos
etiquetas <- paste0(
"[",
li,
" - ",
ls,
")"
)
# Último intervalo cerrado
etiquetas[length(etiquetas)] <- paste0(
"[",
li[length(li)],
" - ",
ls[length(ls)],
"]"
)
# HISTOGRAMA LOCAL - FRECUENCIAS ABSOLUTAS
hist(
peso,
breaks = limites,
main = "Grafica 1: Distribucion de Cantidad del Peso
de las Muestras de Sedimentos Marinos",
xlab = "Peso (gramos)",
ylab = "Cantidad (ni)",
col = "lightcoral",
border = "white",
xaxt = "n",
ylim = c(0, 2000)
)
axis(
1,
at = limites,
labels = round(limites, 0),
las = 2,
cex.axis = 0.7
)
hist(
peso,
breaks = limites,
main = "Grafica 2: Distribucion de Cantidad del Peso
de las Muestras de Sedimentos Marinos",
xlab = "Peso (gramos)",
ylab = "skyblue",
border = "black",
xaxt = "n",
right = FALSE,
include.lowest = TRUE,
ylim = c(0, max(n_i) * 1.10)
)
axis(
1,
at = limites,
labels = limites,
las = 2,
cex.axis = 0.7
)
barplot(
h_i,
names.arg = etiquetas,
main = "Grafica 3: Distribucion Porcentual Local del Peso",
xlab = "Intervalos de Peso (gramos)",
ylab = "Porcentaje (%)",
col = "mediumpurple",
border = "black",
las = 2,
cex.names = 0.7,
space = 0,
ylim = c(0, 98)
)
barplot(
h_i,
names.arg = etiquetas,
main = "Grafica 4: Distribucion Global Porcentual del Peso
de las Muestras de Sedimentos Marinos",
xlab = "Intervalos de Peso (gramos)",
ylab = "Porcentaje (%)",
col = "darkorange",
border = "black",
las = 2,
cex.names = 0.7,
space = 0,
ylim = c(0, 100)
)
# GRAFICA 5: OJIVAS COMBINADAS DE FRECUENCIAS ABSOLUTAS
# Asegurar que sean vectores numéricos
li <- as.numeric(li)
ls <- as.numeric(ls)
n_i <- as.numeric(n_i)
# Frecuencia acumulada ascendente
Ni_asc <- cumsum(n_i)
# Frecuencia acumulada descendente
Ni_desc <- rev(cumsum(rev(n_i)))
# Coordenadas de las ojivas
x_asc <- c(li[1], ls)
y_asc <- c(0, Ni_asc)
x_desc <- c(li, ls[length(ls)])
y_desc <- c(Ni_desc, 0)
# Comprobar longitudes
cat("x_asc:", length(x_asc), "\n")
## x_asc: 11
cat("y_asc:", length(y_asc), "\n")
## y_asc: 11
cat("x_desc:", length(x_desc), "\n")
## x_desc: 11
cat("y_desc:", length(y_desc), "\n")
## y_desc: 11
# Ojiva ascendente
plot(
x_asc,
y_asc,
type = "b",
main = "Grafica 5: Ojivas Combinadas de Cantidad Acumulada del Peso",
xlab = "Peso (gramos)",
ylab = "Cantidad Acumulada (Ni)",
col = "blue",
lwd = 2,
pch = 16,
las = 1,
xlim = range(c(x_asc, x_desc)),
ylim = c(0, sum(n_i))
)
# Ojiva descendente
lines(
x_desc,
y_desc,
type = "b",
col = "red",
lwd = 2,
pch = 16
)
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 peso de Depòsitos Marinos",
xlab = "peso (gramos)",
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(peso)
boxplot(peso,
horizontal = TRUE,
main = "Grafica 7: Diagrama de Cajade la distribucio de cantidad de la peso en Depòsitos Marinos",
xlab = "peso (gramos)",
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(peso,
breaks = c(li, maximo),
probability = TRUE,
main = "Grafica 8: Histograma y Diagrama de Caja Sobrepuesto",
xlab = "peso (gramos)",
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(peso,
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(peso,
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 del
peso de cada muestra de sedimentos marinos",
xlab = "peso (gramos)",
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 del \n peso de cada muestra de sedimentos marinos", : 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(peso)
maximo <- max(peso)
rango <- maximo - minimo
media <- mean(peso)
mediana <- median(peso)
moda <- as.numeric(names(sort(table(peso), decreasing = TRUE)[1]))
varianza <- var(peso)
desviacion_estandar <- sd(peso)
rango <- range(peso)
coeficiente_variacion <- (desviacion_estandar / media) * 100
asimetria <- skewness(peso)
curtosis <- kurtosis(peso)
TablaIndicadores <- data.frame(
Variable = "peso (%)",
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 peso (%) 0.01 9086.1 110.2 41.09 344.91 312.9811 11.37758 180.687
# Tabla Mejorada
TablaIndicadores %>%
gt() %>%
tab_header(
title = md("**Tabla Nº3**"),
subtitle = md("Indicadores estadísticos de la variable WEIGHT (%)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
| Tabla Nº3 | ||||||||
| Indicadores estadísticos de la variable WEIGHT (%) | ||||||||
| Variable | Minimo | Maximo | Media | Mediana | Desv_Est | CV | Asimetria | Curtosis |
|---|---|---|---|---|---|---|---|---|
| peso (%) | 0.01 | 9086.1 | 110.2 | 41.09 | 344.91 | 312.9811 | 11.37758 | 180.687 |
| Autor: Grupo 2 | ||||||||
OUTLIERS
# Cuartiles
Q1 <- quantile(peso, 0.25)
Q3 <- quantile(peso, 0.75)
IQR_val <- IQR(peso)
# Límites
limite_inferior <- Q1 - 1.5 * IQR_val
limite_superior <- Q3 + 1.5 * IQR_val
#Outliers
outliers <- peso[peso < limite_inferior | peso > 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% 2935 10.97 -72.86029 180.9614
#Tabla Mejorada
TablaOutliers %>%
gt() %>%
tab_header(
title = md("**Tabla Nº4**"),
subtitle = md("Valores atípicos de la variable WEIGHT de sedimentos marinos (%)")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 2")
)
| Tabla Nº4 | |||
| Valores atípicos de la variable WEIGHT de sedimentos marinos (%) | |||
| num_outliers | porc_outliers | minimo | máximo |
|---|---|---|---|
| 2935 | 10.97 | -72.86029 | 180.9614 |
| Autor: Grupo 2 | |||
La variable WEIGHT fluctúa entre 0.01 y 9086.10 gramos, y sus valores giran en torno a la mediana de 41.09 gramos, con una desviación estándar de 344.91 gramos, mostrando un comportamiento altamente heterogéneo. Además, se identificaron 2935 valores atípicos, equivalentes al 10.97 % de las observaciones, según el criterio del rango intercuartílico.
Por todo lo anterior, la distribución de la variable presenta una marcada concentración en los pesos más bajos y una extensión pronunciada hacia valores elevados. Esto se refleja en una asimetría positiva de 11.38 y una curtosis elevada de 180.69, indicando una distribución fuertemente asimétrica y con presencia importante de valores extremos. Sin embargo, estos valores atípicos no deben considerarse automáticamente errores, ya que pueden corresponder a diferencias reales en la cantidad de material recolectado en cada muestra de sedimento marino. En conjunto, la variable WEIGHT presenta una distribución no uniforme, con predominio de muestras de bajo peso y una menor proporción de muestras con pesos considerablemente mayores.