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 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)
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
)
**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
)
**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
)
**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"
)
**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)
**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 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")
| 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")
| Cantidad de outliers | Mínimo | Máximo |
|---|---|---|
| 43 | -124.25 | -0.16 |