es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reconstruir datos diferenciados estacionalmente (y no estacionalmente) en R

He logrado obtener datos estacionarios para usar en las previsiones arima (ver) usando diferenciación estacional y no estacional. Ahora, ¿cómo puedo revertir los datos diferenciados a la fecha original?

raw <- read.csv("https://raw.githubusercontent.com/thistleknot/Python-Stock/master/data/combined_set.csv",row.names=1,header=TRUE)

temp <- raw$CSUSHPINSA

# me indica diferenciar estacionalmente 1 vez
print(nsdiffs(ts(temp,frequency=4)))

temp_1 <- temp-dplyr::lag(temp,1*season)

# me indica que necesito diferenciarlo una vez más
print(ndiffs(temp_2))

temp_2 <- temp_1-dplyr::lag(temp_1,1)

# muestra que los datos son algo estacionarios
plot(temp_2)

# me devuelve el conjunto de datos original si solo tenía diferenciación estacional
na.omit(dplyr::lag(raw$CSUSHPINSA ,4)+temp_1)

# ¿cómo se hace esto con temp_2?

Algunas referencias
https://stackoverflow.com/questions/49903037/pandas-reverse-of-diff
https://stackoverflow.com/questions/47683923/reverse-diff-function-in-r

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para revertir los datos originales utilizando los datos diferenciados, deberás acumular las diferencias.

    Para la diferenciación estacional, puedes utilizar la siguiente fórmula:

    datos_originales = retardo_estacional(datos_diferenciados, frecuencia) + datos_retrasados_originales

    Por ejemplo, si solo has realizado la diferenciación estacional una vez, puedes utilizar:

    na.omit(dplyr::lag(raw$CSUSHPINSA, 4) + temp_1)

    Aquí, na.omit() se utiliza para eliminar cualquier valor NA que pueda generarse al retrasar los datos originales, y dplyr::lag() se utiliza para desplazar los datos originales según la frecuencia estacional (en este caso, 4). Luego añadimos los datos originales retrasados a los datos diferenciados (temp_1) para obtener los datos originales.

    Si has realizado tanto la diferenciación estacional como la no estacional, deberás hacer lo siguiente:

    datos_originales = retardo_no_estacional(retardo_estacional(datos_diferenciados, frecuencia), 1) + datos_retrasados_estacionales + datos_retrasados_originales

    Aquí, primero aplicamos la diferenciación estacional utilizando un retardo estacional de frecuencia, luego aplicamos la diferenciación no estacional utilizando un retardo de 1. Luego añadimos los datos estacionales retrasados, los datos originales retrasados y los datos diferenciados para obtener los datos originales.

    Por ejemplo, si tienes dos niveles de diferenciación (estacional y no estacional), puedes utilizar:

    na.omit(dplyr::lag(raw$CSUSHPINSA, 4) + dplyr::lag(temp_2, 1) + dplyr::lag(temp_1, 1))

    Una vez más, se utiliza na.omit() para eliminar cualquier valor NA, y utilizamos dplyr::lag() para desplazar los datos diferenciados, los datos estacionales retrasados y los datos originales retrasados según la cantidad correspondiente.

Comments are closed.