En el presente documento se desarrolla un análisis estadístico descriptivo de la variable cuantitativa continua Área de los países con volcanes activos, expresada en kilómetros cuadrados (km²), la cual representa la extensión territorial de los países donde se registran volcanes activos a nivel mundial. El análisis comprende la preparación y depuración de los datos, la elaboración de tablas de frecuencias, la construcción de representaciones gráficas y el cálculo de medidas descriptivas adecuadas para variables continuas, con el fin de interpretar las principales características de la distribución del área territorial de los países con presencia de actividad volcánica.
## [1] 898
## [1] 11
Creamos a criterio 6 intervalos para una mejor comprension y visualizacion de los registros
#Frecuencia Absoluta ni
ni <- numeric(length(Li))
for(i in 1:length(Li)){
if(i < length(Li)){
ni[i] <- sum(num_V >= Li[i] & num_V < Ls[i])
} else {
ni[i] <- sum(num_V >= Li[i] & num_V <= Ls[i])
}
}
#Frecuencia relativa hi
hi <- (ni/n)*100
#Frecuencias Acumuladas Ascendentes
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
#Frecuencias Acumuladas Descendentes
Hi_asc <- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))
#dataframe
TDF <- data.frame(
Intervalo = Intervalo,
MC = MC,
ni = ni,
Ni_asc = Ni_asc,
Ni_dsc = Ni_dsc,
hi = round(hi, 2),
Hi_asc = round(Hi_asc, 2),
Hi_dsc = round(Hi_dsc, 2)
)
# Fila de Total
fila_total <- data.frame(
Intervalo = "TOTAL",
MC = "--",
ni = sum(TDF$ni),
Ni_asc = "--",
Ni_dsc = "--",
hi = 100,
Hi_asc = "--",
Hi_dsc = "--"
)
# Unir fila Total con la tabla
TDFnum_V <- rbind(TDF, fila_total)
# Mostrar Tabla
TDFnum_V| Tabla N° 1 | |||||||
| Distribución de frecuencias del número de volcanes por categoría | |||||||
| Intervalo de clase | Marca de clase (MC) |
Frecuencia absoluta ni |
Frecuencia relativa hi |
Ni ↓ | Hi ↓ | Ni ↑ | Hi ↑ |
|---|---|---|---|---|---|---|---|
| [0 - 5) | 2 | 385 | 42.87 | 898 | 100 | 385 | 42.87 |
| [5 - 10) | 8 | 206 | 22.94 | 513 | 57.13 | 591 | 65.81 |
| [10 - 15) | 12 | 63 | 7.02 | 307 | 34.19 | 654 | 72.83 |
| [15 - 20) | 18 | 166 | 18.49 | 244 | 27.17 | 820 | 91.31 |
| [20 - 25) | 22 | 0 | 0.00 | 78 | 8.69 | 820 | 91.31 |
| [25 - 30] | 28 | 78 | 8.69 | 78 | 8.69 | 898 | 100 |
| TOTAL | -- | 898 | 100.00 | -- | -- | -- | -- |
| Elaborado por: Grupo 2 - Carrera de Geología. | |||||||
# margen inferior amplio
par(mar = c(5, 4, 4, 2))
# graficar barras de frecuencia absoluta
pos_x <- barplot(
ni,
col = "red",
border = "black",
space = 0,
las = 1,
main = "Gráfica 1: Distribución de la frecuencia absoluta\n del número de erupciones (local)",
xlab = "Número de erupciones",
ylab = "Cantidad",
axes = TRUE
)
# límites de clase para eje X
cortes_x <- c(Li, max(Ls))
# colocar eje X manualmente
axis(
side = 1,
at = seq(0, length(ni), length.out = length(cortes_x)),
labels = cortes_x,
cex.axis = 0.9
)# margen inferior amplio
par(mar = c(5, 4, 4, 2))
# graficar barras de frecuencia absoluta
pos_x <- barplot(
ni,
col = "red",
border = "black",
space = 0,
las = 1,
main = "Gráfica 2: Distribución de la frecuencia absoluta \n del número de erupciones (global)",
xlab = "Número de erupciones",
ylab = "Cantidad",
ylim = c(0, n),
axes = TRUE
)
# límites de clase para eje X
cortes_x <- c(Li, max(Ls))
# colocar eje X manualmente
axis(
side = 1,
at = seq(0, length(ni), length.out = length(cortes_x)),
labels = cortes_x,
cex.axis = 0.9
)# margen inferior amplio
par(mar = c(5, 4, 4, 2))
# graficar barras
pos_x <- barplot(
hi,
col = "orange",
border = "black",
space = 0,
las = 1,
main = "Gráfica 3: Distribución de la frecuencia relativa \ndel número de erupciones",
xlab = "Número de erupciones (local)",
ylab = "Porcentaje %",
axes = TRUE
)
# límites de clase para eje X
cortes_x <- c(Li, max(Ls))
# colocar eje X manualmente
axis(
side = 1,
at = 0:length(hi),
labels = cortes_x,
cex.axis = 0.9
)# margen inferior amplio
par(mar = c(5, 4, 4, 2))
# graficar barras
pos_x <- barplot(
hi,
col = "orange",
border = "black",
space = 0,
las = 1,
main = "Gráfica 3: Distribución de la frecuencia relativa \ndel número de erupciones (global)",
xlab = "Número de erupciones",
ylab = "Porcentaje %",
ylim = c(0,100),
axes = TRUE
)
# límites de clase para eje X
cortes_x <- c(Li, max(Ls))
# colocar eje X manualmente
axis(
side = 1,
at = 0:length(hi),
labels = cortes_x,
cex.axis = 0.9
)
# Añadir polígono de frecuencias
lines(
x = pos_x,
y = hi,
type = "o",
lwd = 2,
pch = 16,
col = "brown"
)# Margen inferior amplio
par(mar = c(8, 4, 4, 2))
# Coordenadas para las ojivas
x <- c(Li, max(Ls))
Ni_asc_ojiva <- c(0, Ni_asc)
Ni_dsc_ojiva <- c(sum(ni), Ni_dsc)
# Ojiva ascendente
plot(
x,
Ni_asc_ojiva,
type = "o",
pch = 16,
col = "blue",
xaxt = "n",
ylim = c(0, sum(ni)),
xlim = c(min(x), max(x)),
xlab = "Número de erupciones",
ylab = "Frecuencia absoluta acumulada (Ni)",
main = "Gráfica 4: Ojivas de frecuencias absolutas acumuladas"
)
# Ojiva descendente
lines(
x,
Ni_dsc_ojiva,
type = "o",
pch = 16,
col = "red"
)
# Eje X
axis(
side = 1,
at = x,
labels = x,
cex.axis = 0.8
)
# Leyenda
legend(
"right",
legend = c("Ni ascendente", "Ni descendente"),
col = c("blue", "red"),
pch = 16,
lty = 1,
lwd = 2,
bty = "n"
)# Margen inferior amplio
par(mar = c(8, 4, 4, 2))
# Coordenadas para las ojivas
x <- c(Li, max(Ls))
Hi_asc_ojiva <- c(0, Hi_asc)
Hi_dsc_ojiva <- c(100, Hi_dsc)
# Ojiva ascendente
plot(
x,
Hi_asc_ojiva,
type = "o",
pch = 16,
col = "blue",
xaxt = "n",
ylim = c(0, 100),
xlim = c(min(x), max(x)),
xlab = "Número de erupciones",
ylab = "Porcentaje %",
main = "Gráfica 5: Ojivas de frecuencias relativas acumuladas"
)
# Ojiva descendente
lines(
x,
Hi_dsc_ojiva,
type = "o",
pch = 16,
col = "red"
)
# Eje X
axis(
side = 1,
at = x,
labels = x,
cex.axis = 0.8
)
# Leyenda
legend(
"right",
legend = c("Hi ascendente", "Hi descendente"),
col = c("blue", "red"),
pch = 16,
lty = 1,
lwd = 2,
bty = "n"
)# ============================
# CÁLCULO DE ESTADÍSTICOS
# ============================
media_box <- mean(num_V)
mediana_box <- median(num_V)
Q1_box <- quantile(num_V, 0.25)
Q3_box <- quantile(num_V, 0.75)
IQR_box <- IQR(num_V)
# ============================
# CÁLCULO DE VALORES ATÍPICOS
# ============================
lim_inf_outlier_box <- Q1_box - 1.5 * IQR_box
lim_sup_outlier_box <- Q3_box + 1.5 * IQR_box
outliers_box <- num_V[
num_V < lim_inf_outlier_box |
num_V > lim_sup_outlier_box
]
n_outliers_box <- length(outliers_box)
# ============================
# DIAGRAMA DE CAJA Y BIGOTES
# ============================
par(mar = c(5, 4, 4, 2))
boxplot(
num_V,
horizontal = TRUE,
col = "lightblue",
border = "darkblue",
main = "Gráfica 7: Distribución del número de erupciones\ncon detección de valores atípicos",
xlab = "Número de erupciones",
ylab = ""
)
# ============================
# MEDIA
# ============================
points(
media_box,
1,
pch = 23,
bg = "red",
cex = 1.3
)
# ============================
# LEYENDA
# ============================
legend(
"topright",
legend = c(
paste("Media:", round(media_box, 2)),
paste("Mediana:", mediana_box),
paste("Q1:", Q1_box),
paste("Q3:", Q3_box),
paste("Outliers:", n_outliers_box)
),
bty = "n",
cex = 0.85
)# ============================
# INDICADORES DE TENDENCIA CENTRAL
# ============================
X <- mean(num_V)
Me <- median(num_V)
Mo <- as.numeric(names(sort(table(num_V), decreasing = TRUE)[1]))
# ============================
# INDICADORES DE DISPERSIÓN
# ============================
var_numV <- var(num_V)
desv <- sd(num_V)
CV <- (desv / X) * 100
# ============================
# INDICADORES DE FORMA
# ============================
As <- skewness(num_V)
K <- kurtosis(num_V)
# ============================
# DATOS PARA LA TABLA
# ============================
Variable <- "Número de erupciones"
min_numV <- min(num_V)
max_numV <- max(num_V)
Rango <- paste0(
"[",
min_numV,
" - ",
max_numV,
"]"
)
# ============================
# VALORES ATÍPICOS
# ============================
atipicos_reales <- boxplot.stats(num_V)$out
if(length(atipicos_reales) == 0){
valoresatipicos <- "0"
} else {
valoresatipicos <- paste0(
length(atipicos_reales),
" (> ",
min(atipicos_reales),
")"
)
}Tabla Nro. 2 |
|||||||||
| Indicadores estadísticos del número de erupciones de los volcanes a nivel mundial | |||||||||
| Variable | Rango | X | Me | Mo | sd | CV | As | K | Valores.atípicos |
|---|---|---|---|---|---|---|---|---|---|
| Número de erupciones | [1 - 28] | 8.59 | 5 | 1 | 7.66 | 89.15 | 1.03 | -0.02 | 0 |
| Elaborado por: Grupo 2 - Carrera de Geología. | |||||||||
La variable número de erupciones fluctúa entre 1 y 28, y sus valores giran en torno a una media de 8.59. No se evidencian valores atípicos, lo que indica que la distribución de los datos no presenta registros extremos en el número de erupciones de los volcanes analizados.”