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

Opened 15 years ago

Closed 14 years ago

#845 closed doubt (remind)

Finite series with missing values at the first or last date

Reported by: pgea@… Owned by: Víctor de Buen Remiro
Priority: normal Milestone:
Component: Kernel Version:
Severity: major Keywords:
Cc: irobles@…

Description

Habitualmente una variable de tipo Serie se utiliza no sólo para albergar los valores de la serie temporal sino también las fechas inicio y fin que serán utilizadas por otros métodos.

Sin embargo nos encontramos con la imposibilidad de definir una serie en un intervalo cuando el primer o último dato es omitido.

Esto parece que es algo interno de TOL, pues salvo el caso en el que todos sean omitidos, el sistema 'colapsa' automáticamente la serie a un nuevo intervalo donde la fecha inicial y final tenga un dato conocido.

Serie s1 = SubSer(Log(CalInd(W,C)),y2009,y2011);

Date First(s1);
//> y2009
Date Last(s1);
//> y2011
Real CountS(s1);
//> 731

Real PutSerDat(s1, y2010, 1);

Date First(s1);
//> y2009
Date Last(s1);
//> y2011
Real CountS(s1);
//> 731

Serie s1;

Date First(s1);
//> y2010
Date Last(s1);
//> y2010
Real CountS(s1);
//> 1

¿Hay alguna forma de evitar esto? Me refiero a que ocurra automáticamente.

Entiendo que el comportamiento de SubSer quizá se está utilizando con este criterio, de este modo y si hiciera:

Serie s2 = SubSer(Log(Pulse(y2010,C)),y2009,y2011);

esperaría una serie en el intervalo [y2010,y2010].
Pero, ¿podría existir una función SubSer estricta que devolviese la serie en el intervalo solicitado?

Change History (2)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Eso que quieres evitar forma parte de los requerimientos del tipo Serie que se definieron en su día para la definición del lenguaje TOL.

En principio las series son infinitas aunque sólo la conozcamos en una ventana de tiempo por lo que no existe propiamente dichas las fechas inicial ni final de la serie sino del intervalo en el que son conocidas.

Como las series son objetos virtuales de tipo "lazy" no completan su información interna hasta que no se les pide la información, por eso puede pasar que contesten una cosa primero y luego otra.

Por poderse cambiar se puede cambiar sin problemas pero no tengo ni idea de los efectos secundarios que podría tener pues dejaría de ser compatible hacia atrás.

Aunque no dudo de que la tenga, no se me ocurre para qué pueda tener utilidad lo que pides pero supongo que no sería muy complicado añadir un argumento opcional al SubSer que impidiera el recorte. ¿Me podrías contar un caso concreto para hacerme un poco más a la idea?

comment:2 Changed 14 years ago by Víctor de Buen Remiro

Resolution: remind
Status: newclosed
Note: See TracTickets for help on using tickets.