1 Introducción

El presente documento tiene como objetivo realizar un análisis estadístico descriptivo de la variable longitud, correspondiente a sedimentos marinos recolectados durante el período comprendido entre los años 2000 y 2024.

El análisis incluye la construcción de una tabla de distribución de frecuencias, representaciones gráficas e indicadores estadísticos, permitiendo interpretar el comportamiento general de la variable estudiada.

2 Lectura y limpieza de datos

setwd("C:/Users/Grace/Favorites/Restudio (Estadistica)")
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)

datos <- read.csv("Sedimentos Marinos.csv",
                  header = TRUE,
                  sep = ";",
                  dec = ".",
                  stringsAsFactors = FALSE)

# Limpieza de LONGITUDE y corrección a negativo (hemisferio oeste)
longitud_raw <- as.numeric(gsub("[^0-9.-]", "", datos$LONGITUDE))
## Warning: NAs introducidos por coerción
# Hacer negativos los valores del hemisferio oeste (América)
longitud <- ifelse(longitud_raw > 0, -longitud_raw, longitud_raw)

# Restringir al dominio válido y eliminar NA
longitud <- longitud[longitud >= -180 & longitud <= 180]
longitud <- na.omit(longitud)

3 Parámetros estadísticos iniciales

n <- length(longitud)
k <- floor(1 + 3.3 * log10(n))

minimo <- min(longitud)
maximo <- max(longitud)
A <- (maximo - minimo) / k

4 Construcción de intervalos de clase

Li <- seq(minimo, maximo - A, by = A)
Ls <- seq(minimo + A, maximo + 1e-6, by = A)
MC <- (Li + Ls) / 2

5 Tabla de distribución de frecuencias

ni <- numeric(length(Li))
for (i in 1:length(Li)) {
  if (i == length(Li)) {
    ni[i] <- sum(longitud >= Li[i])
  } else {
    ni[i] <- sum(longitud >= Li[i] & longitud < Ls[i])
  }
}

hi <- round((ni / n) * 100, 2)
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 4)
Hidsc <- round(rev(cumsum(rev(hi))), 4)

# Crear la tabla con los intervalos
TDF <- data.frame(
  Li = round(Li, 6),
  Ls = round(Ls, 6),
  MC = round(MC, 6),
  ni = ni,
  hi = hi,
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc = Hiasc,
  Hidsc = Hidsc
)

# Agregar fila de TOTALES
totales <- data.frame(
  Li = "",
  Ls = "Total",
  MC = "",
  ni = sum(ni),          # debe ser igual a n
  hi = sum(hi),  # suma real de los porcentajes
  Niasc = "",
  Nidsc = "",
  Hiasc = "",
  Hidsc = ""
)

# Unir la fila de totales
TDF <- rbind(TDF, totales)

# Mostrar la tabla
kable(
  TDF,
  col.names = c("Lím. Inf.", "Lím. Sup.", "Marca Clase", "ni", "hi (%)",
                "Ni ↑", "Ni ↓", "Hi ↑ (%)", "Hi ↓ (%)"),
  align = "c",
  caption = "Distribución de frecuencias de la variable Longitud"
)
Distribución de frecuencias de la variable Longitud
Lím. Inf. Lím. Sup. Marca Clase ni hi (%) Ni ↑ Ni ↓ Hi ↑ (%) Hi ↓ (%)
-124.25 -111.841122 -118.045561 12 2.19 12 548 2.19 100
-111.841122 -99.432243 -105.636682 0 0.00 12 536 2.19 97.81
-99.432243 -87.023364 -93.227804 125 22.81 137 536 25 97.81
-87.023364 -74.614486 -80.818925 104 18.98 241 411 43.98 75
-74.614486 -62.205608 -68.410047 271 49.45 512 307 93.43 56.02
-62.205608 -49.796729 -56.001168 0 0.00 512 36 93.43 6.57
-49.796729 -37.38785 -43.59229 5 0.91 517 36 94.34 6.57
-37.38785 -24.978972 -31.183411 0 0.00 517 31 94.34 5.66
-24.978972 -12.570093 -18.774533 12 2.19 529 31 96.53 5.66
-12.570094 -0.161215 -6.365654 19 3.47 548 19 100 3.47
Total 548 100.00

6 Representaciones gráficas

