CARRERA DE GEOLOGÍA
GRUPO N°2
ANÁLISIS ESTADÍSTICO INFERENCIAL
## 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
# 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
| 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 |
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
)
# 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 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
)
# 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"
# 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"
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de aceptación |
|---|---|---|---|
| Número de erupciones volcánicas | 98.75 | 12.1 | 34.81 |
# 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