Opened 14 years ago
Closed 14 years ago
#723 closed task (fixed)
Obtención de los polinomios estimados
| Reported by: | jgallardo | Owned by: | Pedro Gea |
|---|---|---|---|
| Priority: | minor | Milestone: | Release 0.6 |
| Component: | Results | Keywords: | |
| Cc: |
Description
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.
Change History (2)
comment:1 Changed 14 years ago by
comment:2 Changed 14 years ago by
| Component: | Estimation → Results |
|---|---|
| Milestone: | → Release 0.6 |
| Resolution: | → fixed |
| Status: | new → closed |
| Type: | defect → task |
Note: See
TracTickets for help on using
tickets.
![(please configure the [header_logo] section in trac.ini)](/mms/chrome/site/logomms.png)
Replying to jgallardo:
Hola de nuevo MMS. Gracias al usuario lmperez tengo la solución:
estim::GetModel.Results(?)::GetSubmodel("submodelo")::GetARIMA(?);incomprensiblemente no la vi ayer.
Saludos a toda la comunidad MMS.