Opened 13 years ago
Last modified 13 years ago
#1379 new task
Linearized aproximation to non linear regression
Reported by: | Víctor de Buen Remiro | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | highest | Milestone: | Técnicas de modelación |
Component: | Math | Version: | head |
Severity: | critical | Keywords: | |
Cc: | cperez@…, atorre@…, Jorge, Pedro Gea |
Description
En relación con el ticket #1067, es necesario desarrollar un sistema para evitar los problemas derivados del enfoque poligonal por tramos, que son a mi modo de ver los siguientes:
- falta de continuidad
- posible falta de muestra en ciertos tramos
- introducción de multicolinearidad inherente al proceso de construcción de los inputs por tramos
- exceso de restricciones deterministas para obtener las formas esperadas.
Estos son unos de los principales problemas con los que nos encontramos en muchos de los los modelos que he podido ver. Además no son problemas independientes entre sí sino que se potencian los unos a los otros hasta el punto de hacer inviable una estimación adecuada.
Hay que ir a un sistema de aproximación lineal continua con el que parametrizar relaciones no lineales dentro de un bloque lineal de regresión con restricciones e información a priori, que permitan darle la forma adecuada a la curva esperada sin perder por ello flexibilidad de ajuste, y reduciendo al mismo tiempo los problemas referidos.
Se trataría de aproximar la función no lineal desconocida mediante una combinación lineal de funciones de una base de funciones ortogonales y de clase C2 en el intervalo [l,u] de dominio del input, o al menos que sean poco correladas.
f (x) = F [1](x)*b[1] + F [2](x)*b[2] + ... + F [n]*b[n] f' (x) = F' [1](x)*b[1] + F' [2](x)*b[2] + ... + F' [n]*b[n] f''(x) = F''[1](x)*b[1] + F''[2](x)*b[2] + ... + F''[n]*b[n]
En un primer ataque se incluirán aproximaciones basadas en familias de polinomios ortogonales como los de Legendre o los de Chebyshov, que deberían funcionar sin problemas para formas con pocos puntos extremos y de inflexión, que es lo que nos solemos encontrar por lo que he podido ver en los casos que me han mostrado. Más tarde se podrían incluir familias trigonométricas como la de Fourier para aproximar funciones cíclicas o familias de splines para formas complejas.
La idea es que se puedan expresar de una forma natural informaciones conocidas o postuladas a priori, tanto de forma determinista como probabilista:
- determinista:
- debe ser creciente en un punto dado,
- debe ser convexa en tal otro,
- debe ser mayor en un punto que en otro
- ...
- probabilista:
- debe haber un máximo local cercano a un punto dado
- debe haber un mínimo local cercano a un punto dado
- debe haber un punto de inflexión cercano a un punto dado
- debe haber un punto de radio de curvatura mínimo cercano a un punto dado
- la diferencia de valor entre dos puntos está en torno a cierta cantidad
- ...
Todas estas características se pueden expresar como combinaciones lineales de los parámetros b construidas a partir de evaluaciones de las funciones básicas o sus derivadas en los puntos propuestos, por lo que se pueden imbricar en cualquier estimador bayesiano, en particular BSR y WgtProbit.
Habría que hacer un paquete que contuviera una clase para generar inputs linealizados de este tipo con métodos ad-hoc para añadir cada tipo de información construyendo las ecuaciones de forma transparente para el usuario, y a nivel de interfaz, se podría pensar en una forma de visualizar una batería de plantillas de formas para elegir la que más se parezca a lo que se busca y que internamente se representaría como un listado de características como las que se han enumerado.
Otra funcionalidad bastante útil sería poder visualizar curvas válidas simuladas aleatoriamente para un generador de inputs ya diseñado para comprobar que efectivamente todas tienen las características geométricas que se están buscando, pues la intuición a veces es engañosa y una imagen vale más que mil palabras.
Change History (5)
comment:1 Changed 13 years ago by
comment:5 Changed 13 years ago by
Fredi me enseñó el otro día un artículo que podría ser de utilidad con respecto a la detección de relaciones no lineales.
Se trata de un sistema para la detección automática de relaciones entre pares de variables, sean lineales o no y haya o no ruido aleatorio, aunque siempre dentro de una amplia gama de familias funcionales y de otros tipos. Una vez detectada una relación no debería ser demasiado complicado aproximarla por tramos o polinomialmente bajo cierta transformación no paramétrica para poder usarla en un bloque lineal de una regresión.
El artículo técnico es impecable y desde la web de los creadores se puede acceder al software open source MINE que lo implementa. Aunque está escrito en JAVA tiene un port para R que podríamos incluir en TOL sin muchas complicaciones. Habría que probar primero a usarlo directamente en JAVA o desde R para ver cuáles son sus posibilidades con casos reales.
(In [3966]) Refs #1379