ANÁLISIS ESTADÍSTICO DE VOLCANES ACTIVOS A NIVEL GLOBAL
MODELO POISSON

CARRERA DE GEOLOGÍA

GRUPO N°2

ANÁLISIS ESTADÍSTICO INFERENCIAL

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
#CARGA DE DATASET
Volcanes_Globales <- read.csv("global_volcano_eruption_intelligence.csv", header = T, sep = ";", dec = ".")

#SELECCION VARIABLE
num_V<- Volcanes_Globales$volcano_eruption_count_in_dataset

TABLA DE DISTRIBUCIÓN DE FRECUENCIAS

# Tamaño de muestra
n <- length(Num_V)
n
## [1] 898
# Frecuencia absoluta (ni)

ni <- table(Num_V)



# Frecuencia relativa (%)
hi <- (ni / n) * 100

# Tabla de distribución de frecuencias
TDF_erupciones <- data.frame(
  Numero_erupciones = names(ni),
  ni = as.numeric(ni),
  hi = round(as.numeric(hi),2)
)

# Fila Total
fila_total <- data.frame(
  Numero_erupciones = "TOTAL",
  ni = sum(TDF_erupciones$ni),
  hi = 100
)

# Tabla final
TDF_erupciones_final <- rbind(
  TDF_erupciones,
  fila_total
)

# Mostrar tabla
TDF_erupciones_final
##    Numero_erupciones  ni     hi
## 1                  2   1   0.11
## 2                  3   3   0.33
## 3                  4  13   1.45
## 4                  5  24   2.67
## 5                  6  49   5.46
## 6                  7  70   7.80
## 7                  8  82   9.13
## 8                  9  94  10.47
## 9                 10 125  13.92
## 10                11 114  12.69
## 11                12  85   9.47
## 12                13  85   9.47
## 13                14  47   5.23
## 14                15  35   3.90
## 15                16  28   3.12
## 16                17  19   2.12
## 17                18  11   1.22
## 18                19   8   0.89
## 19                20   4   0.45
## 20                21   1   0.11
## 21             TOTAL 898 100.00

TABLA DE FRECUENCIAS

Distribución de Frecuencias del Número de Erupciones Volcánicas
Análisis de frecuencias absolutas y relativas para el ajuste del modelo Poisson
Número de erupciones Frecuencia Absoluta (ni) Frecuencia Relativa (hi) (%)
2 1 0.11
3 3 0.33
4 13 1.45
5 24 2.67
6 49 5.46
7 70 7.80
8 82 9.13
9 94 10.47
10 125 13.92
11 114 12.69
12 85 9.47
13 85 9.47
14 47 5.23
15 35 3.90
16 28 3.12
17 19 2.12
18 11 1.22
19 8 0.89
20 4 0.45
21 1 0.11
TOTAL 898 100.00

GRÁFICA DE DISTRIBUCIÓN DE FRECUENCIA ABSOLUTA

DIAGRAMA DE DISTRIBUCIÓN DE FRECUENCIA ABSOLUTA

hist(
  Num_V,
  breaks = seq(
    min(Num_V) - 0.5,
    max(Num_V) + 0.5,
    by = 1
  ),
  freq = TRUE,
  col = "lightblue",
  border = "black",
  main = "Histograma de frecuencias absolutas del número de erupciones volcánicas",
  xlab = "Número de erupciones",
  ylab = "Cantidad de volcanes",
  xaxt = "n"
)


# Etiquetas del eje X

axis(
  side = 1,
  at = sort(unique(Num_V)),
  labels = sort(unique(Num_V)),
  las = 1
)

CONJETURA DEL MODELO

DEBIDO A LA SIMILITUD VISUAL SE CONJETURA UN MODELO LOGNORMAL

CALCULO DE PARAMETROS

# Tamaño de muestra
n <- length(Num_V)
n
## [1] 898
# Parámetro lambda del modelo Poisson
lambda <- mean(Num_V)
lambda
## [1] 10.58241
# Media del modelo Poisson
media_poisson <- lambda
media_poisson
## [1] 10.58241
# Varianza del modelo Poisson
varianza_poisson <- lambda
varianza_poisson
## [1] 10.58241
# Desviación estándar del modelo Poisson
desviacion_poisson <- sqrt(lambda)
desviacion_poisson
## [1] 3.253061
#FRECUENCIAS OBSERVADAS Y ESPERADAS
# Frecuencia observada (%)

Fo <- TDF_erupciones_final$hi[
  TDF_erupciones_final$Numero_erupciones != "TOTAL"
]

# Valores de número de erupciones
x <- as.numeric(
  TDF_erupciones_final$Numero_erupciones[
    TDF_erupciones_final$Numero_erupciones != "TOTAL"
  ]
)

# Probabilidades esperadas del modelo Poisson
P_poisson <- dpois(
  x,
  lambda = lambda
)

# Frecuencia esperada (%)
Fe <- P_poisson * 100

