# 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)
