1. CARGA DE DATOS Y LIBRERÍAS

# Cargar librerías 
library(moments)
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(gt)

# 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

2. SELECCION DE VARIABLE

#Extraer la Variable

mesA_raw <- datos$MONTH_ANAL
print("Primeros valores de MONTH_ANAL:")
## [1] "Primeros valores de MONTH_ANAL:"
print(head(mesA_raw))
## [1]  5.911532 12.451014 10.665839  7.975273  4.137418  6.505348
# Convertir a numérico
mesA_raw <- as.numeric(mesA_raw)

# Eliminar NA y conservar únicamente meses válidos
mesA <- mesA_raw[
  !is.na(mesA_raw) &
  mesA_raw >= 1 &
  mesA_raw <= 12
]
summary(mesA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   4.000   7.000   6.497   9.000  12.000
# Número de observaciones válidas
n <- length(mesA)
print(paste("Número de observaciones válidas (n):", n))
## [1] "Número de observaciones válidas (n): 26647"

La variable MONTH_ANAL representa el mes en que fue realizado el análisis de cada muestra de sedimento marino. Es una variable cualitativa ordinal, porque sus valores del 1 al 12 representan los meses del año, desde enero hasta diciembre, siguiendo un orden cronológico definido. Aunque se encuentra registrada mediante números enteros, estos valores funcionan como códigos que identifican los meses y no como cantidades sobre las cuales tenga sentido realizar operaciones aritméticas. Para el análisis se eliminan los datos faltantes y se conservan únicamente los valores comprendidos entre 1 y 12.

3. TABLA DE DISTRIBUCIÓN DE FRECUENCIA

Tabla de Distribucion de Frecuencia Simple

# Nombres de los meses
meses <- c(
  "Enero",
  "Febrero",
  "Marzo",
  "Abril",
  "Mayo",
  "Junio",
  "Julio",
  "Agosto",
  "Septiembre",
  "Octubre",
  "Noviembre",
  "Diciembre"
)

# Frecuencia absoluta
ni <- table(
  factor(
    mesA,
    levels = 1:12
  )
)

# Frecuencia relativa porcentual
hi <- prop.table(ni) * 100

# Frecuencias acumuladas ascendentes
Ni_asc <- cumsum(ni)
Hi_asc <- (Ni_asc / sum(ni)) * 100

# Frecuencias acumuladas descendentes
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- (Ni_desc / sum(ni)) * 100

# Crear tabla
TablaFrecuencias_MONTH_ANAL <- data.frame(
  Mes = meses,
  ni = as.numeric(ni),
  hi = round(as.numeric(hi), 2),
  Ni_asc = as.numeric(Ni_asc),
  Hi_asc = round(as.numeric(Hi_asc), 2),
  Ni_desc = as.numeric(Ni_desc),
  Hi_desc = round(as.numeric(Hi_desc), 2)
)

# Agregar fila TOTAL
TablaFrecuencias_MONTH_ANAL[
  nrow(TablaFrecuencias_MONTH_ANAL) + 1,
] <- c(
  "TOTAL",
  sum(ni),
  100,
  NA,
  NA,
  NA,
  NA
)

TablaFrecuencias_MONTH_ANAL
##           Mes    ni    hi Ni_asc Hi_asc Ni_desc Hi_desc
## 1       Enero  2487  10.6   2487   10.6   23467     100
## 2     Febrero  1462  6.23   3949  16.83   20980    89.4
## 3       Marzo  1609  6.86   5558  23.68   19518   83.17
## 4       Abril  1799  7.67   7357  31.35   17909   76.32
## 5        Mayo  2149  9.16   9506  40.51   16110   68.65
## 6       Junio  1881  8.02  11387  48.52   13961   59.49
## 7       Julio  2387 10.17  13774   58.7   12080   51.48
## 8      Agosto  2276   9.7  16050  68.39    9693    41.3
## 9  Septiembre  1748  7.45  17798  75.84    7417   31.61
## 10    Octubre  1762  7.51  19560  83.35    5669   24.16
## 11  Noviembre  1957  8.34  21517  91.69    3907   16.65
## 12  Diciembre  1950  8.31  23467    100    1950    8.31
## 13      TOTAL 23467   100   <NA>   <NA>    <NA>    <NA>
TablaFrecuencias_MONTH_ANAL %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº1**"),
    subtitle = md(
      "**Distribución de frecuencias de la variable MONTH_ANAL en depósitos marinos**"
    )
  ) %>%
  tab_source_note(
    source_note = md("**Autor: Grupo 2**")
  ) %>%
  cols_label(
    Mes = "Mes de análisis",
    ni = "Frecuencia (ni)",
    hi = "Frecuencia relativa hi (%)",
    Ni_asc = "Ni Asc",
    Hi_asc = "Hi Asc (%)",
    Ni_desc = "Ni Desc",
    Hi_desc = "Hi Desc (%)"
  ) %>%
  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 = Mes == "TOTAL"
    )
  )
