Tengo una pregunta sobre el modelado de series de tiempo en R. Mis datos consisten en la siguiente matriz:
1 0.03333333 0.01111111 0.9555556
2 0.03810624 0.02309469 0.9387991
3 0.00000000 0.03846154 0.9615385
4 0.03776683 0.03119869 0.9310345
5 0.06606607 0.01201201 0.9219219
6 0.03900325 0.02058505 0.9404117
7 0.03125000 0.01562500 0.9531250
8 0.00000000 0.00000000 1.0000000
9 0.04927885 0.01802885 0.9326923
10 0.06106870 0.02290076 0.9160305
11 0.03846154 0.00000000 0.9615385
12 0.00000000 0.00000000 1.0000000
13 0.06028636 0.03843256 0.9012811
14 0.09646302 0.05144695 0.8520900
15 0.04444444 0.06666667 0.8888889
Estas matrices tienen en total 200 filas.
Como puede ver en cada situación, la suma de cada fila es 1, que se convierte en porque los valores son el porcentaje de un todo. por ejemplo, la fila 1 contiene 3.33% de la variable a, 1.11% de la variable 2 y 95.5% de la verificable 3. la primera collomn indica el año en que se miden los valores.
mi objetivo es hacer una predicción para los próximos 5 años, por lo tanto, del año 200 al 205.
Puedo hacerlo haciendo tres pronósticos de series temporales normales. Pero para ese pronóstico, la suma total nunca es igual a 1, lo cual es muy importante. Normalmente se utilizan técnicas como arima y suavizado exponencial.
¿Alguien conoce un método para hacer un pronóstico para tal problema?
fuente
Respuestas:
Está intentando pronosticar una serie de tiempo de composición . Es decir, tiene tres componentes que están limitados a estar entre 0 y 1 y sumar 1.
Puede abordar este problema utilizando el suavizado exponencial estándar, utilizando una transformación logística generalizada adecuada. Hubo una presentación sobre esto por parte de Koehler, Snyder, Ord & Beaumont en el Simposio Internacional de Pronóstico 2010 , que se convirtió en un documento ( Snyder et al., 2017, International Journal of Forecasting ).
Pasemos por esto con sus datos. Lea los datos en una matriz
obs
de series de tiempo:Puede verificar si esto funcionó escribiendo
Ahora, tiene algunos ceros allí, lo que será un problema una vez que tome los logaritmos. Una solución simple es configurar todo lo que sea menos que un pequeño en ese :ϵ ϵ
Ahora las filas modificadas ya no suman 1. Podemos rectificar eso (aunque creo que esto podría empeorar el pronóstico):
Ahora transformamos los datos según la página 35 de la presentación:
Cargue el
forecast
paquete y establezca un horizonte de 5 puntos de tiempo:Ahora modele y pronostique los datos transformados columna por columna. Aquí simplemente estoy llamando
ets()
, que intentará ajustar un modelo de suavizado exponencial de espacio de estado. Resulta que utiliza un suavizado exponencial único para las tres series, pero especialmente si tiene más de 15 períodos de tiempo, puede seleccionar modelos de tendencia. O si tiene datos mensuales, explique a R que tiene una estacionalidad potencial, al usarts()
confrequency=12
- luegoets()
verá modelos estacionales.A continuación, transformamos los pronósticos según la página 38 de la presentación:
Finalmente, tracemos historias y pronósticos:
EDITAR: acaba de aparecer un documento sobre pronósticos de series de tiempo de composición . No lo he leído, pero puede ser de interés.
fuente
ets()
en elforecast
paquete para el suavizado exponencial del espacio de estado).