colores <- gray.colors(length(ni), start = 0.3, end = 0.9)

6.1 Tabla de distribución de la longitud de los sedimentos marinos (Histograma de frecuencia absoluta local)

hist(
  longitud,
  breaks = seq(minimo, maximo + 1e-6, A),
  right = FALSE,
  main = "Gráfica Nº2: Distribución absoluta local de la longitud en sedimentos marinos",
  xlab = "Longitud (grados)",
  ylab = "Cantidad",
  col = colores
)
Distribución absoluta local de la longitud

Distribución absoluta local de la longitud

6.2 Tabla de distribución de la longitud de los sedimentos marinos (Histograma de frecuencia absoluta global)

hist(
  longitud,
  breaks = seq(minimo, maximo + 1e-6, A),
  right = FALSE,
  main = "Gráfica Nº3: Distribución absoluta global de la longitud en sedimentos marinos",
  xlab = "Longitud (grados)",
  ylab = "Cantidad",
  col = colores,
  ylim = c(0, max(ni) + 5)
)
Distribución absoluta global de la longitud

Distribución absoluta global de la longitud

6.3 Tabla de distribución de la longitud de los sedimentos marinos (Histograma de frecuencia relativa local)

intervalos <- paste(
  round(Li, 4),
  round(Ls, 4),
  sep = " - "
)

barplot(
  hi,
  names.arg = intervalos,
  col = colores,
  ylim = c(0, max(hi) + 5),
  space = 0,
  cex.names = 0.6,
  ylab = "Porcentaje (%)",
  xlab = "Longitud (grados)",
  main = "Gráfica Nº4: Distribución relativa local de la longitud en sedimentos marinos",
  las = 2
)
Distribución relativa local de la longitud

Distribución relativa local de la longitud

6.4 Tabla de distribución de la longitud de los sedimentos marinos (Histograma de frecuencia relativa global)

barplot(
  hi,
  names.arg = intervalos,
  col = colores,
  ylim = c(0, 100),
  cex.names = 0.6,
  space = 0,
  ylab = "Porcentaje (%)",
  xlab = "Longitud (grados)",
  main = "Gráfica Nº5: Distribución relativa global de la longitud en sedimentos marinos",
  las = 2
)
Distribución relativa global de la longitud

Distribución relativa global de la longitud

6.5 Ojivas

lim_sup <- Ls

6.5.1 Ojiva absoluta (Ni)

lim_sup <- Ls

plot(lim_sup, Niasc, type = "o", pch = 16, col = "blue",
     main = "Ojiva absoluta de la longitud",
     xlab = "Longitud (grados)",
     ylab = "Frecuencia acumulada absoluta")

lines(lim_sup, Nidsc, type = "o", pch = 16, col = "red")

legend("topleft",
       c("Ni Ascendente", "Ni Descendente"),
       col = c("blue", "red"),
       pch = 16)
Ojiva absoluta de la longitud

Ojiva absoluta de la longitud

6.5.2 Ojiva relativa (Hi)

plot(lim_sup, Hiasc, type="o", pch=16, col="blue",
main="Ojiva relativa de la longitud",
xlab="Longitud (grados)",
ylab="Frecuencia acumulada relativa (%)")

lines(lim_sup, Hidsc, type="o", pch=16, col="red")
legend("bottomright", c("Hi Ascendente","Hi Descendente"),
col=c("blue","red"), pch=16)
Ojiva relativa

Ojiva relativa

6.6 Boxplot

Boxplot de la longitud

boxplot(longitud,
horizontal = TRUE,
col = "lightblue",
main = "Boxplot de la longitud",
xlab = "Longitud (grados)")
Boxplot de la longitud

Boxplot de la longitud

7 Indicadores estadísticos

indicadores <- data.frame(
Media = mean(longitud),
Mediana = median(longitud),
Desviacion_Estandar = sd(longitud),
Q1 = quantile(longitud, 0.25),
Q3 = quantile(longitud, 0.75),
RIC = IQR(longitud)
)

kable(indicadores, caption = "Indicadores estadísticos de la variable Longitud")
Indicadores estadísticos de la variable Longitud
Media Mediana Desviacion_Estandar Q1 Q3 RIC
25% -74.88818 -73.721 19.59102 -86.2725 -69.91225 16.36025

8 Conclusiones