library(readxl)
library(dplyr)
##
## 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
library(gt)
latitude <- datos$latitude
latitude <- latitude[!is.na(latitude)]
n_lat <- length(latitude)
#Filtro de datos
lat_50_20 <- latitude[
latitude >= -50 &
latitude <= -20
]
#Intervalos
Li_50_20 <- seq(
-50,
-30,
by = 10
)
LS_50_20 <- Li_50_20 + 10
MC_50_20 <- (
Li_50_20 +
LS_50_20
) / 2
k_50_20 <- length(
Li_50_20
)
#Frecuencias
ni_50_20 <- numeric(
k_50_20
)
for (i in 1:k_50_20) {
if (i < k_50_20) {
ni_50_20[i] <- sum(
lat_50_20 >= Li_50_20[i] &
lat_50_20 < LS_50_20[i]
)
} else {
ni_50_20[i] <- sum(
lat_50_20 >= Li_50_20[i] &
lat_50_20 <= -20
)
}
}
hi_50_20 <- (
ni_50_20 /
sum(ni_50_20)
) * 100
NI_50_20 <- cumsum(
ni_50_20
)
NID_50_20 <- rev(
cumsum(
rev(ni_50_20)
)
)
HI_50_20 <- cumsum(
hi_50_20
)
HID_50_20 <- rev(
cumsum(
rev(hi_50_20)
)
)
#Tabla de frecuencias
Tabla_50_20 <- data.frame(
Li = Li_50_20,
LS = LS_50_20,
MC = MC_50_20,
ni = ni_50_20,
hi = round(hi_50_20, 2),
NI = NI_50_20,
NID = NID_50_20,
HI = round(HI_50_20, 2),
HID = round(HID_50_20, 2)
)
tabla_gt_50_20 <- Tabla_50_20 %>%
gt() %>%
tab_header(
title = md("**Tabla N° 2**"),
subtitle = md(
"Distribución de frecuencias de la variable Latitud entre (−50° a −20°) de los eventos a nivel mundial"
)
) %>%
fmt_number(
columns = c(hi, HI, HID),
decimals = 2
) %>%
tab_options(
table.width = pct(100)
) %>%
tab_source_note(
source_note = md(
"Elaborado por: Grupo 2 – Carrera de Geología"
)
)
tabla_gt_50_20
| Tabla N° 2 | ||||||||
| Distribución de frecuencias de la variable Latitud entre (−50° a −20°) de los eventos a nivel mundial | ||||||||
| Li | LS | MC | ni | hi | NI | NID | HI | HID |
|---|---|---|---|---|---|---|---|---|
| -50 | -40 | -45 | 99 | 19.68 | 99 | 503 | 19.68 | 100.00 |
| -40 | -30 | -35 | 147 | 29.22 | 246 | 404 | 48.91 | 80.32 |
| -30 | -20 | -25 | 257 | 51.09 | 503 | 257 | 100.00 | 51.09 |
| Elaborado por: Grupo 2 – Carrera de Geología | ||||||||
# El histograma permite observar la forma de la distribución
# antes de superponer cualquier modelo probabilístico.
par(
mar = c(5, 4, 4, 2)
)
hist(
lat_50_20,
breaks = seq(
-50,
-20,
by = 10
),
freq = TRUE,
col = "#D8C3CA",
border = "#4A1026",
main = "Gráfica Nº 2: Distribución de frecuencias de la variable\nLatitud entre (-50° y -20°)",
xlab = "Latitud (°)",
ylab = "Frecuencia absoluta (ni)"
)
La distribución de las frecuencias de la variable latitud entre −50° y −20° presenta una tendencia decreciente. Por esta razón, se plantea como conjetura que los datos pueden ajustarse a un modelo de probabilidad exponencial.
# Frecuencias observadas de la nueva agrupación
Fo_abs <- ni_50_20
# Para poder aplicar el logaritmo se reemplazan los ceros
# por un valor pequeño
ni_adj <- ni_50_20
ni_adj[
ni_adj == 0
] <- 0.5
# Ajuste del modelo exponencial
ajuste_exp <- lm(
log(ni_adj) ~ MC_50_20
)
# Parámetro del modelo exponencial
b_est <- coef(
ajuste_exp
)[2]
# Mostrar el parámetro calculado
b_est
## MC_50_20
## 0.04769781
# Histograma de las frecuencias observadas
HistoLat1 <- hist(
lat_50_20,
breaks = seq(
-50,
-20,
by = 10
),
freq = TRUE,
col = "#D8C3CA",
border = "#4A1026",
main = "Gráfica Nº 3: Modelo de probabilidad exponencial\nde la variable Latitud entre (-50° y -20°)",
xlab = "Latitud (°)",
ylab = "Frecuencia absoluta (ni)"
)
# Función del modelo exponencial ajustado
f_exp <- function(x) {
exp(
b_est * x
)
}
# Valores del eje X para construir la curva
x_exp <- seq(
-50,
-20,
length.out = 300
)
# Valores teóricos del modelo
y_exp <- f_exp(
x_exp
)
# Ajuste de escala de la curva al histograma
y_exp <- y_exp /
max(y_exp) *
max(ni_50_20)
# Superposición de la curva exponencial
lines(
x_exp,
y_exp,
col = "#6D213C",
lwd = 2
)
# Leyenda
legend(
"topleft",
legend = c(
"Frecuencia observada",
"Modelo exponencial"
),
col = c(
"#D8C3CA",
"#6D213C"
),
lwd = c(
10,
2
),
bty = "n"
)
f_exp <- function(x) {
exp(
b_est * x
)
}
h <- length(
Fo_abs
)
P <- numeric(
h
)
for (i in 1:h) {
P[i] <- integrate(
f_exp,
lower = HistoLat1$breaks[i],
upper = HistoLat1$breaks[i + 1]
)$value
}
P <- P /
sum(P)
Fe_abs <- P *
sum(Fo_abs)
Fo <- (
Fo_abs /
sum(Fo_abs)
) * 100
Fe <- (
Fe_abs /
sum(Fe_abs)
) * 100
Correlacion <- cor(
Fo,
Fe
) * 100
Correlacion
## [1] 99.60892
plot(
Fo,
Fe,
xlim = c(
0,
max(Fo)
),
ylim = c(
0,
max(Fe)
),
main = "Gráfica 3: Correlación de frecuencias",
xlab = "Frecuencia observada (%)",
ylab = "Frecuencia esperada (%)",
pch = 19,
col = "#4A1026"
)
lines(
c(
0,
max(c(Fo, Fe))
),
c(
0,
max(c(Fo, Fe))
),
col = "#6D213C",
lwd = 2
)
#Chi-cuadrado
x2 <- sum(
(
Fo - Fe
)^2 /
Fe
)
gl <- length(
Fo
) - 1
alpha <- 0.05
chi_crit <- qchisq(
1 - alpha,
gl
)
x2
## [1] 0.1380221
gl
## [1] 2
chi_crit
## [1] 5.991465
x2 < chi_crit
## [1] TRUE
#Tablas de Resumen Estadístico
sd_N <- sd(
lat_50_20
)
media_N <- mean(
lat_50_20
)
n_N <- length(
lat_50_20
)
correlacion_N <- Correlacion
x2_N <- x2
umbral_N <- chi_crit
tabla_resumen_norm <- data.frame(
Variable = "Latitud (−50° a −20°)",
Pearson = correlacion_N,
Chi_cuadrado = x2_N,
Umbral = umbral_N
)
tabla_gt_bondad <- tabla_resumen_norm %>%
gt() %>%
tab_header(
title = md("**Tabla N° 3**"),
subtitle = md(
"Resumen del test de bondad al modelo Exponencial"
)
) %>%
cols_label(
Variable = "Variable",
Pearson = "Test de Pearson (%)",
Chi_cuadrado = "Chi-cuadrado (f. relativa)",
Umbral = "Umbral de aceptación"
) %>%
fmt_number(
columns = Pearson,
decimals = 2
) %>%
fmt_number(
columns = c(
Chi_cuadrado,
Umbral
),
decimals = 4
) %>%
tab_options(
table.width = pct(100)
) %>%
tab_source_note(
source_note = md(
"Elaborado por: Grupo 2 – Carrera de Geología"
)
)
tabla_gt_bondad
| Tabla N° 3 | |||
| Resumen del test de bondad al modelo Exponencial | |||
| Variable | Test de Pearson (%) | Chi-cuadrado (f. relativa) | Umbral de aceptación |
|---|---|---|---|
| Latitud (−50° a −20°) | 99.61 | 0.1380 | 5.9915 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||
¿Cuál es la probabilidad de que un evento ocurra en una latitud entre −35° y −25°?
#Gráfica de probabilidades
f_exp <- function(x) {
exp(
b_est * x
)
}
C_exp <- integrate(
f_exp,
lower = -50,
upper = -20
)$value
f_exp_norm <- function(x) {
f_exp(x) /
C_exp
}
x <- seq(
-50,
-20,
length.out = 500
)
y <- f_exp_norm(
x
)
plot(
x,
y,
type = "l",
lwd = 2,
col = "#B56A7D",
main = "Gráfica 4: Cálculo de probabilidades – Modelo exponencial de\nla variable Latitud entre (−50 a −20) a nivel mundial",
xlab = "Latitude (°)",
ylab = "Densidad de probabilidad"
)
x_sec <- seq(
-35,
-25,
by = 0.01
)
y_sec <- f_exp_norm(
x_sec
)
polygon(
c(
x_sec,
rev(x_sec)
),
c(
y_sec,
rep(0, length(y_sec))
),
col = rgb(
109 / 255,
33 / 255,
60 / 255,
0.45
),
border = NA
)
lines(
x_sec,
y_sec,
col = "#6D213C",
lwd = 2
)
legend(
"topleft",
legend = c(
"Modelo exponencial",
"Área de probabilidad"
),
col = c(
"#B56A7D",
"#6D213C"
),
lwd = 4,
bty = "n"
)
# Cálculo basado en la Gráfica 4
f_exp <- function(x) {
exp(
b_est * x
)
}
C_exp <- integrate(
f_exp,
lower = -50,
upper = -20
)$value
f_exp_norm <- function(x) {
f_exp(x) /
C_exp
}
# Probabilidad del área entre -35 y -25
prob_decimal <- integrate(
f_exp_norm,
lower = -35,
upper = -25
)$value
x <- round(
prob_decimal * 100,
1
)
print(
paste(
"La probabilidad es de:",
x,
"%"
)
)
## [1] "La probabilidad es de: 39.3 %"
# Teorema del límite central
error_estandar_N <- sd_N /
sqrt(n_N)
limit_inf_N <- media_N -
1.96 * error_estandar_N
limit_sup_N <- media_N +
1.96 * error_estandar_N
tabla_media_norm <- data.frame(
Limite_inf = limit_inf_N,
Variable = "Latitud (−50° a −20°)",
Limite_sup = limit_sup_N,
Error_estandar = error_estandar_N
)
tabla_gt_limite <- tabla_media_norm %>%
gt() %>%
tab_header(
title = md("**Tabla N° 4**"),
subtitle = md(
"Cálculo del Error Estándar para el Modelo Exponencial"
)
) %>%
cols_label(
Limite_inf = "Límite inferior",
Variable = "Variable",
Limite_sup = "Límite superior",
Error_estandar = "Error estándar"
) %>%
fmt_number(
columns = c(
Limite_inf,
Limite_sup,
Error_estandar
),
decimals = 2
) %>%
tab_options(
table.width = pct(100)
) %>%
tab_source_note(
source_note = md(
"Elaborado por: Grupo 2 – Carrera de Geología"
)
)
tabla_gt_limite
| Tabla N° 4 | |||
| Cálculo del Error Estándar para el Modelo Exponencial | |||
| Límite inferior | Variable | Límite superior | Error estándar |
|---|---|---|---|
| −31.78 | Latitud (−50° a −20°) | −30.36 | 0.36 |
| Elaborado por: Grupo 2 – Carrera de Geología | |||
La variable LATITUD ENTRE (−50° a −20°) sigue un modelo de probabilidad exponencial, aprobando los test de Pearson (99.61%) y Chi-cuadrado (0.1380) con un umbral de aceptación de 5.9915. De esta manera, es posible calcular probabilidades; por ejemplo, la probabilidad de que un evento ocurra en una latitud comprendida entre −35° y −25° es del 39.3%. Además, mediante el teorema del límite central, se determina que la media aritmética poblacional se encuentra entre −31.78° y −30.36°, con un error estándar de 0.36.