Con el objeto de análisis de Ajuste de curva no lineal es posible aproximar una función de modelo a un conjunto de datos dado como función de una variable independiente y varios parámetros. Para ello se dispone de una serie de funciones de modelo predefinidas. También puede definir sus propios modelos.
Procedimientos iterativos y no iterativos
Se distingue entre procedimientos iterativos y no iterativos para el ajuste de curva no lineal.
Los procedimientos no iterativos son inadecuados en la práctica, ya que requieren mucho tiempo. Así lo demuestra el método de "Grid-Search". El rango de búsqueda, en la que se encuentra el mínimo, se divide en una cuadrícula de n dimensiones (n ... número de parámetros de la función). Los residuos de la función se calculan para cada punto de la cuadrícula. El punto en el que la suma de los cuadrados de los residuos es la más baja proporciona el resultado. Si ahora la cuadrícula se reduce a la mitad, el número de llamadas a funciones se multiplica por 2n. Con el método de "Random-Search", los puntos que hay que calcular no se disponen como una cuadrícula, sino que se distribuyen al azar. La desventaja de estos métodos es que, a diferencia de los métodos iterativos, la búsqueda de los mejores parámetros no está limitada por cálculos previos. Esto significa que se ejecuta un gran número de costosas llamadas a funciones "innecesarias".
Como no está garantizado que el resultado calculado sea un "mínimo global" cuando se utiliza el método iterativo, se sugieren múltiples cálculos con diferentes parámetros iniciales. Los algoritmos no iterativos son útiles en este caso.
Por lo tanto, FlexPro proporciona la función FPScript ParameterEstimation, que ofrece tanto el método "Grid Search" como el método "Random Search". Debido al escaso tiempo de ejecución descrito anteriormente, la función es adecuada sobre todo para modelos sencillos con pocos parámetros.
Los procedimientos iterativos incluyen los algoritmos ofrecidos en la función NonLinCurveFit de FPScript, que convergen paso a paso a un mínimo local.
Para ello, se siguen los siguientes pasos:
•Los parámetros iniciales se definen para cada parámetro del modelo de regresión seleccionado (por ejemplo, utilizando métodos no iterativos)
•La curva se calcula introduciendo los valores de los parámetros en la función de modelo.
•Se calcula la suma de los cuadrados de las distancias verticales entre los puntos de datos y la curva.
•Los parámetros se modifican para que la curva se aproxime mejor a los puntos de datos. Para ello se utilizan varios algoritmos.
•Los pasos 1 a 4 se repiten hasta obtener un "buen" resultado. Para ello pueden definirse varios criterios de convergencia.
Por lo tanto, buscamos los parámetros de un modelo que minimice al máximo la suma de los cuadrados de los residuos ponderados y proporcione así una buena aproximación a un conjunto de datos dado.
Los vectores con valores de parámetros que convergen hacia un mínimo local se calculan a partir de un punto de partida especificado. Los distintos métodos difieren en el cálculo del incrementoo, la dirección del incremento y los criterios de convergencia.
Los algoritmos utilizados se basan en los siguientes procedimientos:
Procedimiento de Gauss-Newton
En el procedimiento de Gauss-Newton, el modelo se linealiza mediante un desarrollo de Taylor. A continuación, el modelo linealizado se utiliza para minimizar la suma de los cuadrados de los residuos.
Método de descenso más pronunciado (Steepest Descent method)
Cuando se busca el mínimo, la dirección de descenso viene indicada por el gradiente (negativo) de la función.
Por ello, el procedimiento también se conoce como método del gradiente (gradient method). Por regla general, encuentra el óptimo con bastante lentitud, es decir, converge poco.
Procedimiento de Levenberg-Marquardt
El procedimiento Levenberg-Marquardt combina el procedimiento de Gauss-Newton con el procedimiento de descenso más pronunciado. El radio de "Trust-Region" utilizado en este método influye en el incremento y su dirección. Especifica un límite superior para la norma euclidiana de la dirección de búsqueda y, por tanto, influye en el procedimiento utilizado (Gauss-Newton o descenso más pronunciado).
Procedimiento Newton
A diferencia del procedimiento Gauss-Newton, se considera la parte cuadrática del desarrollo de Taylor. Por lo tanto, la matriz de Hesse (2.ª derivadas parciales) es necesaria para el cálculo. Dado que la matriz de Hesse rara vez puede especificarse analíticamente, debe aproximarse. Para ello se utiliza, por ejemplo, el procedimiento de la secante. Los buenos algoritmos descomponen la matriz de Hesse para poder utilizar la información existente y lograr una mejor aproximación. Solo se aproxima S(x) en lugar de H(x):
Matriz de Hesse:
Cálculo de la siguiente iteración p+ a partir de un punto pk:
Procedimiento |
Se calcula con |
|---|---|
Gauss-Newton |
|
Levenberg-Marquardt |
|
Newton |
|
NL2SOL |
Algoritmos
Los algoritmos de ajuste de curva no lineal utilizados son un procedimiento de Moré del paquete MINPACK (algoritmo de Levenberg-Marquardt) y una variante del algoritmo NL2SOL (algoritmo Full Newton). En la bibliografía, ambos algoritmos se consideran igual de buenos. En problemas con residuos pequeños, no hay mucha diferencia. Sin embargo, el algoritmo más complejo NL2SOL es preferible en problemas con residuos grandes o en problemas fuertemente no lineales, ya que requiere menos iteraciones Además, en la variante implementada del algoritmo NL2SOL, se pueden establecer límites para los parámetros que se van a buscar, restringiendo así el rango de búsqueda. Ambos algoritmos ya han sido sometidos a pruebas exhaustivas de aplicabilidad y robustez.
Para ambos algoritmos, las derivadas parciales necesarias para el cálculo pueden calcularse analíticamente o aproximarse mediante "aproximación por diferencia hacia delante" (forward-difference approximation). En el cálculo analítico, las derivadas parciales se dan en forma de fórmulas. Este es el caso de casi todos los modelos especificados. Si no se especifican las derivadas para un modelo personalizado, se aproximan.
El algoritmo LMDER o LMDIF de MINPACK es un algoritmo Levenberg-Marquardt modificado. Moré utiliza un procedimiento de "Trust-Region" escalado.
El algoritmo NL2SOLse basa en el procedimiento Newton para problemas de mínimos cuadrados ("Least-Squares"). Contiene un procedimiento de secante para calcular la matriz de Hesse. También se utiliza una estrategia de "Trust-Region". Para problemas con residuos pequeños, el algoritmo se simplifica a un procedimiento de Levenberg-Marquardt o de Gauss-Newton. Ambos algoritmos pueden encontrarse en Internet, en www.netlib.org.
Modelo
FlexPro ofrece una variedad de funciones de modelo predefinidas a las que se pueden adaptar los datos que se van a analizar. Una vez seleccionado un modelo, puede ver la fórmula y el boceto del modelo correspondiente en una ventana de vista previa. Pulse el botón Ayuda sobre modelos para ir directamente a la ayuda en línea de FlexPro para las funciones de modelo. Por ejemplo, al ajustar los valores iniciales de los parámetros, se puede ver la función actual del modelo sin tener que pasar de una pestaña a otra.
Modelos de picos
Existen varios modelos de picos predefinidos, que pueden modificarse especificando el número de picos y una función de línea de base. En los modelos con varios picos, algunos parámetros del modelo pueden utilizarse conjuntamente. Esto puede ajustarse en la lista de parámetros . A partir de esta información, se genera de forma dinámica un modelo de pico "especial" que se utiliza para el ajuste de curva no lineal. FlexPro ofrece el ajuste de picos (Peak-Fitting) como una plantilla de análisis separada en el asistente para análisis.
Modelo personalizado
Si el modelo que se va a analizar no está en la lista de funciones de modelo predefinidas, se puede definir un modelo personalizado y guardarlo en el perfil del usuario. El primer paso consiste en seleccionar el modelo (Modelo personalizado). Aparece el campo de entrada Función, en el que se introduce el modelo personalizado. Los parámetros de un modelo personalizado con el número de parámetros n tienen las designaciones p[0], p[1], ..., p[n-1]. La variable independiente es x.
Ejemplo de función seno: p[0] * sin(2 * PI * p[1] * x + p[2])
También puede asignar nombres a los parámetros. Estos nombres se muestran en la lista de valores iniciales. Para ello, debe asignar nombres a las variables de parámetros p[0] ... p[n-1] en la fórmula que describe la función de modelo personalizada.
Dim Amplitude = p[0]
Dim Frequency = p[1]
Dim Phase = p[2]
La Amplitude variable se asigna a la variable p[0], la Frequency variable a la variable p[1] y la Phase variable a la variable p[2]. Debe asegurarse de que las asignaciones estén una debajo de la otra. Ahora puede sustituir las variables p[0] a p[n-1] en la función de modelo:
Amplitude * sin(2 * PI * Frequency * x + Phase)
Al definir un modelo personalizado, es importante introducir el Número de parámetros correcto. Si este valor es incorrecto, el ajuste de curva no lineal no puede calcularse o proporciona un resultado incorrecto.
•Calcular derivadas parciales analíticamente
Los algoritmos de ajuste de curva no lineal requieren las derivadas parciales de los parámetros del modelo para el cálculo. Las derivadas pueden calcularse analíticamente o aproximarse mediante la "aproximación por diferencia hacia delante" (forward-difference approximation). En el cálculo analítico, las derivadas parciales se dan en forma de fórmulas. La fórmula que describe las derivadas debe especificarse como una lista con n (número de parámetros) funciones derivadas.
Ejemplo:
Dim Amplitude = p[0]
Dim Frequency = p[1]
Dim Phase = p[2]
[ sin(2 * PI * Frequency * x + Phase), 2 * PI * x * Amplitude * cos(2 * PI * Frequency * x + Phase), Amplitude * cos(2 * PI * Frequency * x + Phase) ]
•Guardar modelo
Es posible guardar un modelo personalizado en el perfil del usuario. Para ello, es necesario introducir un nombre en el cuadro de lista Modelo y pulsar el botón Guardar modelo. Todos los modelos guardados aparecen en el cuadro de lista modelo. Si selecciona un modelo personalizado en el cuadro de lista, puede eliminarlo del perfil del usuario pulsando el botón Eliminar modelo.
•Modelo personalizado a partir de una fórmula
También es posible guardar modelos personalizados en función de la base de datos creando fórmulas con las funciones de modelo. Para ello, debe seleccionar el modelo (Modelo personalizado a partir de una fórmula) y especificar la fórmula del modelo generado como una función. La sintaxis de las fórmulas del modelo se describe en Modelo personalizado. Sin embargo, el contenido de la fórmula debe ir entre comillas, ya que las fórmulas del modelo deben tener el tipo de datos cadena.
Por ejemplo, la fórmula del modelo anterior debe tener este aspecto:
"Dim Amplitude = p[0]\r\n_
Dim Frequency = p[1]\r\n_
Dim Phase = p[2]\r\n_
Amplitude * sin(2 * PI * Frequency * x + Phase)"
La fórmula de las derivadas parciales debe contener el siguiente código:
"Dim Amplitude = p[0]\r\n_
Dim Frequency = p[1]\r\n_
Dim Phase = p[2]\r\n_
[ sin(2 * PI * Frequency * x + Phase),_
2 * PI * x * Amplitude * cos(2 * PI * Frequency * x + Phase),_
Amplitude * cos(2 * PI * Frequency * x + Phase) ]"
Los caracteres "\r\n" crean saltos de línea en la cadena y deben utilizarse siempre que el código contenga varias instrucciones. El "_" se ha utilizado aquí al final de la línea para que la propia cadena pueda dividirse en varias filas.
Evaluación de modelo (solo en el asistente de análisis)
Puede utilizar esta herramienta para comparar el cálculo de varias funciones de modelo. Los modelos seleccionados se evalúan mediante la suma absoluta de los cuadrados de los residuos SSE. Consulte el tutorial Ajuste de curva no lineal.
Parámetros
La elección de los valores iniciales de los parámetros del modelo es decisiva para el resultado del cálculo. Si el punto de partida seleccionado está lejos del mínimo global, es posible que el algoritmo no devuelva ningún resultado o que devuelva un mínimo local diferente. Con el algoritmo Full Newton, se puede especificar un límite de rango (límite superior e inferior) para cada parámetro, restringiendo así el rango de búsqueda.
Algunos parámetros del modelo seleccionado pueden declararse fijos. Con el algoritmo Full Newton, los límites superior e inferior se fijan en el valor inicial especificado. En el algoritmo de Levenberg-Marquardt, la variable del parámetro de la función modelo se sustituye por el valor inicial constante.
Estimar los valores iniciales (solo en el asistente de análisis)
Para aumentar la probabilidad de que el resultado mostrado sea un mínimo global, el cálculo debe realizarse con diferentes valores iniciales. La opción Estimar los valores iniciales está disponible para modelos con cuatro o menos parámetros. Para cada parámetro, se calculan 10 valores distribuidos aleatoriamente, que se encuentran dentro del rango definido por los límites inferior y superior. Ahora se calcula la suma absoluta de cuadrados de los residuos de cada combinación. La combinación con la menor suma de cuadrados proporciona los valores iniciales.
Script inicial
Los valores iniciales de los parámetros también pueden calcularse mediante una fórmula FPScript. Debe asegurarse de que el resultado de la fórmula proporcione una serie de datos con n valores (número de parámetros del modelo). De lo contrario, el script inicial se ignora. Para editar la fórmula, haga clic en el símbolo Script inicial. Puede cambiar el código en el cuadro de diálogo que aparece a continuación. Utilice el data variable para acceder a los datos. Utilice el botón Calcular para visualizar el resultado. Haga clic en Aplicar para aceptar los parámetros calculados. También puede seleccionar la opción Utilizar script inicial en el asistente para análisis. El Script inicial se calcula automáticamente cada vez que se cambia el modelo o cuando se vuelve a llamar al ajuste de curva no lineal.
Ponderación
La determinación de los mejores parámetros mediante la minimización de la suma de los cuadrados de los residuos se basa en el supuesto de que la dispersión de los valores en torno a la curva determinada corresponde a una distribución gaussiana. El procedimiento de los mínimos cuadrados es una estimación de máxima verosimilitud si los errores de medición son independientes y están distribuidos normalmente (distribución gaussiana) y tienen una desviación típica constante. Los valores de medición más alejados de la curva asumida influyen más en la suma de los cuadrados de los residuos que los puntos más cercanos.
Si la dispersión es la misma para todos los puntos de datos, ninguna ponderación es necesaria El vector de ponderación W es 1 para cada parámetro.
También hay situaciones experimentales en las que el espaciado residual aumenta al aumentar Y. Si el espaciado absoluto de los puntos a la curva aumenta al aumentar Y, pero la distancia relativa (distancia dividida por Y) permanece constante, tiene sentido una ponderación relativa W =1/Y2. La suma de los cuadrados del espaciado es, por tanto:
La ponderación de Poisson W = 1/Y muestra un compromiso entre la minimización del espaciado relativo y la absoluto. Es especialmente útil para una distribución de Poisson:
Además, la suma de los cuadrados de los residuos puede ponderarse con la varianza. Si los datos que se van a analizar se especifican como matriz de datos o serie de datos, la varianza s2 se determina a través de los datos y se utiliza como ponderación si se selecciona la configuración "Ponderación con 1/s2, 1/s2 se determina a partir de la matriz de datos":
Por último, la varianza s2 puede especificarse utilizando un conjunto de datos. La longitud de los datos de la varianza debe corresponder a la longitud de los datos del conjunto de datos que se va a analizar.
Escalado
Uno problema en el ajuste de curva no lineal puede ser el mal escalado de los parámetros individuales de un modelo. Por ejemplo, una variable podría moverse en un rango de [102, 103] metros y otra en un rango de [10-7, 10-6] segundos. Si se ignora este punto puede repercutir negativamente en los resultados del cálculo.
Por esta razón, existen varias opciones de escalado para los algoritmos respectivos (Sin escalado, Escalado adaptativo, Escalado a partir de la matriz jacobiana inicial, Escalado a partir de límites, Escalado personalizado). En el ejemplo anterior, podría seleccionar un escalado personalizado y convertir el primer parámetro en kilómetros y el segundo parámetro en milisegundos. Ambos parámetros se encuentran en el rango [10-1, 1]. Además del efecto en el algoritmo, el escalado desempeña un papel importante en el cálculo de varios criterios de convergencia. Cuando se calcula sin escalado, los parámetros con un rango de valores muy reducido se omiten al comprobar los criterios de convergencia.
Criterios de parada y parámetros de configuración
Un punto importante en el cálculo de los parámetros es la finalización del algoritmo. Se plantea la cuestión de cuándo un cálculo puede completarse con éxito o cuándo es el momento de cancelarlo con un mensaje de error.
Existen diferentes criterios de convergencia que evalúan si los parámetros calculados en ese momento se acercan lo suficiente a la solución deseada para que el cálculo pueda completarse. Las tolerancias de convergencia pueden configurarse mediante los parámetros Tolerancia X, Tolerancia Y, Tolerancia F y Tolerancia G. El cálculo de los criterios de convergencia difiere entre los algoritmos.
•El algoritmo NL2SOL contiene 5 pruebas de convergencia:
- Convergencia X (criterio relativo de convergencia de parámetros) (convergencia X)
- Convergencia relativa de la función (Relative Function Convergence)
- Convergencia absoluta de la función (Absolute Function Convergence)
- Convergencia singular (Singular Convergence)
- Convergencia falsa (False Convergence)
Se puede influir en los tres primeros criterios de convergencia mediante las opciones de configuración Tolerancia X, Tolerancia Y y Tolerancia F. La convergencia absoluta de la función se produce cuando se encuentra una iteración pk para la que se aplica la tolerancia F (FTolerance) para una tolerancia especificada:
Los otros criterios de convergencia solo se aplican si el paso actual Δpk conduce a una reducción de la función que no supera el doble de la reducción prevista:
Las pruebas de convergencia dependen en gran medida del modelo cuadrático actual qk, que es bastante poco fiable si no se cumple la desigualdad indicada. Por lo tanto, esta comprobación ofrece una protección adicional con respecto a la fiabilidad de los demás criterios de convergencia.
La convergencia X (XTolerance) comprueba el cambio relativo escalado de los parámetros en cada paso de iteración:
La convergencia funcional relativa (YTolerance) se alcanza cuando la función con los parámetros calculados actualmente se aproxima a una función estimada f(p*) con un fuerte minimizador local p*. La función estimada se aproxima mediante un modelo cuadrático:
•Minpack:
La convergencia relativa de los parámetros (convergencia X) se basa en la relación entre el cambio absoluto de los parámetros y el cambio relativo de la norma euclidiana de los parámetros. Este criterio de convergencia puede verse influido por el parámetro de tolerancia X.
Para comprobar la convergencia funcional relativa, el algoritmo LMDER o LMDIF de MINPACK calcula el cambio relativo real en la suma de cuadrados durante una iteración y el cambio relativo estimado basado en un modelo lineal. El criterio de convergencia se cumple si ambos cambios relativos son menores que la tolerancia Y especificada.
El parámetro de tolerancia G se utiliza para especificar lo grande que puede ser el coseno del ángulo entre las columnas de la matriz jacobiana actual y el vector residual correspondiente. De este modo, se puede establecer la ortogonalidad. Se puede establecer una relación matemática entre esta prueba y la prueba de convergencia relativa de parámetro en el algoritmo NL2SOL (cf. Dennis: An Adaptive Non-Linear Least Square Algorithm).
También puede especificar el número máximo de veces que se puede llamar a la función para calcular los residuos antes de que se cancele el cálculo. Puede ocurrir que se llame a la función residual varias veces por paso de iteración. Por lo tanto, no se puede especificar el número máximo de iteraciones, sino el Número máximo de llamadas a la función.
El Límite de paso permite modificar el ancho inicial del paso. Puede que sea necesario modificarlo para evitar que el primer paso sea demasiado grande, lo que podría provocar, por ejemplo, un desbordamiento del exponente. Se define el diámetro de "Trust-Region" en la que se pueden buscar los mejores parámetros en la primera iteración.
Resultado / salida (solo en el objeto de análisis)
La salida de estado describe el motivo de la cancelación de un cálculo. Se distinguen dos grupos. El algoritmo se completa con éxito cuando se cumplen determinados criterios de convergencia. En caso contrario, el algoritmo aborta el cálculo por criterios de parada. Sin embargo, los criterios de convergencia por sí solos no bastan para evaluar el resultado del ajuste de curva no lineal. Por lo tanto, se dispone de varias opciones de salida estadísticas, que pueden utilizarse para evaluar la calidad del ajuste.
El ajuste de curva no lineal le ofrece dos alternativas de salida. Puede calcular los parámetros una vez e introducirlos de forma estática en la función de modelo seleccionada. La función NonLinModel existe para los modelos predefinidos. Para crear un modelo estático, debe pulsar el botón Calcular el ajuste de curvas. Los valores calculados se muestran en la lista de parámetros. Alternativamente, puede especificar qué parámetros estadísticos deben emitirse en la pestaña Salida. Si se seleccionan varias opciones de salida, el objeto de análisis devuelve una lista como resultado. (Véase NonLinCurveFit)
Bibliografía
•P.R. Bevington, D.K. Robinson. Data Reduction and Error Analysis for the Physical Sciences, 3rd Ed., McGraw-Hill, New York, 2003.
•W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery. Numerical Recipes in C. 2nd ed. Cambridge, Reino Unido, Cambridge Univ. Press, 1992.
•G. A. F. Seber, C. J. Wild. Nonlinear Regression. Wiley, Nueva York, 2003.
•K. Madsen, H.B. Nielsen, O. Tingleff, Methods for non-linear least squares problems, 2nd Edition, IMM, DTU, April 2004
•P.E. Frandsen, K. Jonasson, H. B.Nielsen. Unconstrained Optimization, 3rd Edition, IMM, DTU, March 2004
•Harvey Motulsky, Arthur Christopoulos. Fitting Models to Biological Data Using Linear and Nonlinear Regression: A Practical Guide to Curve Fitting. Oxford University Press, 2004.
Encontrará información sobre los algoritmos en:
•J. E. Dennis Jr., Robert B. Schnabel. Numerical Methods for Unconstrained Optimization and Nonlinear Equations. Classics in Applied Mathematics 16, SIAM Society for Industrial and Applied Mathematics, 1996.
•J. E. Dennis, Jr, D. M. Gay y R. E. Welsch. An Adaptive Nonlinear Least Square Algorithm, ACM Trans. Math. Software 7, 1981, pp. 348-368 y 369-383
•J. E. Dennis, Jr, D. M. Gay y R. E. Welsch. Algorithm 573. NL2SOL -- An adaptive nonlinear least-squares algorithm, ACM Trans. Math. Software 7, 1981, pp. 369-383.
•D.W. Marquardt. An Algorithm for Least-Squares Estimation of Nonlinear Parameters, Journal of the Society for Industrial and Applied Mathematics, vol. 11, 1963, pp 431-441.
•Jorge J. Moré. The Levenberg-Marquardt Algorithm: Implementation and Theory, Numerical Analysis, Lecture Notes in Mathematics, vol. 630, G.A. Watson, ed. (Berlín: Springer Verlag), 1977, pp. 105- 116.
•J. J. Moré, B. S. Garbow y K. E. Hillstrom. User Guide for MINPACK-1, Argonne National Laboratory Report ANL-80-74, Argonne, Ill., 1980. Internet: http://www.netlib.org/minpack/ex/file06
•P. A. Fox, A. D. Hall y N. L. Schryer. The PORT mathematical subroutine library, ACM Trans. Math. Software 4, 1978, pp. 104-126.
•D. M. Gay. Usage summary for selected optimization routines, Computing Science Technical Report No. 153, AT\&T Bell Laboratories, Murray Hill, NJ, 1990.
•K.L. Hierbert. An Evaluation of Mathematical Software that Solves Nonlinear Least Squares Problems. ACM Trans. Math. Software, Vol 7, No. 1, 1981, pp. 1-16.
Función FPScript utilizada
Véase también
Tutorial Ajuste de curva no lineal
Opciones de salida estadística del ajuste de curva no lineal
* Este objeto de análisis no está disponible en FlexPro View.