Version 2 (modified by 12 years ago) (diff) | ,
---|
Generación de modelos ARIMA simulados por ingeniería inversa
La generación de modelos ARIMA simulados por ingeniería inversa tiene una gran utilidad en el desarrollo de aplicaciones relativas a modelos ARIMA pues permite contrastar de forma masiva los resultados teóricos con los reales.
Para ser más exactos se trata de modelos ARIMA multi-estacionales que se generan automáticamente a partir de unos pocos parámetros dados por el usuario, como las periodicidades estacionales, los grados máximos de diferencias, partes AR y MA, longitud, fechado y fecha final de la serie, desviación típica teórica, etc.
Pongamos que queremos generar una serie ARIMA diaria con estacionalidad semanal. Lo primero que hay que hacer es construir el generador de modelos al que hay que pasarles las periodicidades regular (1) y estacional (7)
NameBlock rndArima = ArimaTools::@RandArima::Create([[1,7]]);
Si llamamos al método
Set rndArima::draw(?);
nos devolverá una tabla de filas con estructura
Struct @ARIMAStruct { Real Periodicity; Polyn AR; Polyn MA; Polyn DIF; }
y grados y coeficientes aleatorios como estos tres ejemplos
Periodicity | AR | MA | DIF
|
1 | 1-0.108083385881461*B-0.661191867198795*B^2 | 1+1.84687137714305*B+0.913258229847997*B^2 | 1-B
|
7 | 1-0.500501212900947*B^7-0.159991535823792*B^14 | 1+1.52869164096904*B^7+0.945664106402546*B^14 | 1
|
Periodicity | AR | MA | DIF
|
1 | 1+0.276724013923667*B | 1-0.608476788569242*B | 1-B
|
7 | 1+0.669428730927173*B^7+0.551377256400883*B^14 | 1 | 1-B^7
|
Periodicity | AR | MA | DIF
|
1 | 1+1.71064830487263*B+0.7920374982059*B^2 | 1+0.1186861861303*B-0.577400461304933*B^2 | 1
|
7 | 1+0.852601298354566*B^7 | 1 | 1
|
Se puede establecer un grado mínimo y máximo para cada polinomio, AR, MA y DIF de cada estacionalidad. Para los polinomios AR y MA se puede configurar también el mínimo y el máximo de los módulos de los inversos de las raíces y si se desean raíces reales, reales positivas o si se admiten raíces complejas.
Los valores configurables tienen valores por defecto que normalmente sirven a efectos generales.
Para los polinomios AR y MA los valores por defecto son:
period | _.rootsType | _.min.degree | _.min.invRootModule | _.max.invRootModule | _.max.degree
|
1 | RealOrComplexRoots | 0 | 0.1 | 0.99 | 5
|
7 | RealOrComplexRoots | 0 | 0.1 | 0.99 | 3
|
y para los de diferencias :
period | _.min.degree | _.max.degree
|
1 | 0 | 2
|
7 | 0 | 1
|
Si por ejemplo queremos forzar que las raíces AR regulares sean reales positivas y que el grado máximo MA estacinal sea 2 haríamos lo siguiente:
Text (rndArima::factor[1])::ar::rootsType := ArimaTools::@RandStationary::RootsType::RealPositiveRoots; Real (rndArima::factor[2])::ma::max.degree := 2; Set rndArima::rebuild(?);
La última línea se asegura de que toda la información del generador es consistente.