spi_indice | R Documentation |
Calcula el Índice Estandarizado de Precipitación para distintas escalas. Las
funciones spi_indice
y spei_indice
usan internamente a la función SPEI::spi
pero tienen la ventaja de devolver el resultado como un data.frame que se
puede usar de manera directa para el análisis de datos con dplyr.
spi_indice(
fecha,
precipitacion,
escalas,
referencia = rep(TRUE, length(fecha)),
distribucion = "Gamma",
...
)
spei_indice(fecha, balance, escalas, distribucion = "log-Logistic", ...)
spi_referencia(fecha, precipitacion)
fecha |
vector de fechas. |
precipitacion |
vector de precipitacion. |
escalas |
vector numérico con las escalas requeridas. La unidad de la escala
está dada por el vector de fechas. Si |
referencia |
serie de precipitación para usar de referencia en el ajuste a la distribución teórica. Puede ser:
|
distribucion |
distribución usada para ajustar los datos. |
... |
argumentos pasados a SPEI::spi |
balance |
balance entre precipitación y evapotranspiración potencial. |
La función spi_indice
toma valores de precipitación mientras que spei_indice
toma
valores del balance entre precipitación y evapotranspiración potencial.
Internamente hacen lo mismo; la única diferencia es la distribución teórica
usada por defecto para ajustar los datos.
Un data.frame con columnas
fecha
(fecha)
escala
(numérico) definidas en el argumento de entrada
spi
o spei
(numérico)
Vicente-Serrano, S. M., Beguería, S. and López-Moreno, J. I.: A multiscalar drought index sensitive to global warming: The standardized precipitation evapotranspiration index, J. Clim., 23(7), \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1175/2009JCLI2909.1")}, 2010.
R Package SPEI: Calculation of the Standardized Precipitation-Evapotranspiration Index
library(dplyr)
data(NH0358)
datos_mensuales <- NH0358 %>%
group_by(fecha = lubridate::round_date(fecha, "month")) %>%
reframe(precip = mean(precip, na.rm = TRUE),
etp = mean(etp, na.rm = TRUE))
# Para escalas de 1 a 12 meses
datos_mensuales %>%
reframe(spi_indice(fecha, precip, escalas = 1:12)) %>%
slice_head(n = 10)
# Si tenemos nuevos datos y hay que calcular el spi nuevamente pero sin que
# cambien los valores previos, hay que usar `referencia`, por ejemplo usando
# los datos desde el comienzo de la seria hasta 2016
# Usando un vector lógico
datos_mensuales %>%
reframe(spi_indice(fecha, precip, escalas = 1:12,
referencia = data.table::year(fecha) < 2016)) %>%
slice_head(n = 10)
# O un data.frame
datos_2016 <- datos_mensuales %>%
filter(data.table::year(fecha) < 2016)
datos_mensuales %>%
reframe(spi_indice(fecha, precip, escalas = 1:12,
referencia = spi_referencia(datos_2016$fecha, datos_2016$precip))) %>%
slice_head(n = 10)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.