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)
##
## 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
era_t <- Volcanes_Globales$era
#LIMPIEZA DE DATOS
sum(is.na(era_t))
## [1] 0
#ORDEN DE CATEGORIAS
niveles_era <- c(
"Prehistoric/Ancient",
"Classical Antiquity",
"Early Medieval",
"Late Medieval",
"Early Modern",
"Industrial Age",
"Early 20th Century",
"Late 20th Century",
"21st Century"
)
era_t <- factor(
era_t,
levels = niveles_era,
ordered = TRUE
)
# Generar tabla de frecuencias
TDFEra <- table(era_t)
# Convertir datos a dataframe
TDFEra <- as.data.frame(TDFEra)
# Cambiar nombres
colnames(TDFEra) <- c("Era", "Freq")
# Frecuencia absoluta y relativa
TDFEraFinal <- TDFEra %>%
group_by(Era) %>%
summarise(
ni = sum(Freq),
# Frecuencia relativa porcentual
hi = round((ni / sum(TDFEra$Freq)) * 100, 2),
# Frecuencia relativa decimal
hi_decimal = round(ni / sum(TDFEra$Freq), 4)
)
# Agregar numeración en tabla
TDFEraFinal <- TDFEraFinal %>%
mutate(Nro = row_number())
# Añadir fila de totales
TDFEraFinal <- TDFEraFinal %>%
add_row(
Nro = NA,
Era = "Total",
ni = sum(TDFEraFinal$ni),
hi = 100,
hi_decimal = 1
)
# Tabla de presentación
tabla_presentacion <- TDFEraFinal %>%
mutate(
hi = round(hi, 2),
hi_decimal = round(hi_decimal, 4)
)
# Ver tabla
tabla_presentacion
## # A tibble: 7 × 5
## Era ni hi hi_decimal Nro
## <chr> <int> <dbl> <dbl> <int>
## 1 Prehistoric/Ancient 25 2.78 0.0278 1
## 2 Classical Antiquity 11 1.22 0.0122 2
## 3 Medieval 46 5.12 0.0512 3
## 4 Early Modern-Industrial Age 288 32.1 0.321 4
## 5 20th Century 378 42.1 0.421 5
## 6 21st Century 150 16.7 0.167 6
## 7 Total 898 100 1 NA
| Distribución de Probabilidad de las Eras Geológicas | ||||
| Análisis de frecuencias globales según la era de actividad volcánica registrada | ||||
| Era Geológica | Frecuencia Absoluta (ni) | Frecuencia Relativa (hi %) | Probabilidad (pi) | Nro |
|---|---|---|---|---|
| Prehistoric/Ancient | 25 | 2.78 | 0.0278 | 1 |
| Classical Antiquity | 11 | 1.22 | 0.0122 | 2 |
| Medieval | 46 | 5.12 | 0.0512 | 3 |
| Early Modern-Industrial Age | 288 | 32.07 | 0.3207 | 4 |
| 20th Century | 378 | 42.09 | 0.4209 | 5 |
| 21st Century | 150 | 16.70 | 0.1670 | 6 |
| Total | 898 | 100.00 | 1.0000 | NA |
# Eliminar fila de total
TDFEraPlot <- TDFEraFinal %>%
filter(Era != "Total")
par(mar = c(9,4,4,2))
barplot(
TDFEraPlot$hi,
names.arg = TDFEraPlot$Nro,
col = "skyblue",
ylim = c(0,100),
main = "Gráfica N°1: Distribución de probabilidad de la era geológica",
ylab = "Probabilidad (%)",
xlab = ""
)
# Etiqueta del eje X
mtext(
"Era geológica (Nro)",
side = 1,
line = 2
)
# Relación número - categoría
mtext(
paste(
paste(
TDFEraPlot$Nro,
"=",
TDFEraPlot$Era
),
collapse = ", "
),
side = 1,
line = 4,
cex = 0.8
)
# Eliminar fila Total
TDFEraBin <- TDFEraFinal %>%
filter(Era != "Total")
# Número total de observaciones
n <- sum(TDFEraBin$ni)
# Frecuencias observadas
x <- TDFEraBin$ni
# Valores ordinales de las categorías
X <- TDFEraBin$Nro
# Media observada
media_observada <- sum(X*x)/n
# Número de categorías
k <- length(X)
# Parámetro p de la distribución binomial
p <- (media_observada-1)/(k-1)
# Mostrar parámetros
media_observada
## [1] 4.595768
p
## [1] 0.7191537
# Probabilidades del modelo binomial
P_binomial <- dbinom(
X-1,
size = k-1,
prob = p
)
# Mostrar probabilidades
P_binomial
## [1] 0.001747204 0.022370036 0.114564389 0.293361153 0.375599985 0.192357232
# Frecuencias observadas (%)
Fo <- TDFEraBin$hi
# Frecuencias esperadas (%)
Fe <- P_binomial * 100
# Tabla comparación
comparacion <- data.frame(
Era = TDFEraBin$Era,
Observado = Fo,
Esperado = round(Fe,2)
)
comparacion
## Era Observado Esperado
## 1 Prehistoric/Ancient 2.78 0.17
## 2 Classical Antiquity 1.22 2.24
## 3 Medieval 5.12 11.46
## 4 Early Modern-Industrial Age 32.07 29.34
## 5 20th Century 42.09 37.56
## 6 21st Century 16.70 19.24
# GRÁFICA
par(mar=c(5,5,5,2))
barplot(
rbind(Fo,Fe),
beside=TRUE,
col=c("skyblue","blue"),
names.arg=TDFEraBin$Nro,
main="Gráfica N°2: Comparación de la realidad con el modelo binomial de la era geológica",
ylab="Probabilidad (%)",
xlab="Era geológica (Nro)",
ylim=c(0,100)
)
# Leyenda
legend(
x="topright",
legend=c("Realidad","Modelo Binomial"),
fill=c("skyblue","blue"),
border="black",
bty="n"
)
# GRÁFICO DE CORRELACIÓN ENTRE MODELO BINOMIAL Y REALIDAD
# Frecuencias observadas (%)
Fo <- TDFEraFinal$hi[
TDFEraFinal$Era != "Total"
]
# Frecuencias esperadas (%)
Fe <- P_binomial * 100
# Gráfico de dispersión
plot(
Fo,
Fe,
main = "Gráfica N°3: Correlación de frecuencias\nentre realidad y modelo binomial de la era geológica",
xlab = "Frecuencia observada (%)",
ylab = "Frecuencia esperada (%)",
pch = 19,
col = "darkblue",
xlim = c(0,100),
ylim = c(0,100)
)
# Línea de ajuste perfecto
abline(
a = 0,
b = 1,
col = "red",
lwd = 2
)
Correlacion <- cor(Fo, Fe) * 100
Correlacion
## [1] 97.63257
gl <- length(Fo)-1
x2 <- sum((Fo-Fe)^2/Fe)
vc <- qchisq(0.99999999,gl)
#RESULTADOS
x2
## [1] 43.95004
vc
## [1] 45.79459
x2 < vc
## [1] TRUE
| Resumen estadístico del modelo binomial | |||
| Pruebas de ajuste entre frecuencias observadas y esperadas | |||
| Variable | Pearson (%) | Chi cuadrado | Umbral de aceptación |
|---|---|---|---|
| Era geológica | 97.63 | 43.95 | 45.79 |
# 1. Calculamos el valor de la probabilidad dinámicamente
# Categoría Medieval (Nro 3)
porcentaje <- round(
(TDFEraFinal$ni[TDFEraFinal$Era == "Medieval"] /
TDFEraFinal$ni[TDFEraFinal$Era == "Total"]) * 100,
1
)
porcentaje
## [1] 5.1