ANÁLISIS ESTADÍSTICO DE VOLCANES ACTIVOS A NIVEL GLOBAL
REGRESIÓN EXPONENCIAL

CARRERA DE GEOLOGÍA

GRUPO N°2

ANÁLISIS ESTADÍSTICO MULTIVARIABLE

CARGA DE LIBRERIAS Y DATOS

## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.6'
## (as 'lib' is unspecified)
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.6'
## (as 'lib' is unspecified)
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.6'
## (as 'lib' is unspecified)
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.6'
## (as 'lib' is unspecified)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Rows: 898 Columns: 77
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (26): volcanoLocationNum, volcano_name, location_description, country, v...
## dbl (43): noaa_event_id, year, month, day, linked_tsunami_event_id, linked_e...
## num  (1): ejecta_volume_km3_min
## lgl  (7): is_significant, publish, is_eruption, tsunami_confirmed, ring_of_f...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

JUSTIFICACIÓN

DEFINICIÓN DE VARIABLES

# Variable Independiente (X)
vei_indice <- as.numeric(Volcanes_Globales$vei)

# Variable Dependiente (Y)
energia_julios <- as.numeric(Volcanes_Globales$energy_release_joules_approx)

# Limpieza de dataset
TPV_inicial <- data.frame(vei_indice = vei_indice, energia_julios = energia_julios)
TPV_inicial <- na.omit(TPV_inicial)
# El VEI puede empezar desde 0; la energía sí debe ser estrictamente mayor a 0
TPV_inicial <- TPV_inicial[TPV_inicial$vei_indice >= 0 & TPV_inicial$energia_julios > 0, ]
total_inicial <- nrow(TPV_inicial)

USO INTERCUARTIL

# Límites para el Índice VEI (X)
q1_p <- quantile(TPV_inicial$vei_indice, 0.25)
q3_p <- quantile(TPV_inicial$vei_indice, 0.75)
iqr_p <- q3_p - q1_p

# Límites para la Energía (Y) en escala logarítmica debido a su enorme magnitud
log_energia <- log10(TPV_inicial$energia_julios)
q1_c <- quantile(log_energia, 0.25)
q3_c <- quantile(log_energia, 0.75)
iqr_c <- q3_c - q1_c

# Aplicar filtro de Outliers IQR
TPV_sin_outliers <- TPV_inicial %>%
  filter(vei_indice >= (q1_p - 1.5 * iqr_p) & vei_indice <= (q3_p + 1.5 * iqr_p)) %>%
  filter(log10(energia_julios) >= (q1_c - 1.5 * iqr_c) & log10(energia_julios) <= (q3_c + 1.5 * iqr_c))

total_restante_outliers <- nrow(TPV_sin_outliers)
outliers_encontrados <- total_inicial - total_restante_outliers

USO DE MEDIA ARITMETICA

# Nota: Asignamos directamente sin colapsar por summarise() para conservar los datos individuales
TPV <- TPV_sin_outliers

row.names(TPV) <- NULL
TPV_final_id <- cbind(Nro = 1:nrow(TPV), TPV)
valores_consolidados_media <- 0

OUTLIERS ENCONTRADOS Y REDUCCIÓN DE FILAS REPETIDAS

# Outliers encontrados por Intercuartil
outliers_encontrados <- total_inicial - nrow(TPV_sin_outliers)
outliers_encontrados
## [1] 0
# Reducción de filas repetidas por Media Aritmética
reduccion_media <- nrow(TPV_sin_outliers) - nrow(TPV)
reduccion_media
## [1] 0
# Total de pares de valores
total_pares <- nrow(TPV)
total_pares
## [1] 714

TABLA DE PARES DE VALORES

TABLA N°1
Primeros 10 pares de valores para la regresión exponencial
VEI Energía liberada (J)
1 6 4.18 × 1018
2 7 4.18 × 1019
3 6 4.18 × 1018
4 6 4.18 × 1018
5 6 4.18 × 1018
6 6 4.18 × 1018
7 5 4.18 × 1017
8 6 4.18 × 1018
9 6 4.18 × 1018
10 6 4.18 × 1018

DIAGRAMA DE DISPERSIÓN

DIAGRAMA ORIGINAL

DIAGRAMA POST FILTRADO

plot(TPV$vei_indice, TPV$energia_julios,
     pch = 16,
     col = rgb(0, 0, 0.8),
     main = "Gráfica Nº1: Diagrama de Dispersión entre el VEI y la Energía Liberada (Sin Outliers)",
     xlab = "Índice de Explosividad Volcánica - VEI (X)",
     ylab = "Energía Liberada - Julios (Y)")

CONJETURA DEL MODELO

DEBIDO A LA SIMILITUD VISUAL EN LA NUBE DE PUNTOS CONJETURAMOS UN MODELO EXPONENCIAL

CALCULO DE PARAMETROS

y1 <- log(TPV$energia_julios)  
x  <- TPV$vei_indice

# ==========================================
# CÁLCULO DE PARÁMETROS
# ==========================================
regresion_exponencial <- lm(y1 ~ x)

# Extraemos Beta0 e Intercepto transformado a escala original (a)
beta0 <- coef(regresion_exponencial)[1]
a <- exp(beta0) 

# Extraemos la Pendiente (b)
b <- coef(regresion_exponencial)[2]

# Mostramos los parámetros calculados en la consola
cat("--- Parámetros Calculados (Escala Original) ---\n")
## --- Parámetros Calculados (Escala Original) ---
cat("Parámetro a (Intercepto original):", a, "\n")
## Parámetro a (Intercepto original): 4.18e+12
cat("Parámetro b (Pendiente):", b, "\n\n")
## Parámetro b (Pendiente): 2.302585

MODELO Y REALIDAD

TESTS DE APROBACIÓN

PEARSON

# Coeficiente de Pearson entre X y la variable Y transformada con ln()
r <- cor(x, y1)

# Multiplicamos por 100 para obtener el porcentaje
r * 100
## [1] 100

COHEFICIENTE DE DETERMINACIÖN

# Coeficiente de Determinación (R²)
r2 <- summary(regresion_exponencial)$r.squared
## Warning in summary.lm(regresion_exponencial): essentially perfect fit: summary
## may be unreliable
# Mostrar en porcentaje
r2 * 100
## [1] 100

EXPLICACIÓN

TABLA DE RESUMEN

Tabla Nº3: Test de Aprobación del Modelo Exponencial
Evaluación estadística entre el VEI y la energía liberada mediante coeficientes de correlación y determinación
Indicador estadístico Resultado
Coeficiente de Pearson (r) 100%
Coeficiente de Determinación (R²) 100%

RESTRICCIONES DEL MODELO

CALCULO DE PRONOSTICOS

CALCULOS

# Se define un valor estimado de VEI para el pronóstico
x_pronostico <- 5

# Extraemos los parámetros del modelo en base e
beta0 <- coef(regresion_exponencial)[1]
a <- exp(beta0) 
b <- coef(regresion_exponencial)[2]

# Cálculo de la Energía Esperada (C_esp)
C_esp <- a * exp(b * x_pronostico)

# Mostramos el resultado en la consola
cat("Para un índice de", x_pronostico, "VEI, la energía esperada es:\n")
## Para un índice de 5 VEI, la energía esperada es:
print(C_esp)
## (Intercept) 
##    4.18e+17

CONCLUSIÓN