Fo
##  [1]  0.11  0.33  1.45  2.67  5.46  7.80  9.13 10.47 13.92 12.69  9.47  9.47
## [13]  5.23  3.90  3.12  2.12  1.22  0.89  0.45  0.11
Fe
##  [1]  0.1419903  0.5008661  1.3250922  2.8045325  4.9464499  7.4779054
##  [7]  9.8917782 11.6309785 12.3083729 11.8411083 10.4422840  8.5003448
## [13]  6.4252924  4.5330033  2.9981299  1.8663191  1.0972303  0.6111229
## [19]  0.3233575  0.1629476
par(mar = c(5,5,5,2))

barplot(
  rbind(Fo, Fe),
  beside = TRUE,
  col = c("skyblue", "blue"),
  names.arg = x,
  main = "Gráfica N°2: Comparación de la realidad con el modelo Poisson del número de erupciones volcánicas",
  ylab = "Probabilidad %",
  xlab = "Número de erupciones",
  ylim = c(0, max(c(Fo, Fe))*1.3),
  las = 1
)


# Leyenda

legend(
  "topright",
  legend = c(
    "Realidad",
    "Modelo Poisson"
  ),
  fill = c(
    "skyblue",
    "blue"
  ),
  border = "black",
  bty = "n"
)

GRÁFICA DE CORRELACIÓN DEL MODELO LOGNORMAL Y LA REALIDAD

# ==============================================================================
# GRÁFICA DE CORRELACIÓN ENTRE FRECUENCIAS OBSERVADAS Y ESPERADAS
# MODELO POISSON
# ==============================================================================

# Frecuencias observadas (%)

Fo <- TDF_erupciones_final$hi[
  TDF_erupciones_final$Numero_erupciones != "TOTAL"
]


# Frecuencias esperadas (%)

Fe <- P_poisson * 100



# Gráfica

plot(
  Fo,
  Fe,
  main = "Gráfica N°3: Correlación de frecuencias\nentre la realidad y el modelo Poisson del número de erupciones",
  xlab = "Frecuencia observada (%)",
  ylab = "Frecuencia esperada (%)",
  pch = 19,
  col = "darkblue",
  xlim = c(0, max(c(Fo, Fe)) * 1.1),
  ylim = c(0, max(c(Fo, Fe)) * 1.1)
)


# Línea de ajuste perfecto

abline(
  a = 0,
  b = 1,
  col = "red",
  lwd = 2
)

TESTS DE APROBACIÓN

PEARSON

# Correlación entre realidad y modelo Poisson

Correlacion <- cor(Fo, Fe) * 100

Correlacion
## [1] 98.75272
# Evaluación del Test de Pearson (>80%)

if (Correlacion > 80) {
  
  print("APRUEBA EL TEST DE PEARSON")
  
} else {
  
  print("NO APRUEBA EL TEST DE PEARSON")
  
}
## [1] "APRUEBA EL TEST DE PEARSON"

CHI CUADRADO

# Frecuencias absolutas observadas

Fo_abs <- TDF_erupciones_final$ni[
  TDF_erupciones_final$Numero_erupciones != "TOTAL"
]


# Tamaño de muestra

n <- sum(Fo_abs)

n
## [1] 898
# Frecuencias absolutas esperadas

Fe_abs <- P_poisson * n


# Evitar divisiones por cero

Fe_abs[Fe_abs == 0] <- 1e-9


# Grados de libertad
# gl = categorías - 1 - parámetros estimados
# Poisson estima un parámetro (lambda)

grados_libertad <- length(Fo_abs) - 2

grados_libertad
## [1] 18
# Nivel de confianza

nivel_confianza <- 0.99


# Estadístico Chi-cuadrado

x2 <- sum(
  (Fo_abs - Fe_abs)^2 / Fe_abs
)

x2
## [1] 12.1009
# Valor crítico

umbral_aceptacion <- qchisq(
  nivel_confianza,
  df = grados_libertad
)

umbral_aceptacion
## [1] 34.80531
# Evaluación

if (x2 < umbral_aceptacion) {
  
  print("APRUEBA EL TEST DE CHI-CUADRADO")
  
} else {
  
  print("NO APRUEBA EL TEST DE CHI-CUADRADO")
  
}
## [1] "APRUEBA EL TEST DE CHI-CUADRADO"

TABLA DE RESUMEN

Tabla Nro. 2: Evaluación estadística del modelo Poisson del número de erupciones volcánicas
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Número de erupciones volcánicas 98.75 12.1 34.81

CALCULO DE PROBABILIDAD

PREGUNTA

CALCULO DE VALORES

# Límites

limite_inferior <- 8
limite_superior <- 12


# Parámetro del modelo Poisson

lambda <- mean(Num_V)

lambda
## [1] 10.58241
# Probabilidad entre 8 y 12 erupciones (incluye ambos extremos)

probabilidad_erupciones <- sum(
  dpois(
    limite_inferior:limite_superior,
    lambda = lambda
  )
)

probabilidad_erupciones
## [1] 0.5611452
# Probabilidad en porcentaje

probabilidad_erupciones * 100
## [1] 56.11452

AREA DE PROBABILIDAD

CONCLUSIÓN