ESTADÍSTICA INFERENCIAL
1. CARGA DE LIBRERÍAS Y BASE DE DATOS
# ============================================================
# ESTADÍSTICA INFERENCIAL
# MODELO NORMAL
# VARIABLE: TAMAÑO DE LOS DESLIZAMIENTOS
# ============================================================
# ============================================================
# 1. CARGA DE LIBRERÍAS
# ============================================================
library(dplyr)
library(readxl)
library(gt)
library(knitr)
# ============================================================
# CARGA DE LA BASE DE DATOS
# ============================================================
datos <- read.csv2(
"dataset_deslizamientos.csv",
header = TRUE,
stringsAsFactors = FALSE,
fileEncoding = "latin1"
)
3. TABLA DE FRECUENCIAS
# ============================================================
# 3. TABLA DE FRECUENCIAS
# ============================================================
tabla_modelo <- datos %>%
filter(
!is.na(landslide_size_num)
) %>%
count(
landslide_size_num,
name = "ni"
) %>%
mutate(
categoria = case_when(
landslide_size_num == 1 ~ "small",
landslide_size_num == 2 ~ "medium",
landslide_size_num == 3 ~ "large",
landslide_size_num == 4 ~ "very_large"
),
hi = ni / sum(ni),
hi_porcentaje = hi * 100
) %>%
arrange(
landslide_size_num
) %>%
select(
x = landslide_size_num,
categoria,
ni,
hi,
hi_porcentaje
)
tabla_modelo
## x categoria ni hi hi_porcentaje
## 1 1 small 2767 0.27207473 27.207473
## 2 2 medium 6551 0.64414946 64.414946
## 3 3 large 750 0.07374631 7.374631
## 4 4 very_large 102 0.01002950 1.002950
4.1 CONJETURA DEL MODELO
# ============================================================
# 4. CONJETURA DEL MODELO
# ============================================================
# La variable original es cualitativa ordinal.
#
# Se transformó numéricamente conservando el orden:
#
# small = 1
# medium = 2
# large = 3
# very_large = 4
#
# Se propone evaluar si los valores codificados pueden
# aproximarse mediante una distribución normal.
#
# H0: La variable transformada se ajusta a una distribución normal.
#
# H1: La variable transformada no se ajusta a una distribución normal.
4.2 CÁLCULO DE PARÁMETROS
# ============================================================
# 5. CÁLCULO DE PARÁMETROS
# ============================================================
# Tamaño de la muestra
n <- length(
variable_num
)
# Media
mu_normal <- mean(
variable_num
)
# Desviación estándar
sigma_normal <- sd(
variable_num
)
# Mostrar los parámetros
n
## [1] 10170
mu_normal
## [1] 1.821731
sigma_normal
## [1] 0.5951419
4.3 CÁLCULO DE PROBABILIDADES DEL MODELO
NORMAL
# ============================================================
# 6. CÁLCULO DE PROBABILIDADES
# ============================================================
# Intervalos:
#
# small:
# X < 1.5
#
# medium:
# 1.5 <= X < 2.5
#
# large:
# 2.5 <= X < 3.5
#
# very_large:
# X >= 3.5
# Probabilidad de small
P_small_normal <- pnorm(
1.5,
mean = mu_normal,
sd = sigma_normal
)
# Probabilidad de medium
P_medium_normal <- pnorm(
2.5,
mean = mu_normal,
sd = sigma_normal
) -
pnorm(
1.5,
mean = mu_normal,
sd = sigma_normal
)
# Probabilidad de large
P_large_normal <- pnorm(
3.5,
mean = mu_normal,
sd = sigma_normal
) -
pnorm(
2.5,
mean = mu_normal,
sd = sigma_normal
)
# Probabilidad de very_large
P_very_large_normal <- 1 -
pnorm(
3.5,
mean = mu_normal,
sd = sigma_normal
)
# Vector de probabilidades
prob_normal <- c(
P_small_normal,
P_medium_normal,
P_large_normal,
P_very_large_normal
)
# Verificar que las probabilidades sumen 1
sum(
prob_normal
)
## [1] 1
4.4 FRECUENCIAS ESPERADAS
# ============================================================
# 7. FRECUENCIAS ESPERADAS
# ============================================================
frecuencia_esperada_normal <-
prob_normal * n
# Tabla comparativa
tabla_normal <- tabla_modelo %>%
mutate(
prob_normal =
prob_normal,
esperada_normal =
frecuencia_esperada_normal
)
tabla_normal
## x categoria ni hi hi_porcentaje prob_normal esperada_normal
## 1 1 small 2767 0.27207473 27.207473 0.294393472 2993.98161
## 2 2 medium 6551 0.64414946 64.414946 0.578396043 5882.28776
## 3 3 large 750 0.07374631 7.374631 0.124808917 1269.30668
## 4 4 very_large 102 0.01002950 1.002950 0.002401569 24.42396
5.1 GRÁFICA DEL MODELO NORMAL
# ============================================================
# 8. GRÁFICA
# CURVA NORMAL SOBRE EL HISTOGRAMA
# ============================================================
# Reducir márgenes
par(
mar = c(4, 4, 3, 1)
)
# Histograma
hist(
variable_num,
breaks = c(
0.5,
1.5,
2.5,
3.5,
4.5
),
probability = TRUE,
col = "#EEDFCC",
border = "black",
main =
"Ajuste de la distribución normal",
xlab =
"Tamaño del deslizamiento codificado",
ylab =
"Densidad"
)
# Valores para la curva
x_curve <- seq(
0.5,
4.5,
length.out = 1000
)
# Densidad normal
y_curve <- dnorm(
x_curve,
mean = mu_normal,
sd = sigma_normal
)
# Superponer curva normal
lines(
x_curve,
y_curve,
lwd = 3
)

