Opened 14 years ago
Closed 14 years ago
#1055 closed defect (fixed)
La transformación BoxCox es diferente en Tol y MMS
Reported by: | Owned by: | Víctor de Buen Remiro | |
---|---|---|---|
Priority: | highest | Milestone: | |
Component: | ASCII data files | Version: | |
Severity: | blocker | Keywords: | |
Cc: |
Description
Las funciones BoxCoxTransform y BoxCoxInverseTransform "C:\Program Files\Bayes\tolbase-v2.0.1\bin\stdlib\general\grammars\_.serie.tol" son distintas a las análogas en mms "\PRE-1.0\MMS\definition\02_model\def_transformation.tol" y "\PRE-1.0\MMS\definition\02_model\def_transformation_boxcox.tol". He subido el ticket en ambos sitios
no se cual debería tomar la responsabilidad de cambiar y de avisar a todos los projectos de Bayes que puedan estar usándolas.
Tol:
////////////////////////////////////////////////////////////////////////////// Serie BoxCoxTransform(Serie s, Real bct) ////////////////////////////////////////////////////////////////////////////// { If(bct==1, s+0, If(bct==0, Log(s), s^bct)) }; ////////////////////////////////////////////////////////////////////////////// Serie BoxCoxInverseTransform(Serie s, Real bct) ////////////////////////////////////////////////////////////////////////////// { Real invExp = 1/bct; If(bct==1, s+0, If(bct==0, Exp(s), s^invExp)) };
MMS
////////////////////////////////////////////////////////////////////////////// @MMS.Transformation BoxCox(Real first, Real second) ////////////////////////////////////////////////////////////////////////////// { @MMS.Transformation::Block(NameBlock { NameBlock args = [[ Text _.name = "BoxCox_"<<first<<"_"<<second; Text _.grammar = "Serie"; Text _.contextExpression = " Real _.first = "<<first<<"; Real _.second = "<<second<<"; "; Text _.directExpression = If(first==0, "Serie (Serie s) { Log(s + _.second) }", "Serie (Serie s) { ((s + _.second)**_.first - 1)/_.first }" ); Text _.inverseExpression = If(first==0, "Serie (Serie t) { Exp(t) - _.second }", "Serie (Serie t) { (_.first * t + 1)**(1/_.first) - _.second }" ) ]] }) };
Change History (3)
comment:1 Changed 14 years ago by
comment:2 Changed 14 years ago by
Pues que puede llevar a confusión, a mi por lo menos me ha llevado y no soy nuevo en Bayes.
Antes comenté el caso de la "BoxCoxTransform", pero hay otra que es incluso peor "BoxCoxTransf". Si tenemos dos funciones, "BoxCoxTransf(Serie St, @BoxCoxStruct(first,second))" de tol que recibe el set con la pareja exponente-traslación, y la en teoría homóloga en MMS "@MMS.Transformation BoxCox(Real first, Real second)" que recibe también el set exponente-traslación. A mi por lo menos el sentido común me dice que deberían hacer lo mismo y sin embargo no es así.
He estado el sábado entero y el domingo buscando la causa que me originaba un sesgo en las previsiones de unos cuantos miles de outputs que tengo en transformación identidad. He revisado de cabo a rabo todo el proceso y no encontraba ningún error hasta que me dí cuenta que el fallo estaba en cómo se hacía la boxcox, que no era como yo pensaba.
La verdad es que esperaba que alguien me contestara de otra forma, pero lo que me dices no hace sino preocuparme más aún, ¿tengo entonces que revisarme todas las funciones de mms y tol que conozco a ver si hacen lo mismo?
comment:3 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
La transformación que se usa en MMS es un tipo de transformación que busca la continuidad en los parámetros que es algo que no es preciso en absoluto para el análisis de series temporales. En MMS deben implementar, con otro nombre para evitar problemas de compatibilidad, la transformación usada históricamente en TOL.
¿Qué problema hay en que haya dos funciones distintas que hagan cosas distintas que satisfacen necesidades distintas?