AURORA GONZALEZ VIDAL
2016-Feb-08 13:00 UTC
[R-es] tamaño de rolling window (series temporales)
Hola!! Estoy intentando evaluar mi modelo de series temporales (uso auto.arima). Para ello he implemetado el método "rolling window" que se basa en ir añadiendo progresivamente datos al conjunto de train para testar el modelo. Por ejemplo: - Train: 1 año, test: día 1 (24 observaciones, una por hora) --> evalúo ese día (RMSE por ejemplo) - Train: 1 año + 1 día, test: día 2 --> evalúo ese día (RMSE) - Train: 1 año + 2 días, test: día 3 --> evalúo ese día (RMSE) ... así hasta el final. Después, saco la media y la desviación estándard de la RMSE y considero que esa es la evaluación de mi modelo. La duda es, ¿dónde empiezo? Es decir, ¿hago este proceso 10 veces (con 10 días), 50 veces (con 50 días)...? ¿Lo hago con un porcentaje específico del total de observaciones? No es lo mismo pero para los métodos de machine learning se coge 75 % train y 25 % test. ¿Hay algo análogo? Esto sería más bien como los resamplings (leave one out)... que tú decides cuántos hacer pero querría saber si hay algún consenso. He leído por ahí que el 50% de la muestra estaría bien http://www.early-warning-signals.org/time-series-methods/metric-based-indicators/general-steps-for-rolling-window-metrics/ pero tengo datos desde 2014, o sea, más de 17520 obsrvaciones ¿opiniones? Si alguien puede responder por aquí bien, y si hay algún experto por Murcia o alrededores estaré encantada de invitarle a un café. Saludos y muchas gracias. ------ Aurora González Vidal Phd student in Data Analytics for Energy Efficiency Faculty of Computer Sciences University of Murcia @. aurora.gonzalez2 en um.es T. 868 88 7866 www.um.es/ae [[alternative HTML version deleted]]
Hola, Sí, una forma de hacerlo es utilizando el concepto de "Time slicing" que implementa el paquete de "caret". Efectivamente es un concepto para hacer cross-validation a la hora de evaluar tu modelo. Como referencias, te recomiendo esto: - http://stackoverflow.com/questions/24758218/time-series-data-spliting-and-model-evaluation - http://stackoverflow.com/questions/29209570/how-to-use-cross-validation-method-time-slices-using-caret-ensemble-package-in-r - Y que revises el capítulo 4 (Over-Fitting and Model Tunning) del libro de Max Kuhn (Applied Predictive Modeling). Lamentablemente no estoy en Murcia para que me invites a un café... Saludos, Carlos Ortega www.qualityexcellence.es El 8 de febrero de 2016, 14:00, AURORA GONZALEZ VIDAL < aurora.gonzalez2 en um.es> escribió:> Hola!! > > Estoy intentando evaluar mi modelo de series temporales (uso auto.arima). > Para ello he implemetado el método "rolling window" que se basa en ir > añadiendo progresivamente datos al conjunto de train para testar el > modelo. Por ejemplo: > > - Train: 1 año, test: día 1 (24 observaciones, una por hora) --> evalúo > ese día (RMSE por ejemplo) > - Train: 1 año + 1 día, test: día 2 --> evalúo ese día (RMSE) > - Train: 1 año + 2 días, test: día 3 --> evalúo ese día (RMSE) > ... > > así hasta el final. Después, saco la media y la desviación estándard de > la RMSE y considero que esa es la evaluación de mi modelo. > > La duda es, ¿dónde empiezo? Es decir, ¿hago este proceso 10 veces (con > 10 días), 50 veces (con 50 días)...? ¿Lo hago con un porcentaje > específico del total de observaciones? > > No es lo mismo pero para los métodos de machine learning se coge 75 % > train y 25 % test. ¿Hay algo análogo? Esto sería más bien como los > resamplings (leave one out)... que tú decides cuántos hacer pero querría > saber si hay algún consenso. He leído por ahí que el 50% de la muestra > estaría bien > > http://www.early-warning-signals.org/time-series-methods/metric-based-indicators/general-steps-for-rolling-window-metrics/ > pero tengo datos desde 2014, o sea, más de 17520 obsrvaciones ¿opiniones? > > Si alguien puede responder por aquí bien, y si hay algún experto por > Murcia o alrededores estaré encantada de invitarle a un café. > > Saludos y muchas gracias. > > > ------ > Aurora González Vidal > Phd student in Data Analytics for Energy Efficiency > > Faculty of Computer Sciences > University of Murcia > > @. aurora.gonzalez2 en um.es > T. 868 88 7866 > www.um.es/ae > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Además de lo que te ha dicho Carlos... Cada serie es muy particular, pero de forma general, puedes empezar tomando todos los datos e ir tomando un valor menos cada vez. Es decir: - con 1:n-1 predices n, - con 1:n-2 predices n-1, etc Es muy fácil de programar. Ve guardando los parámetros del modelo que te da el auto.arima en una lista o una matriz. Verás desde el final hacia el principio que el auto.arima te da más o menos unos parámetros "homogéneos" (depende de la serie, alguna hay muy, muy difícil y vuelve loco a los sistemas automáticos). Sabrás qué cantidad de datos coger cuando veas qué cantidad de valores te produce modelos más o menos homogéneos. Es decir, si la serie es "buena gente", tomando una cantidad suficiente de datos, los modelos que te saca el auto.arima son más o menos estables. Una vez que veas qué cantidad te vale, en tu caso, que tienes muchos datos, yo cogería bastantes más por seguridad (un 50% más o incluso el doble). Y una vez que sepas qué ventana usar, correría de nuevo el modelo SIN usar los datos desde el principio, sino corriendo la ventana desde el principio hasta el final. No sé si me explico bien. Imagina que ves que tomando una ventana de 1000 datos funciona más o menos bien. En este caso, para evaluar el modelo, ejecutas desde el principio la predicciones de la forma siguiente: - con 1:1000 predices 1001, - con 2:1001 predices 1002, etc. Perdón por el rollo... XD Isidro Hidalgo Arellano Observatorio de las Ocupaciones Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/> -----Mensaje original----- > De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de > Carlos Ortega > Enviado el: lunes, 08 de febrero de 2016 14:25 > Para: AURORA GONZALEZ VIDAL <aurora.gonzalez2 en um.es> > CC: Lista R <r-help-es en r-project.org> > Asunto: Re: [R-es] tamaño de rolling window (series temporales) > > Hola, > > Sí, una forma de hacerlo es utilizando el concepto de "Time slicing" que > implementa el paquete de "caret". > Efectivamente es un concepto para hacer cross-validation a la hora de > evaluar tu modelo. > > Como referencias, te recomiendo esto: > > - > http://stackoverflow.com/questions/24758218/time-series-data-spliting- > and-model-evaluation > - > http://stackoverflow.com/questions/29209570/how-to-use-cross- > validation-method-time-slices-using-caret-ensemble-package-in-r > - Y que revises el capítulo 4 (Over-Fitting and Model Tunning) dellibro> de Max Kuhn (Applied Predictive Modeling). > > Lamentablemente no estoy en Murcia para que me invites a un café... > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 8 de febrero de 2016, 14:00, AURORA GONZALEZ VIDAL < > aurora.gonzalez2 en um.es> escribió: > > > Hola!! > > > > Estoy intentando evaluar mi modelo de series temporales (usoauto.arima).> > Para ello he implemetado el método "rolling window" que se basa en ir > > añadiendo progresivamente datos al conjunto de train para testar el > > modelo. Por ejemplo: > > > > - Train: 1 año, test: día 1 (24 observaciones, una por hora) --> > > evalúo ese día (RMSE por ejemplo) > > - Train: 1 año + 1 día, test: día 2 --> evalúo ese día (RMSE) > > - Train: 1 año + 2 días, test: día 3 --> evalúo ese día (RMSE) ... > > > > así hasta el final. Después, saco la media y la desviación estándard > > de la RMSE y considero que esa es la evaluación de mi modelo. > > > > La duda es, ¿dónde empiezo? Es decir, ¿hago este proceso 10 veces (con > > 10 días), 50 veces (con 50 días)...? ¿Lo hago con un porcentaje > > específico del total de observaciones? > > > > No es lo mismo pero para los métodos de machine learning se coge 75 % > > train y 25 % test. ¿Hay algo análogo? Esto sería más bien como los > > resamplings (leave one out)... que tú decides cuántos hacer pero > > querría saber si hay algún consenso. He leído por ahí que el 50% de la > > muestra estaría bien > > > > http://www.early-warning-signals.org/time-series-methods/metric-based- > > indicators/general-steps-for-rolling-window-metrics/ > > pero tengo datos desde 2014, o sea, más de 17520 obsrvaciones > ¿opiniones? > > > > Si alguien puede responder por aquí bien, y si hay algún experto por > > Murcia o alrededores estaré encantada de invitarle a un café. > > > > Saludos y muchas gracias. > > > > > > ------ > > Aurora González Vidal > > Phd student in Data Analytics for Energy Efficiency > > > > Faculty of Computer Sciences > > University of Murcia > > > > @. aurora.gonzalez2 en um.es > > T. 868 88 7866 > > www.um.es/ae > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Carlos J. Gil Bellosta
2016-Feb-08 18:32 UTC
[R-es] tamaño de rolling window (series temporales)
Hola, ¿qué tal? Yo le echaría un vistazo al paquete forecast de R. Hyndman. También le echaría un buen vistazo a su libro y a su blog. Tiene entradas tales como http://robjhyndman.com/hyndsight/tscvexample/ que te pueden servir de guía. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 8 de febrero de 2016, 14:00, AURORA GONZALEZ VIDAL <aurora.gonzalez2 en um.es> escribió:> Hola!! > > Estoy intentando evaluar mi modelo de series temporales (uso auto.arima). > Para ello he implemetado el método "rolling window" que se basa en ir > añadiendo progresivamente datos al conjunto de train para testar el > modelo. Por ejemplo: > > - Train: 1 año, test: día 1 (24 observaciones, una por hora) --> evalúo > ese día (RMSE por ejemplo) > - Train: 1 año + 1 día, test: día 2 --> evalúo ese día (RMSE) > - Train: 1 año + 2 días, test: día 3 --> evalúo ese día (RMSE) > ... > > así hasta el final. Después, saco la media y la desviación estándard de > la RMSE y considero que esa es la evaluación de mi modelo. > > La duda es, ¿dónde empiezo? Es decir, ¿hago este proceso 10 veces (con > 10 días), 50 veces (con 50 días)...? ¿Lo hago con un porcentaje > específico del total de observaciones? > > No es lo mismo pero para los métodos de machine learning se coge 75 % > train y 25 % test. ¿Hay algo análogo? Esto sería más bien como los > resamplings (leave one out)... que tú decides cuántos hacer pero querría > saber si hay algún consenso. He leído por ahí que el 50% de la muestra > estaría bien > http://www.early-warning-signals.org/time-series-methods/metric-based-indicators/general-steps-for-rolling-window-metrics/ > pero tengo datos desde 2014, o sea, más de 17520 obsrvaciones ¿opiniones? > > Si alguien puede responder por aquí bien, y si hay algún experto por > Murcia o alrededores estaré encantada de invitarle a un café. > > Saludos y muchas gracias. > > > ------ > Aurora González Vidal > Phd student in Data Analytics for Energy Efficiency > > Faculty of Computer Sciences > University of Murcia > > @. aurora.gonzalez2 en um.es > T. 868 88 7866 > www.um.es/ae > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es