= 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) {{{ #!java NameBlock rndArima = ArimaTools::@RandArima::Create([[1,7]]); }}} Si llamamos al método {{{ #!java Set rndArima::draw(?); }}} nos devolverá una tabla de filas con estructura {{{ #!java 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: {{{ #!java 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.