﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
723	Obtención de los polinomios estimados	jgallardo	Pedro Gea	"Hola MMS.

Necesito la extracción de los polinomios ya estimados de los submodelos, esto es combinar la definición de los polinomios (dif, ar, ma) del submodelo y los parámetros estimados; pero no he encontrado el método que lo haga (aunque esto no significa nada). Por si acaso estoy en lo cierto y no existe tal método he creado esta función que a lo mejor puedes aprovechar.

{{{

//////////////////////////////////////////////////////////////////////////////
Set GetPolyns(NameBlock estim){
//////////////////////////////////////////////////////////////////////////////
  Set paramsEstim = estim::GetParameters(?);
  NameBlock model = estim::GetModel(?);
  Set paramsModel = model::GetParameters(?);

  Set paramsModel.use = Select(paramsModel, Real(NameBlock param){
    ClassOf(param) == ""MMS::@ParameterARIMA""
  });

  Set arModel = Select(paramsModel.use, Real(NameBlock param){
    param::GetType(?) == ""AR""
  });

  Set maModel = Select(paramsModel.use, Real(NameBlock param){
    param::GetType(?) == ""MA""
  });

  Set armaModel = {SetOfSet(
    Set AR = arModel,
    Set MA = maModel
  )};

  Set submodels = model::GetSubmodels(?);

  Set bySubmodel = EvalSet(submodels, Set(NameBlock submodel){
    Text name = submodel::GetName(?);
    MMS::@NoiseARIMA noise = submodel::GetNoise(?);
    Set arimaInitial = noise::GetInitialARIMA(?);

    Polyn dif = {
      Set difs = EvalSet(arimaInitial, Polyn(Set reg){
        reg[""dif""]
      });
      SetProd(difs)
    };

    Set arma = EvalSet(armaModel, Polyn(Set polsModel){  
      Text nombre = Name(polsModel);

      Set byPolModel = EvalSet(polsModel, Polyn(NameBlock polModel){
        Text namePM = Name(polModel);
        Real degree = polModel::GetDegree(?);
        Set estim.tmp = Select(paramsEstim, Real(NameBlock param){
          Name(param) == namePM
        });

        NameBlock estim = If(Card(estim.tmp), estim.tmp[1], [[Empty]]);
        Real avr = estim::GetMean(?);
        Polyn pol = 1 - avr*B^degree
      });

      Polyn pol = SetProd(byPolModel);
     
      Eval(""Polyn ""+ nombre +"" = pol;"")
    });

    Set res = [[name, dif]] << arma;

    Text nombreSM = ToName(name);
 
    Eval(""Set ""+ nombreSM +"" = res;"")
  })
};
//////////////////////////////////////////////////////////////////////////////

}}}

Abr.

"	task	closed	minor	Release 0.6	Results	fixed		
