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: | 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
comment:2 Changed 14 years ago by
Resolution: | → remind |
---|---|
Status: | new → closed |
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?