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
elevacionV <- Volcanes_Globales$elevation_m
elevacion <- elevacionV[elevacionV > 0]
## [1] 885
## [1] 6
## [1] 1061
# CALCULO ni y hi
# Frecuencia absoluta ni
ni <- numeric(k)
for (i in 1:k) {
if (i < k) {
ni[i] <- sum(elevacion >= Li[i] &
elevacion < Ls[i],
na.rm = TRUE)
} else {
ni[i] <- sum(elevacion >= Li[i] &
elevacion <= maximo,
na.rm = TRUE)
}
}
# Frecuencia relativa hi
n <- length(elevacion)
hi <- ni / n
# TABLA DE DISTRIBUCION DE FRECUENCIAS
TDF <- data.frame(
Intervalo = levels(Intervalo),
ni = ni,
hi = round(hi, 4)*100
)
# Fila de Total
fila_total <- data.frame(
Intervalo = "TOTAL",
ni = sum(TDF$ni),
hi = 100
)
# Unir fila Total con la tabla
TDFelevacion <- rbind(TDF, fila_total)
# Mostrar tabla
TDFelevacion
## Intervalo ni hi
## 1 [11,1.07e+03] 200 22.60
## 2 (1.07e+03,2.13e+03] 338 38.19
## 3 (2.13e+03,3.19e+03] 199 22.49
## 4 (3.19e+03,4.26e+03] 103 11.64
## 5 (4.26e+03,5.32e+03] 30 3.39
## 6 (5.32e+03,6.38e+03] 15 1.69
## 7 TOTAL 885 100.00
| Distribución de Frecuencias de la Elevación de los Volcanes Activos | ||
| Análisis de frecuencias globales según los intervalos de elevación registrados | ||
| Intervalo de Elevación (m) | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi %) |
|---|---|---|
| [11,1.07e+03] | 200 | 22.60 |
| (1.07e+03,2.13e+03] | 338 | 38.19 |
| (2.13e+03,3.19e+03] | 199 | 22.49 |
| (3.19e+03,4.26e+03] | 103 | 11.64 |
| (4.26e+03,5.32e+03] | 30 | 3.39 |
| (5.32e+03,6.38e+03] | 15 | 1.69 |
| TOTAL | 885 | 100.00 |
hist(
elevacion,
breaks = breaks,
freq = TRUE,
xaxt = "n",
col = "lightblue",
border = "black",
main = "Histograma de frecuencias absolutas",
xlab = "Elevación (m.s.n.m)",
ylab = "Cantidad"
)
axis(
side = 1,
at = breaks,
labels = round(breaks,0),
las = 2
)
# Número total de volcanes
n <- sum(TDFelevacion$ni[TDFelevacion$Intervalo != "TOTAL"])
# Datos agrupados
x <- TDFelevacion$ni[TDFelevacion$Intervalo != "TOTAL"]
# Media observada mediante frecuencias
marcas_clase <- (Li + Ls) / 2
media_observada <- sum(marcas_clase * x) / n
# Varianza observada mediante datos agrupados
varianza_observada <- sum(x * (marcas_clase - media_observada)^2) / (n-1)
# Parámetros Gamma método de momentos
shape <- media_observada^2 / varianza_observada
scale <- varianza_observada / media_observada
media_observada
## [1] 2028.099
varianza_observada
## [1] 1500875
shape
## [1] 2.740525
scale
## [1] 740.0404
# FRECUENCIAS OBSERVADAS
Fo <- TDFelevacion$hi[TDFelevacion$Intervalo != "TOTAL"]
# FRECUENCIAS ESPERADAS MODELO GAMMA
P_gamma <- numeric(length(Li))
for(i in 1:length(Li)){
P_gamma[i] <- pgamma(
Ls[i],
shape = shape,
scale = scale
) -
pgamma(
Li[i],
shape = shape,
scale = scale
)
}
Fe <- P_gamma * 100
Fo
## [1] 22.60 38.19 22.49 11.64 3.39 1.69
Fe
## [1] 22.884788 38.377994 23.069256 10.053645 3.750561 1.276586
# GRÁFICA
par(mar = c(5,5,5,2))
barplot(
rbind(Fo, Fe),
beside = TRUE,
col = c("skyblue", "blue"),
names.arg = TDFelevacion$Intervalo[TDFelevacion$Intervalo != "TOTAL"],
main = "Gráfica N°2: Comparación de la realidad con el\nmodelo Gamma de la elevación de los volcanes activos",
ylab = "Probabilidad (%)",
xlab = "Intervalos de elevación (m)",
ylim = c(0, max(c(Fo,Fe))*1.3),
las = 2
)
# Leyenda
legend(
"topright",
legend = c("Realidad", "Modelo Gamma"),
fill = c("skyblue", "blue"),
border = "black",
bty = "n"
)
# Frecuencias observadas (%)
Fo <- TDFelevacion$hi[TDFelevacion$Intervalo != "TOTAL"]
# Frecuencias esperadas (%)
Fe <- P_gamma * 100
# Gráfica
plot(
Fo,
Fe,
main = "Gráfica N°3: Correlación de frecuencias\nentre la realidad y el modelo Gamma",
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 Gamma
Correlacion <- cor(Fo, Fe) * 100
Correlacion
## [1] 99.85691
# 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 <- TDFelevacion$ni[TDFelevacion$Intervalo != "TOTAL"]
# Tamaño de la muestra
n <- sum(Fo_abs)
# Frecuencias absolutas esperadas
Fe_abs <- P_gamma * n
# Grados de libertad
grados_libertad <- length(Fo_abs) - 3
grados_libertad
## [1] 3
# Nivel de significancia
nivel_significancia <- 0.95
# Estadístico Chi-cuadrado
x2 <- sum((Fo_abs - Fe_abs)^2 / Fe_abs)
x2
## [1] 3.901212
# Valor crítico
umbral_aceptacion <- qchisq(
nivel_significancia,
grados_libertad
)
umbral_aceptacion
## [1] 7.814728
# 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 |
|---|---|---|---|
| Elevación de los volcanes activos | 99.86 | 3.9 | 7.81 |
limite_inferior <- 2133
limite_superior <- 3254
media_completa <- mean(elevacion)
media_completa
## [1] 1990.081
# Probabilidad Gamma
probabilidad_elevacion <- pgamma(
limite_superior,
shape = shape,
scale = scale
) -
pgamma(
limite_inferior,
shape = shape,
scale = scale
)
# En porcentaje
probabilidad_elevacion * 100
## [1] 23.91324
# Número de nuevas mediciones
n_nuevas <- 300
# Probabilidad obtenida anteriormente
p <- probabilidad_elevacion
# Número esperado de volcanes dentro del intervalo
volcanes_esperados <- n_nuevas * p
volcanes_esperados
## [1] 71.73971
## [1] 1990.081
## [1] 1235.579
## [1] 885
## [1] 41.53352
## [1] 1907.014
## [1] 2073.148
| Limite inferior | Media poblacional | Limite superior | Desviación estandar poblacional |
|---|---|---|---|
| 1907.01 | Elevación de los volcanes activos | 2073.15 | 41.53 |