#341 closed defect (fixed)
ERROR Estimate
Reported by: | Javier Gallardo | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Math | Version: | head |
Severity: | blocker | Keywords: | |
Cc: |
Description
Date Ini = y2001m01d01;
Date Fin = y2002m01d01;
Se crea una tendencia a partir de la fecha inicial
Serie ser = SubSer(Trend(Ini, Diario), Ini, Fin);
Se crea la serie 'ser%7' para que tenga estructura semanal
Serie modulo_7 = ser - 7*Floor(ser/7);
Se crea un filtro
Serie filter = 10*CalInd(M(2), Diario);
Se multiplica la serie 'modulo_7' por 'ser' para que tenga tendencia
y se le suma el filtro
Serie output = ser*modulo_7 + filter;
Set modelDef = ModelDef(
output,
1,
0,
7,
0,
en lugar de dos diferencias estacionales
se le pasa una y se estima el parametro AR(7)
(1 - B7),
SetOfPolyn(1 + 0.1*B, 1),
no se le pasa MA
SetOfPolyn(1, 1),
se le pasa el filtro como input
SetOfSet(InputDef(0.99, filter)),
AllLinear
);
se estima el modelo
Set modelEst = Estimate(Set modelDef);
Se copia la serie filter estimada
Serie filter_est = Copy(modelEst[3][8]);
se crea una serie de ceros
Serie ceros = SubSer(CalInd(W, Diario), Ini, Fin);
se suma la serie nula al filter estimado
Serie filtro_new = modelEst[3][8] + ceros;
se reasigna
Serie (modelEst[3][8] := filtro_new);
las series del siguiente conjunto deberían ser iguales
Set seriesIguales = SetOfSerie(filter_est, filtro_new, modelEst[3][8]);
sin embargo las dos últimas están desfasadas 7 días hacia el futuro,
tantos como el grado del polinomio del AR
Change History (3)
comment:1 Changed 19 years ago by
Status: | new → assigned |
---|
comment:2 Changed 19 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:3 Changed 18 years ago by
bug_file_loc: | → http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000341 |
---|
Problem has been fixed:
Internal C++ function that implements Copy user fucntion for Serie type
(BUserTimeSerieDo::PutContens) was not prepared to circular references as this
case.
Serie filtro_new = modelEst[3][8] + ceros;
Serie (modelEst[3][8] := filtro_new);
Serie modelEst[3][8] is redefined using itself, this means a circular reference.
Solving this bug implies duplicate data buffer to be safe of invalid access but time
used in duplication is not significative.
Thanks to report it.