close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 4 and Version 5 of upgrade/transformations


Ignore:
Timestamp:
Jul 1, 2010, 8:55:48 AM (15 years ago)
Author:
Pedro Gea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • upgrade/transformations

    v4 v5  
    7171cuando se presente la necesidad de transformar una variable.
    7272
     73'''Código en MMS_0.5'''
     74
     75El código que nos ocupa se separa en dos partes:
     76
     77(i) donde se definen constructores específicos para las transformaciones del proyecto:
     78{{{
     79///////////////////////////////////////////////////////////////////////////////
     80@MMS.Transformation MMC_ExtendedNormalizeBoxCox(Real first, Real second, Date dat)
     81//////////////////////////////////////////////////////////////////////////////
     82{
     83  @MMS.Transformation::Block(NameBlock { NameBlock args = [[
     84    Text _.name              = "MMC_ExtendedNormalizeBoxCox"<<first<<"_"<<second;
     85    Text _.grammar           = "Serie";
     86    Text _.contextExpression = "
     87      Real _.first = "<<first<<";
     88      Real _.second = "<<second<<";
     89    ";
     90    Text _.directExpression  = If(first==0,
     91      "Serie (Serie s) { MMC_NomalizeExtendSerLastValue("+FormatDate(dat)+", Log(s + _.second)) }",
     92      "Serie (Serie s) { MMC_NomalizeExtendSerLastValue("+FormatDate(dat)+", ((s + _.second)**_.first - 1)/_.first ) }"
     93    );
     94    Text _.inverseExpression = If(first==0,
     95      "Serie (Serie t) { MMC_NomalizeExtendSerLastValue("+FormatDate(dat)+", (Exp(t) - _.second) ) }",
     96      "Serie (Serie t) { MMC_NomalizeExtendSerLastValue("+FormatDate(dat)+", ((_.first * t + 1)**(1/_.first) - _.second) )}"
     97    )
     98  ]] })
     99};
     100PutDescription("
     101  Aplica una transformación logarítmica a la serie, la normaliza
     102  a la fecha dat y la extiende en previsión con el última dato",
     103  MMC_ExtendedNormalizeBoxCox
     104);
     105}}}
     106
     107(ii) y donde se utilizan las transformaciones:
     108{{{
     109Real model::CreateBaseExpTermOmega([[
     110  ...
     111  @MMS.Transformation _.transformation = transformation;
     112  // donde:
     113  // transformation = MMC_ExtendedNormalizeBoxCox(0, 0, modelBegin)
     114  ...
     115]]);
     116}}}
     117
     118'''Código en MMS_0.6'''
     119
     120Como alternativa a
     121
     122(i) los constructores específicos proponemos la creación de nuevas funciones:
     123
     124{{{
     125///////////////////////////////////////////////////////////////////////////////
     126Serie MMC_ExtendedNormalizeBoxCox(Serie s, Real first, Real second, Date dat)
     127//////////////////////////////////////////////////////////////////////////////
     128{
     129  If(first==0,
     130    MMC_NomalizeExtendSerLastValue(dat, Log(s+ second)),
     131    MMC_NomalizeExtendSerLastValue(dat, ((s + second)**first - 1)/first)
     132  )
     133};
     134PutDescription("
     135  Aplica una transformación logarítmica a la serie s, la normaliza
     136  a la fecha dat y la extiende en previsión con el último dato",
     137  MMC_ExtendedNormalizeBoxCox
     138);
     139}}}
    73140
    74141
    75