Análisis del ascenso del nivel del mar con tendencia, test de Mann Kendall, análisis por décadas de tendencia (como las islas del Rosario), propuesta de escenario de ascenso para 2050, 2100, 2150 y 2200.
Organización y tratamiento de variables library(tidyverse)
Estadística para test de Mann Kendall library(trend)
Creación de gráficos para series de tiempo library(plotly) library(TSstudio)
Los datos comprenden una ventana de tiempo que se haya entre 1993 y 2023
## Datos de Nivel del mar
nivel_mar= read_table("Nivel_mar.txt", col_names=FALSE)%>%
rename(
años = X1,
mes = X2,
latitud = X3,
longitud = X4, # Corrected the case here
altura_mar = X5 # Corrected the case here
)
##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## X1 = col_double(),
## X2 = col_character(),
## X3 = col_double(),
## X4 = col_double(),
## X5 = col_double()
## )
head(nivel_mar)
## # A tibble: 6 × 5
## años mes latitud longitud altura_mar
## <dbl> <chr> <dbl> <dbl> <dbl>
## 1 1993 Enero 12.6 -81.6 0.0989
## 2 1993 Febrero 12.6 -81.6 0.0257
## 3 1993 Marzo 12.6 -81.6 0.0236
## 4 1993 Abril 12.6 -81.6 0.0041
## 5 1993 Mayo 12.6 -81.6 0.0657
## 6 1993 Junio 12.6 -81.6 -0.0234
Se realizaren modelos lineales para todas las variables. Esto con el objetivo de predecir su comportamiento en el futuro. Para se ello se hacen sus respectivos cálculos a partir de un modelo lineal.
Un modelo de lineal está dado por la ecuación:
\[y = mx+b\]
Donde y es la variable dependiente, x es la variable independiente, m es la pendiente y b el intercepto.
Dado que lo que se pretende estudiar es la variación en el tiempo, es decir x. Se pretende descubrir mediante el modelo el intercepto (b) y la pendiente (m). Se busca comprender las predicciones para los años 2050, 2100, 2150 y 2200
Teniendo como base la anterior ecuación se platea una fución para facilitar los calculos, esta se desarrolla en la siguiente línea de código:
#Variable2 es el intercepto y Variable1 es la pendiente
proyecciones <- function(pendiente, intercepto) {
# Calcular las proyecciones
proyeccion1 <- intercepto + pendiente * (2050.000)
proyeccion2 <- intercepto + pendiente * (2100.000)
proyeccion3 <- intercepto + pendiente * (2150.000)
proyeccion4 <- intercepto + pendiente * (2200.000)
# Mostrar las proyecciones
cat("Proyección para el 2050, predicción para 27 años:", proyeccion1, "\n")
cat("Proyección para el 2100, predicción para 77 años:", proyeccion2, "\n")
cat("Proyección para el 2150, predicción para 127 años:", proyeccion3, "\n")
cat("Proyección para el 2200, predicción para 177 años:", proyeccion4, "\n")
}
#Conversión a ts
nivel_mar_ts <- ts(nivel_mar$altura_mar, start = c(1993, 1), frequency = 12)
# Creación del data.frame
nivel_mar = data.frame(tiempo = time(nivel_mar_ts), altura_mar =as.vector(nivel_mar_ts))
head(nivel_mar)
## tiempo altura_mar
## 1 1993.000 0.0989
## 2 1993.083 0.0257
## 3 1993.167 0.0236
## 4 1993.250 0.0041
## 5 1993.333 0.0657
## 6 1993.417 -0.0234
ts_plot(nivel_mar_ts,
title= "Serie de tiempo de nivel del mar",
Ytitle= "Nivel del mar (m)",
Xtitle = "Tiempo (años)")
Información estadística general de los datos de nivel del mar entre 1993 y 2023
summary(nivel_mar_ts)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.15530 0.00080 0.04905 0.04811 0.09720 0.24030
# Ajustar un modelo lineal
modelo_nivel_mar = lm(nivel_mar$altura_mar ~ nivel_mar$tiempo)
# Datos del módeo lineal
summary(modelo_nivel_mar)
##
## Call:
## lm(formula = nivel_mar$altura_mar ~ nivel_mar$tiempo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.162331 -0.041431 -0.000686 0.039121 0.149335
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7.0989263 0.6799105 -10.44 <2e-16 ***
## nivel_mar$tiempo 0.0035591 0.0003386 10.51 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05656 on 362 degrees of freedom
## Multiple R-squared: 0.2339, Adjusted R-squared: 0.2317
## F-statistic: 110.5 on 1 and 362 DF, p-value: < 2.2e-16
coeficientes_nivel_mar = coef(modelo_nivel_mar)
coeficientes_nivel_mar
## (Intercept) nivel_mar$tiempo
## -7.098926335 0.003559058
proyecciones(coeficientes_nivel_mar[2], coeficientes_nivel_mar[1])
## Proyección para el 2050, predicción para 27 años: 0.1971435
## Proyección para el 2100, predicción para 77 años: 0.3750965
## Proyección para el 2150, predicción para 127 años: 0.5530494
## Proyección para el 2200, predicción para 177 años: 0.7310023
## calculo de mankendal
mk.test(nivel_mar$altura_mar)
##
## Mann-Kendall trend test
##
## data: nivel_mar$altura_mar
## z = 9.1976, n = 364, p-value < 2.2e-16
## alternative hypothesis: true S is not equal to 0
## sample estimates:
## S varS tau
## 2.133600e+04 5.380682e+06 3.230133e-01
Dado que el valor de Z es 9.1976 se concluye que la tendencia es creciente y significativa.