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.
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)
n <- length(longitud)
k <- floor(1 + 3.3 * log10(n))
minimo <- min(longitud)
maximo <- max(longitud)
A <- (maximo - minimo) / k
Li <- seq(minimo, maximo - A, by = A)
Ls <- seq(minimo + A, maximo + 1e-6, by = A)
MC <- (Li + Ls) / 2
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"
)
| 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 |
colores <- gray.colors(length(ni), start = 0.3, end = 0.9)
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
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
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
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
lim_sup <- Ls
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
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
Boxplot de la longitud
boxplot(longitud,
horizontal = TRUE,
col = "lightblue",
main = "Boxplot de la longitud",
xlab = "Longitud (grados)")
Boxplot de la longitud
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")
| Media | Mediana | Desviacion_Estandar | Q1 | Q3 | RIC | |
|---|---|---|---|---|---|---|
| 25% | -74.88818 | -73.721 | 19.59102 | -86.2725 | -69.91225 | 16.36025 |