Análisis del ascenso del nivel del mar

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.

Caraga de librerías

  • 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)

Características de los datos

  • Nivel del mar
    • [01] Años
    • [02] Mes
    • [03] Latitud
    • [04] Longitud
    • [05] Nivel mar

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

Calculo de predicciones

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")
}

Nivel del mar

Conversión de las variables

#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 de la serie de tiempo

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

Modelo lineal

# 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

Mankendal - nivel del mar

## 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.