ANÁLISIS ESTADÍSTICO

1. CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

# Ruta completa al archivo
datos <- read.csv("C:/Users/Grace/Downloads/Sedimentos Marinos (1).csv",
                  header = TRUE,
                  sep = ";",
                  dec = ".")

# Limpiamos la Variable
longitud_raw <- as.numeric(gsub("[^0-9.-]", "", datos$LONGITUDE))
longitud <- ifelse(longitud_raw > 0, -longitud_raw, longitud_raw)
longitud <- longitud[longitud >= -180 & longitud <= 180]
longitud <- na.omit(longitud)

# Calculamos el número de datos
n <- length(longitud)

Librerias

**CARGA DE LIBRERÍAS**
library(gt)
library(dplyr)
library(knitr)
library(kableExtra)
library(moments)

Tabla de distribucuón

**TABLA DE DISTRIBUCIÓN DE FRECUENCIA POR STURGES**
# Número de clases con Sturges
k <- floor(1 + 3.3 * log10(n))

# Min, Max
minimo <- min(longitud)
maximo <- max(longitud)

# Rango
R <- maximo - minimo

# Amplitud
A <- R / k

# Límites inferior (Li) y superior (Ls)
Li <- round(seq(from = minimo, to = maximo - A, by = A), 2)
Ls <- round(seq(from = minimo + A, to = maximo, by = A), 2)

# Marca de clase
MC <- round((Li + Ls) / 2, 2)

# Frecuencia Absoluta (ni)
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])
  }
}

# Frecuencia Relativa (hi)
hi <- round((ni / sum(ni)) * 100, 2)

# Frecuencias Acumuladas
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hidsc <- round(rev(cumsum(rev(hi))), 2)

# TABLA FINAL
TDFlongitud <- data.frame(
  Li, Ls, MC, ni, hi, Niasc, Nidsc, Hiasc, Hidsc
)

TDFlongitud
##         Li      Ls      MC  ni    hi Niasc Nidsc  Hiasc  Hidsc
## 1  -124.25 -111.84 -118.04  12  2.19    12   548   2.19 100.00
## 2  -111.84  -99.43 -105.64   0  0.00    12   536   2.19  97.81
## 3   -99.43  -87.02  -93.22 125 22.81   137   536  25.00  97.81
## 4   -87.02  -74.61  -80.82 104 18.98   241   411  43.98  75.00
## 5   -74.61  -62.21  -68.41 271 49.45   512   307  93.43  56.02
## 6   -62.21  -49.80  -56.00   0  0.00   512    36  93.43   6.57
## 7   -49.80  -37.39  -43.59   5  0.91   517    36  94.34   6.57
## 8   -37.39  -24.98  -31.19   0  0.00   517    31  94.34   5.66
## 9   -24.98  -12.57  -18.77  12  2.19   529    31  96.53   5.66
## 10  -12.57   -0.16   -6.36  19  3.47   548    19 100.00   3.47

tabla_gt

**TABLA DE DISTRIBUCIÓN DE LONGITUD POR STURGES FINAL**
# Fila total
fila_total <- data.frame(
  Li = "TOTAL",
  Ls = "",
  MC = "",
  ni = sum(TDFlongitud$ni),
  hi = round(sum(TDFlongitud$hi), 2),
  Niasc = "",
  Nidsc = "",
  Hiasc = "",
  Hidsc = ""
)

TDFlongitud_p <- rbind(TDFlongitud, fila_total)

tabla_longitud_p <- TDFlongitud_p %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nº:1*"),
    subtitle = md("Tabla de distribución de la longitud de los sedimentos marinos")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  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"
  )

tabla_longitud_p
Tabla Nº:1
Tabla de distribución de la longitud de los sedimentos marinos
Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
-124.25 -111.84 -118.04 12 2.19 12 548 2.19 100
-111.84 -99.43 -105.64 0 0.00 12 536 2.19 97.81
-99.43 -87.02 -93.22 125 22.81 137 536 25 97.81
-87.02 -74.61 -80.82 104 18.98 241 411 43.98 75
-74.61 -62.21 -68.41 271 49.45 512 307 93.43 56.02
-62.21 -49.8 -56 0 0.00 512 36 93.43 6.57
-49.8 -37.39 -43.59 5 0.91 517 36 94.34 6.57
-37.39 -24.98 -31.19 0 0.00 517 31 94.34 5.66
-24.98 -12.57 -18.77 12 2.19 529 31 96.53 5.66
-12.57 -0.16 -6.36 19 3.47 548 19 100 3.47
TOTAL 548 100.00
Autor: Grupo 3

