# Establecer directorio de trabajo
setwd("/cloud/project")

# Leer el archivo CSV
datos <- read.csv("Sedimentos Marinos.csv", header = TRUE, sep = ";", dec = ".")

# Convertir DEPTH_M a numérico y eliminar valores NA
datos$DEPTH_M <- as.numeric(as.character(datos$DEPTH_M))
## Warning: NAs introduced by coercion
profundidad <- na.omit(datos$DEPTH_M)

# ======================
# Tabla de frecuencias manual (regla de Sturges)
# ======================
n <- length(profundidad)
k <- ceiling(1 + 3.322 * log10(n))          # Número de intervalos
R <- max(profundidad) - min(profundidad)    # Rango
A <- ceiling(R / k)                        # Amplitud del intervalo

# Límites inferiores y superiores
lim_inf <- seq(from = floor(min(profundidad)), by = A, length.out = k)
lim_sup <- c(lim_inf[-1], max(profundidad) + 1e-6)

# Marca de clase
MC <- (lim_inf + lim_sup) / 2

# Frecuencias absolutas (ni)
ni <- numeric(k)
for (i in 1:k) {
  if (i == k) {
    ni[i] <- sum(profundidad >= lim_inf[i] & profundidad <= lim_sup[i])
  } else {
    ni[i] <- sum(profundidad >= lim_inf[i] & profundidad < lim_sup[i])
  }
}

# Frecuencias relativas
hi <- round(ni / sum(ni), 4)                    # decimal
hi_porcent <- round(100 * ni / sum(ni), 2)     # en porcentaje

# Frecuencias acumuladas
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))

Fi_asc <- round(cumsum(hi), 4)
Fi_desc <- round(rev(cumsum(rev(hi))), 4)

Fi_asc_porcent <- cumsum(hi_porcent)
Fi_desc_porcent <- rev(cumsum(rev(hi_porcent)))

# Tabla de frecuencias completa
tabla_frecuencia <- data.frame(
  Intervalo = paste0(round(lim_inf, 2), " - ", round(lim_sup, 2)),
  MC = round(MC, 2),
  ni = ni,
  hi = hi,
  hi_porcent = hi_porcent,
  Ni_asc = Ni_asc,
  Fi_asc = Fi_asc,
  Fi_asc_porcent = Fi_asc_porcent,
  Ni_desc = Ni_desc,
  Fi_desc = Fi_desc,
  Fi_desc_porcent = Fi_desc_porcent
)

print(tabla_frecuencia, row.names = FALSE)
##      Intervalo    MC    ni     hi hi_porcent Ni_asc Fi_asc Fi_asc_porcent
##  -9999 - -8869 -9434  1693 0.1194      11.94   1693 0.1194          11.94
##  -8869 - -7739 -8304     0 0.0000       0.00   1693 0.1194          11.94
##  -7739 - -6609 -7174     0 0.0000       0.00   1693 0.1194          11.94
##  -6609 - -5479 -6044     0 0.0000       0.00   1693 0.1194          11.94
##  -5479 - -4349 -4914     0 0.0000       0.00   1693 0.1194          11.94
##  -4349 - -3219 -3784     0 0.0000       0.00   1693 0.1194          11.94
##  -3219 - -2089 -2654     0 0.0000       0.00   1693 0.1194          11.94
##   -2089 - -959 -1524     0 0.0000       0.00   1693 0.1194          11.94
##     -959 - 171  -394 11400 0.8042      80.42  13093 0.9236          92.36
##     171 - 1301   736   524 0.0370       3.70  13617 0.9606          96.06
##    1301 - 2431  1866   268 0.0189       1.89  13885 0.9795          97.95
##    2431 - 3561  2996    95 0.0067       0.67  13980 0.9862          98.62
##    3561 - 4691  4126   150 0.0106       1.06  14130 0.9968          99.68
##    4691 - 5821  5256    23 0.0016       0.16  14153 0.9984          99.84
##    5821 - 6945  6383    22 0.0016       0.16  14175 1.0000         100.00
##  Ni_desc Fi_desc Fi_desc_porcent
##    14175  1.0000          100.00
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##    12482  0.8806           88.06
##     1082  0.0764            7.64
##      558  0.0394            3.94
##      290  0.0205            2.05
##      195  0.0138            1.38
##       45  0.0032            0.32
##       22  0.0016            0.16
#View(tabla_frecuencia)

# ======================
# 1. Diagrama de caja (Boxplot)
# ======================
boxplot(profundidad,
        main = "Diagrama de Caja de Profundidad (DEPTH_M)",
        ylab = "Profundidad (m)",
        col = "lightblue",
        border = "black")

# Versión horizontal (opcional)
boxplot(profundidad, horizontal = TRUE,
        main = "Diagrama de Caja de Profundidad (DEPTH_M)",
        xlab = "Profundidad (m)",
        col = "lightgreen",
        border = "black")

# ======================
# 2. Histograma
# ======================
hist(profundidad,
     main = "Histograma de Profundidad (DEPTH_M)",
     xlab = "Profundidad (m)",
     ylab = "Frecuencia absoluta",
     col = "skyblue",
     border = "black")

# ======================
# 3. Ojivas combinadas: Frecuencias absolutas acumuladas
# ======================
# Preparar puntos para las ojivas
limites_asc <- c(min(profundidad) - A, lim_sup)        # empieza un poco antes
limites_desc <- c(lim_sup, max(profundidad) + A)       # termina un poco después

puntos_asc_Ni <- c(0, Ni_asc)
puntos_desc_Ni <- c(Ni_desc, 0)

plot(limites_asc, puntos_asc_Ni, type = "o", col = "blue", pch = 16,
     xlab = "Profundidad (m)", ylab = "Frecuencia acumulada absoluta (Ni)",
     main = "Ojivas de Frecuencias Absolutas Acumuladas",
     ylim = c(0, max(Ni_asc) * 1.1))

lines(limites_desc, puntos_desc_Ni, type = "o", col = "red", pch = 17)

legend("topleft",
       legend = c("Ojiva Ascendente (Ni)", "Ojiva Descendente (Ni)"),
       col = c("blue", "red"),
       lty = 1, pch = c(16, 17), cex = 0.9)

# ======================
# 4. Ojivas combinadas: Frecuencias relativas acumuladas en %
# ======================
puntos_asc_Hi <- c(0, Fi_asc_porcent)
puntos_desc_Hi <- c(Fi_desc_porcent, 0)

plot(limites_asc, puntos_asc_Hi, type = "o", col = "darkgreen", pch = 16,
     xlab = "Profundidad (m)", ylab = "Frecuencia acumulada relativa (%)",
     main = "Ojivas de Frecuencias Relativas Acumuladas (%)",
     ylim = c(0, 105))

lines(limites_desc, puntos_desc_Hi, type = "o", col = "orange", pch = 17)

legend("bottomright",
       legend = c("Ojiva Ascendente (Hi %)", "Ojiva Descendente (Hi %)"),
       col = c("darkgreen", "orange"),
       lty = 1, pch = c(16, 17), cex = 0.9)