Tabla Nº1
Distribución de frecuencias de la variable MONTH_ANAL en depósitos marinos
Mes de análisis Frecuencia (ni) Frecuencia relativa hi (%) Ni Asc Hi Asc (%) Ni Desc Hi Desc (%)
Enero 2487 10.6 2487 10.6 23467 100
Febrero 1462 6.23 3949 16.83 20980 89.4
Marzo 1609 6.86 5558 23.68 19518 83.17
Abril 1799 7.67 7357 31.35 17909 76.32
Mayo 2149 9.16 9506 40.51 16110 68.65
Junio 1881 8.02 11387 48.52 13961 59.49
Julio 2387 10.17 13774 58.7 12080 51.48
Agosto 2276 9.7 16050 68.39 9693 41.3
Septiembre 1748 7.45 17798 75.84 7417 31.61
Octubre 1762 7.51 19560 83.35 5669 24.16
Noviembre 1957 8.34 21517 91.69 3907 16.65
Diciembre 1950 8.31 23467 100 1950 8.31
TOTAL 23467 100 NA NA NA NA
Autor: Grupo 2

4. GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA

tabla_graf <- TablaFrecuencias_MONTH_ANAL[
  TablaFrecuencias_MONTH_ANAL$Mes != "TOTAL",
]

tabla_graf$ni <- as.numeric(tabla_graf$ni)
tabla_graf$hi <- as.numeric(tabla_graf$hi)
par(mfrow = c(1,1))
par(mar = c(9,4,4,2))

barplot(
  tabla_graf$ni,
  names.arg = tabla_graf$Mes,
  las = 2,
  cex.names = 0.8,
  col = "lightgreen",
  main = "Grafica 1: Distribucion de Cantidad por Mes de Analisis
  de Depositos Marinos",
  xlab = "Mes de analisis",
  ylab = "Cantidad (ni)",
  ylim = c(0, max(tabla_graf$ni) * 1.15)
)

abline(h = 0, lwd = 1)

par(mfrow = c(1,1))
par(mar = c(9,4,4,2))

barplot(tabla_graf$ni,
        names.arg = tabla_graf$mes,
        las = 2,
        cex.names = 0.8,
        col = "skyblue",
        main = "Grafica 2: Distribucion de Cantidad de Mes de 
        Recoleccion de Depositos Marinos",
        xlab = "Mes de recolección",
        ylab = "Cantidad",
        ylim = c(0, length(mesA)))
abline(h = 0, lwd = 1)

par(mfrow = c(1,1))
par(mar = c(9,4,4,2))

barplot(tabla_graf$hi,
        names.arg = tabla_graf$mes,
        las = 2,
        cex.names = 0.8,
        col = "orchid",
        main = "Grafica 3: Distribucion de Cantidad en Porcentaje de 
       Mes de Analisis de Depositos Marinos",
        xlab = "Mes de recolección",
        ylab = "Porcentaje (%)",
        ylim = c(0, max(tabla_graf$hi) * 1.15))
abline(h = 0, lwd = 1)

par(mfrow = c(1,1))
par(mar = c(9,4,4,2))

barplot(tabla_graf$hi,
        names.arg = tabla_graf$mes,
        las = 2,
        cex.names = 0.8,
        col = "mediumpurple",
        main = "Grafica 4: Distribucion de Cantidad en Porcentaje de 
       Mes de Analisis de Depositos Marinos",
        xlab = "Mes de recolección",
        ylab = "Porcentaje (%)",
        ylim = c(0, 100))
abline(h = 0, lwd = 1)

# Dar más espacio al gráfico que a la leyenda
layout(
  matrix(c(1,2), nrow = 1),
  widths = c(2.2, 1)
)

par(mar = c(2,2,4,1))

colores <- rainbow(length(tabla_graf$hi))

pie(
  tabla_graf$hi,
  labels = paste0(
    round(tabla_graf$hi, 2),
    "%"
  ),
  radius = 1,
  col = colores,
  main = "Grafica 5: Distribucion Porcentual por Mes de Analisis",
  cex.main = 0.9,
  cex = 0.7
)

# Leyenda
par(mar = c(2,0,4,2))

plot.new()

legend(
  "center",
  legend = tabla_graf$Mes,
  fill = colores,
  title = "Mes",
  cex = 0.8,
  bg = "white",
  box.lwd = 0.7
)

# Restaurar diseño
layout(1)

5. INDICADORES ESTADÍSTICOS

# Mes modal
moda <- tabla_graf$Mes[
  which.max(tabla_graf$ni)
]

# Frecuencia de la moda
frecuencia_moda <- max(tabla_graf$ni)

# Porcentaje correspondiente
porcentaje_moda <- tabla_graf$hi[
  which.max(tabla_graf$ni)
]

tabla_posicion <- data.frame(
  Indicador = "Moda",
  Categoria = moda,
  Frecuencia = frecuencia_moda,
  Porcentaje = porcentaje_moda
)

tabla_posicion
##   Indicador Categoria Frecuencia Porcentaje
## 1      Moda     Enero       2487       10.6
tabla_posicion %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("**Indicador de posición de la variable MONTH_ANAL**")
  ) %>%
  tab_source_note(
    source_note = md("**Autor: Grupo 2**")
  ) %>%
  cols_label(
    Indicador = "Indicador de posición",
    Categoria = "Categoría modal"
  ) %>%
  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 Nº2
Indicador de posición de la variable MONTH_ANAL
Indicador de posición Categoría modal Frecuencia Porcentaje
Moda Enero 2487 10.6
Autor: Grupo 2

6. CONCLUSION

La variable MONTH_ANAL presenta como mes más frecuente de recolección el mes de Enero. Esto permite identificar el periodo en el cual se realizaron más analisis de muestreo de depósitos marinos, lo cual puede relacionarse con condiciones oceanográficas favorables o con la planificación de las expediciones científicas.