5.2 GRÁFICA DE CORRELACIÓN
# ============================================================
# 9. GRÁFICA DE CORRELACIÓN
# FRECUENCIAS OBSERVADAS VS ESPERADAS
# ============================================================
# Frecuencias observadas en porcentaje
Fo <- tabla_modelo$hi_porcentaje
# Frecuencias esperadas en porcentaje
Fe <- tabla_normal$prob_normal * 100
# Gráfica de correlación
plot(
Fo,
Fe,
xlim = c(
0,
max(Fo, Fe)
),
ylim = c(
0,
max(Fo, Fe)
),
main =
"Gráfica Nº3: Correlación de frecuencias",
xlab =
"Frecuencia observada (%)",
ylab =
"Frecuencia esperada (%)",
pch = 19,
col = "darkblue"
)
# Línea de igualdad
abline(
a = 0,
b = 1,
col = "red",
lwd = 2
)

5.3 CORRELACIÓN DE PEARSON
# ============================================================
# 10. CORRELACIÓN DE PEARSON
# ============================================================
Correlacion <- cor(
Fo,
Fe
) * 100
Correlacion
## [1] 99.15535
5.4 CHI-CUADRADO Y UMBRAL DE ACEPTACIÓN
# ============================================================
# 11. NÚMERO DE CATEGORÍAS
# ============================================================
K <- length(
tabla_modelo$x
)
K
## [1] 4
# ============================================================
# 12. GRADOS DE LIBERTAD
# ============================================================
gl <- K - 1
gl
## [1] 3
# ============================================================
# 13. CHI-CUADRADO DE PEARSON
# ============================================================
x2 <- sum(
(Fo - Fe)^2 / Fe
)
x2
## [1] 5.428614
# ============================================================
# 14. UMBRAL DE ACEPTACIÓN
# ============================================================
# Nivel de confianza del 99%
# alpha = 0.01
vc <- qchisq(
0.99,
gl
)
vc
## [1] 11.34487
# Comparación del estadístico con el valor crítico
x2 < vc
## [1] TRUE
5.5 TEST DE CHI-CUADRADO
# ============================================================
# 15. TEST DE CHI-CUADRADO CON chisq.test()
# ============================================================
test_normal <- chisq.test(
x = tabla_modelo$ni,
p = prob_normal
)
test_normal
##
## Chi-squared test for given probabilities
##
## data: tabla_modelo$ni
## X-squared = 552.09, df = 3, p-value < 2.2e-16
6.1 TABLA RESUMEN DE BONDAD DEL MODELO
# ============================================================
# 16. TABLA RESUMEN DE BONDAD DEL MODELO
# ============================================================
Variable <- c(
"Tamaño del deslizamiento"
)
tabla_resumen <- data.frame(
Variable,
round(
Correlacion,
2
),
round(
x2,
2
),
round(
vc,
2
)
)
colnames(
tabla_resumen
) <- c(
"Variable",
"Test Pearson (%)",
"Chi Cuadrado",
"Umbral de aceptación"
)
kable(
tabla_resumen,
format = "markdown",
caption =
"Tabla Nº2: Resumen de bondad del modelo normal"
)
Tabla Nº2: Resumen de bondad del modelo normal
| Tamaño del deslizamiento |
99.16 |
5.43 |
11.34 |
6.2 CÁLCULO DE PROBABILIDADES
# ============================================================
# 17. CÁLCULO DE PROBABILIDADES
# ============================================================
# Probabilidad de small
P_small_normal
## [1] 0.2943935
# Probabilidad de medium
P_medium_normal
## [1] 0.578396
# Probabilidad de large
P_large_normal
## [1] 0.1248089
# Probabilidad de very_large
P_very_large_normal
## [1] 0.002401569
# Probabilidad acumulada hasta medium
P_hasta_medium_normal <- pnorm(
2.5,
mean = mu_normal,
sd = sigma_normal
)
# Probabilidad de large o very_large
P_grandes_normal <- 1 -
pnorm(
2.5,
mean = mu_normal,
sd = sigma_normal
)
P_hasta_medium_normal
## [1] 0.8727895
P_grandes_normal
## [1] 0.1272105
6.3 CONCLUSIÓN
# ============================================================
# 18. CONCLUSIÓN
# ============================================================
if (
x2 < vc
) {
conclusion_normal <-
paste(
"El valor de Chi cuadrado calculado es menor",
"que el umbral de aceptación.",
"Por lo tanto, no se rechaza la hipótesis nula",
"y el modelo normal presenta un ajuste compatible",
"con los datos."
)
} else {
conclusion_normal <-
paste(
"El valor de Chi cuadrado calculado es mayor",
"que el umbral de aceptación.",
"Por lo tanto, se rechaza la hipótesis nula",
"y el modelo normal no presenta un ajuste adecuado",
"para los datos."
)
}
conclusion_normal
## [1] "El valor de Chi cuadrado calculado es menor que el umbral de aceptación. Por lo tanto, no se rechaza la hipótesis nula y el modelo normal presenta un ajuste compatible con los datos."