#746 closed defect (fixed)
Función BoxCoxTrans
Reported by: | Iván Robles | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Math | Version: | 1.1.7 |
Severity: | normal | Keywords: | |
Cc: |
Description (last modified by )
Buenos días
Estoy utilizando la función BoxCoxTrans
, que nos devuelve la transformación BOXCOX de una serie mediante el analisis de su homocedasticidad. La he probado con series de datos reales, que visualmente parecen heterocedasticas, y siempre me devuelve el mismo resultado, el conjunto [[1,0]]
, que es la transformación identidad.
Pongo unos ejemplos de series que se crean aleatoriamente, que son heterocedasticas, y también devuelven la tranformacón identidad.
Serie ser1 = SubSer(Gaussian(10,10,Diario),y1991m01d01,y2000m01d01)<<SubSer(Gaussian(10,100,Diario),y2000m01d01,y2004m08d01); Serie ser2 = SubSer(Gaussian(10,10,Diario),y1991m01d01,y2000m01d01)<<SubSer(Gaussian(100,100,Diario),y2000m01d01,y2004m08d01); Set BoxCoxSugerido1 = BoxCoxTrans(ser1); Set BoxCoxSugerido2 = BoxCoxTrans(ser2); Serie estacionaria = SubSer(Gaussian(10,1,Diario),y1991m01d01,y2000m01d01); Serie noEstacionariaVarianza = BoxCoxInvTransf(estacionaria,BoxCoxStruct(0,0)); Set BoxCoxSugerido = BoxCoxTrans(noEstacionariaVarianza);
Change History (10)
comment:1 Changed 15 years ago by
comment:2 Changed 15 years ago by
Description: | modified (diff) |
---|
Las series ser1 y ser2 que propones son evidentemente heterocedásticas por construcción
comment:7 Changed 15 years ago by
(Perdón, se me ha disparado el submit antes de hora)
Las series ser1 y ser2 que propones son evidentemente heterocedásticas por construcción pero no se corresponden con ninguna transformación de Box-Cox y no sirven de chequeo.
La tercera en cambio está claro que tiene que dar el logaritmo pues se ha construido de esa forma.
Efectivamente el código estaba obsoleto pues la función que tomaba los datos de la serie internamente no estaba llamando al método adecuado con lo cual al método interno le llegaba un vector vacío.
Ya está resuelto ese problema y he añadido también algunos mensajes de error, tanto en la versión de desarrollo (2.0.1), como en la oficial (1.1.7) que ya está disponible para su descarga (v1.1.7 b.19)
Tanbién está disponible un test para comprobar la calidad de esta función.
comment:9 Changed 9 years ago by
(In [6817]) Refs #746
El test comprueba potencias de la BoxCox positivas y negativas.
Se elimina el caso negativo, que no se está chequeando adecuadamente.
Las potencias negativas para las funciones BoxCoxTransf no cambian el signo, generando transformaciones decrecientes, de modo que la prueba que se hace no es buena cuando los potencias comparadas son de distinto signo, por ejemplo: cuando exp==-0.3
y bc[1]==0
(caso que ocurría usando como semilla el 60).
comment:10 Changed 9 years ago by
Nótese que la familia de transformaciones Box-Cox implementada en estas funciones es:
(x+b)^a ,, si a!=0 Log(x+b) ,, si a==0
Mientras que la familia de transformaciones Box-Cox original, con continuidad en el parámetro de potencia (a
) es:
((x+b)^a - 1) / a ,, si a!=0 Log(x+b) ,, si a==0
Creo que esa función nunca llegó a funcionar y no la ha usado nadie en 10 años así que estará obsoleta. Inentaré echarle un vistazo aunque realmente estoy con el agua al cuello.