Colores

**Colores de las barras**
colores <- gray.colors(length(ni), start = 0.3, end = 0.9)

Gráficas

1.hist_local

**Histograma de cantidad**
hist(
  longitud,
  main = "Gráfica Nº2: Distribución de la longitud de los sedimentos marinos",
  xlab = "Longitud (grados)",
  ylab = "Cantidad",
  col = colores
)

  1. hist_global
**Histograma de cantidad global**
hist(
  longitud,
  main = "Gráfica Nº3: Distribución de la longitud de los sedimentos marinos",
  xlab = "Longitud (grados)",
  ylab = "Cantidad",
  col = colores,
  ylim = c(0, max(ni) + 50)
)

3. bar_local

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

  1. bar_global
**Histograma de cantidad en porcentaje global**
barplot(
  hi,
  names.arg = MC,
  col = colores,
  ylim = c(0, 100),
  cex.names = 0.8,
  space = 0,
  ylab = "Porcentaje (%)",
  xlab = "Longitud (grados)",
  main = "Gráfica Nº5: Distribución de porcentaje de la longitud de los sedimentos marinos",
  las = 2
)

  1. boxplot
**DIAGRAMA DE CAJA**
boxplot(
  longitud,
  horizontal = TRUE,
  main = "Gráfica Nº6: Distribución de la longitud de los sedimentos marinos",
  xlab = "Longitud (grados)",
  col = "lightblue"
)

  1. ojiva_ni
**Ojivas combinadas Ni**
lim_sup <- Ls
plot(lim_sup, Nidsc, type="o",
     main="Gráfica Nº7: Ojiva combinada de la longitud (Ni)",
     ylab="Cantidad Acumulada", col="blue", xlab="Longitud (grados)")

lines(Li, Niasc, col="red", type="o")
legend("topleft", legend = c("Descendente", "Ascendente"), col = c("blue", "red"), lty = 1, pch = 1)

  1. ojiva_hi
**Ojivas combinadas Hi**
plot(lim_sup, Hidsc, type="o",
     main="Gráfica Nº8: Ojiva combinada de la longitud (Hi)",
     ylab="Porcentaje Acumulado (%)", col="blue", xlab="Longitud (grados)")

lines(Li, Hiasc, col="red", type="o")
legend("bottomright", legend = c("Descendente", "Ascendente"), col = c("blue", "red"), lty = 1, pch = 1)

Indicadores y Outlers

**Indicadores Estadísticos**
summary(longitud)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -124.2500  -86.2725  -73.7210  -74.8882  -69.9123   -0.1612
# POSICIÓN
x <- mean(longitud)
Me <- median(longitud)

# DISPERSIÓN
sd_val <- sd(longitud)
CV <- round((sd_val / abs(x)) * 100, 2)

# FORMA
As <- skewness(longitud)
K <- kurtosis(longitud)

# TABLA DE INDICADORES ESTADÍSTICOS
Variable <- c("Longitud (grados)")
TablaIndicadores <- data.frame(Variable, round(minimo,2), round(maximo,2), round(x,2), round(Me,2), round(sd_val,2), CV, round(As,2), round(K,2))
colnames(TablaIndicadores) <- c("Variable","Mínimo","Máximo","Media","Mediana","Desv. Est.","CV (%)","Asimetría","Curtosis")

kable(TablaIndicadores, format = "markdown", caption = "Tabla N°3: Indicadores estadísticos de la variable longitud en sedimentos marinos")
Tabla N°3: Indicadores estadísticos de la variable longitud en sedimentos marinos
Variable Mínimo Máximo Media Mediana Desv. Est. CV (%) Asimetría Curtosis
Longitud (grados) -124.25 -0.16 -74.89 -73.72 19.59 26.16 1.73 8.61

Outliers

**TABLA DE OUTLIERS**
outliers <- boxplot.stats(longitud)$out 
num_outliers <- length(outliers) 
min_outlier <- if(num_outliers > 0) min(outliers) else NA
max_outlier <- if(num_outliers > 0) max(outliers) else NA

TablaOutliers <- data.frame(num_outliers, round(min_outlier,2), round(max_outlier,2))
colnames(TablaOutliers) <- c("Cantidad de outliers","Mínimo","Máximo")

kable(TablaOutliers, format = "markdown", caption = "Tabla N°4: Outliers de la variable longitud en sedimentos marinos")
Tabla N°4: Outliers de la variable longitud en sedimentos marinos
Cantidad de outliers Mínimo Máximo
43 -124.25 -0.16

Conclusiones