Aproxima un modelo no lineal a un conjunto de datos y devuelve los parámetros de modelo encontrados, los datos modelados y una variedad de resultados estadísticos.
Sintaxis
NonLinCurveFit(Model, Data, [ InitialValues ], [ Bounds ], [ WeightingMode = NLCF_WEIGHTING_DATA ], [ Variance ], [ ScalingMode = NLCF_SCALING_NONE ], [ Scaling ], [ OutputOptions = NLCF_OUTPUT_PREDICTED_VALUES ], [ Settings ], [ Algorithm = NLCF_ALGORITHM_FULLNEWTON ] [ , OptionalParameters ])
La sintaxis de la función NonLinCurveFit consta de los siguientes elementos:
Parte |
Descripción |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model |
Determina el modelo que debe adaptarse a los datos. El argumento puede seleccionarse de una lista de modelos predefinidos o puede especificarse un modelo personalizado. El modelo personalizado se transfiere como una cadena o como una serie de datos con dos cadenas. La primera cadena contiene el código FPScript para calcular la función del modelo. La segunda cadena se utiliza para transmitir un código FPScript que calcula analíticamente las derivadas parciales de la función del modelo para los parámetros individuales y las emite como una lista. Si solo se especifica una cadena, las derivadas se aproximan numéricamente. Los parámetros de un modelo personalizado con el número de parámetros n deben introducirse como p[0], p[1]... p[n-1]en el código FPScript. La variable independiente es x. Por ejemplo, para el modelo 'y = a + b x', la serie de datos {"p[0] + p[1] *x", "[1, x]"} para un cálculo analítico, o bien la cadena "p[0] + p[1] * x" para un cálculo numérico de las derivadas. Debe tenerse en cuenta que x se transfiere como una serie de datos y no como un valor escalar, es decir, la función modelo y las derivadas parciales se calculan en un solo paso para todos los valores de X. El código FPScript debe diseñarse en consecuencia. También pueden definirse modelos con varias variables dependientes. A continuación, las funciones del modelo se transfieren como una lista y las derivadas como una lista con listas: {"[ p[0] + p[1] * x.[0], p[1] * x.[1]^2 ]", "[ [1,x.[0] ] , [0, x.[1]^2] ]"} Las estructuras de datos permitidas son Valor escalar y Serie de datos. Los tipos de datos permitidos son Entero de 16 bits, Entero de 32 bits, Entero de 64 bits y Cadena. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Data |
Estos son los datos a los que debe adaptarse el modelo. Si el modelo tiene varias variables dependientes, el argumento debe especificarse como una lista con un conjunto de datos por variable. Las estructuras de datos permitidas son Serie de datos, Matriz de datos, Señal, Serie de señales y Lista. Se permiten todos los tipos de datos numéricos excepto Tiempo de calendario. En los tipos de datos complejos se calcula un valor absoluto. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InitialValues |
Es la serie de datos con los valores iniciales para los parámetros del modelo que se va a determinar. Si utiliza uno de los modelos predefinidos, puede omitir el argumento. En este caso, se utilizan los valores iniciales específicos del modelo. El número de valores corresponde al número de parámetros del modelo multiplicado por el número de picos. Las estructuras de datos permitidas son Serie de datos. Se permiten todos los tipos de datos numéricos. Se ignora la unidad del argumento. En los tipos de datos complejos se calcula un valor absoluto. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bounds |
Es la matriz de datos con los límites de los parámetros del modelo que se va a determinar. La matriz contiene una columna con dos límites por parámetro. Si se omite el argumento, no se utilizan valores límite o se utilizan valores límite específicos del modelo. Puede invalidar límites individuales. Los límites deben estar dentro del rango especificado por el modelo correspondiente. El límite superior debe ser mayor que el límite inferior. Las estructuras de datos permitidas son Matriz de datos. Se permiten todos los tipos de datos numéricos. Se ignora la unidad del argumento. En los tipos de datos complejos se calcula un valor absoluto. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WeightingMode |
Especifica cómo se ponderan los puntos de datos individuales a los que debe ajustarse el modelo. Por defecto, la ponderación se basa en los datos. El argumento WeightingMode puede tener los siguientes valores:
Se establece el valor predeterminado NLCF_WEIGHTING_DATA si no se especifica el argumento. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variance |
Es una serie de datos con las varianzas de los puntos de datos individuales. Si utiliza un modelo personalizado con varias variables dependientes, debe especificar una lista con una serie de datos por variable. Solo tiene que especificar el argumento si ha seleccionado la ponderación personalizada. Las estructuras de datos permitidas son Serie de datos y Lista. Se permiten todos los tipos de datos numéricos. Se ignora la unidad del argumento. En los tipos de datos complejos se calcula un valor absoluto. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ScalingMode |
Especifica qué escalado debe utilizarse para el problema. (*) No para el algoritmo de Levenberg-Marquardt El argumento ScalingMode puede tener los siguientes valores:
Se establece el valor predeterminado NLCF_SCALING_NONE si no se especifica el argumento. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Scaling |
Es una serie de datos con un factor de escala positivo por parámetro del modelo. Solo tiene que introducir este argumento si ha seleccionado el escalado personalizado. Las estructuras de datos permitidas son Serie de datos. Se permiten todos los tipos de datos numéricos. Se ignora la unidad del argumento. En los tipos de datos complejos se calcula un valor absoluto. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OutputOptions |
Especifica qué resultados deben devolverse. Si hay varios resultados, se emiten en forma de lista. Si, por ejemplo, se desea obtener la matriz de correlación y la matriz de covarianza, el argumento debe tener el valor NLCF_OUTPUT_CORRELATION + NLCF_OUTPUT_COVARIANCE. Las opciones de salida estadística del ajuste de curva no lineal ayudan a determinar la calidad del ajuste. (m = número de puntos de datos, n = número de parámetros) (*) Para calcular estos parámetros estadísticos se utiliza la matriz de covarianza. El cálculo de la matriz de covarianza no es posible cuando se utiliza el algoritmo Full Newton si se especifican límites y un escalado (todos excepto NLCF_SCALING_NONE). El argumento OutputOptions puede tener los siguientes valores:
Se establece el valor predeterminado NLCF_OUTPUT_PREDICTED_VALUES si no se especifica el argumento. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Settings |
Es una lista que cambia la configuración del algoritmo utilizado. El argumento puede tener los siguientes elementos con nombre:
* Solo con el algoritmo de Levenberg-Marquardt ** Solo con el algoritmo Full Newton Los valores se transfieren en forma de lista, por ejemplo: [<MaximumNumberOfFunctionCalls> 100, <XTolerance> 1e-015,<YTolerance> 1e-015, <FTolerance> 1e-015, <StepBound> 1e+002] Las estructuras de datos permitidas son Lista. Se permiten todos los tipos de datos numéricos. Se ignora la unidad del argumento. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Algorithm |
Especifica qué algoritmo debe utilizarse. El argumento Algorithm puede tener los siguientes valores:
Se establece el valor predeterminado NLCF_ALGORITHM_FULLNEWTON si no se especifica el argumento. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OptionalParameters |
Es una lista que se puede transferir al modelo. El argumento puede tener los siguientes elementos con nombre:
Los valores se transfieren en forma de lista. Ejemplo de modelo con 3 parámetros y 2 picos: [<NumberOfPeaks>2, <FixedParameters>{FALSE, TRUE, FALSE, FALSE, FALSE, FALSE}, <SharedParameters>{FALSE, FALSE, FALSE}] Las estructuras de datos permitidas son Lista. Se permiten todos los tipos de datos. Se ignora la unidad del argumento. |
Notas
La salida de estado describe el motivo de la cancelación de un cálculo. Se distinguen dos grupos. El algoritmo se completa correctamente cuando se cumplen determinados criterios de convergencia. En caso contrario, el algoritmo anula el cálculo por criterios de anulación. El resultado de la función es entonces solo la salida de estado.
Criterios de convergencia:
Constante |
Significado |
|---|---|
0 |
Convergencia X. |
1 |
Convergencia funcional relativa. |
2 |
Convergencia absoluta de funciones. |
3 |
La convergencia X y la convergencia relativa de la función. |
4 |
Tolerancia para el coseno del ángulo entre las columnas de la matriz jacobiana actual y el vector residual correspondiente. |
Criterios de anulación:
Constante |
Significado |
|---|---|
5 |
Convergencia singular. |
6 |
Convergencia falsa. |
7 |
Número máximo de iteraciones alcanzado. |
8 |
Valores iniciales incorrectos. |
9 |
No se puede calcular el gradiente. |
10 |
Anulación manual del cálculo. |
11 |
Error interno del algoritmo. |
12 |
Número máximo de llamadas a la función alcanzado. |
13 |
No se puede calcular el modelo. |
Se puede acceder a los resultados con los siguientes nombres de los elementos de lista:
Constante |
Significado |
|---|---|
.["AverageResidual"] |
Residuo medio. |
.["Baseline"] |
Línea de base para modelos con múltiples picos. |
.["Confidence95"] |
Intervalo de confianza del 95 %. |
.["Confidence99"] |
Intervalo de confianza del 99 %. |
.["Confidence999"] |
Intervalo de confianza del 99,9 %. |
.["ConfidenceParameter95"] |
Intervalo de confianza de los parámetros del 95 %. |
.["ConfidenceParameter99"] |
Intervalo de confianza de los parámetros del 99 %. |
.["ConfidenceParameter999"] |
Intervalo de confianza de los parámetros del 99,9 %. |
.["Correlation"] |
Matriz de correlación. |
.["Covariance"] |
Matriz de covarianza. |
.["ErrorVariance"] |
Varianza del error. |
.["Iterations"] |
Número de iteraciones necesarias. |
.["ParameterError"] |
Error estándar de los parámetros. |
.["Peaks"] |
Curvas del picos para modelos con múltiples picos. |
.["Prediction95"] |
Banda de predicción del 95 %. |
.["Prediction99"] |
Banda de predicción del 99 %. |
.["Prediction999"] |
Banda de predicción del 99,9 %. |
.["PredictedValues"] |
Los datos modelados. |
.["R2"] |
Coeficiente de determinación R2. |
.["Ra2"] |
Coeficiente de determinación ajustado Ra2. |
.["Residual"] |
Residuos. |
.["ResidualSum"] |
Suma de los residuos. |
.["Solution"] |
Los parámetros encontrados. |
.["SSE"] |
Suma absoluta de los cuadrados de los residuos. |
.["SSER"] |
Suma cuadrática relativa de los residuos. |
.["SSR"] |
Suma cuadrática de regresión. |
.["SST"] |
Suma cuadrada total. |
.["Status"] |
Salida de estado del algoritmo. |
También puede utilizar la sintaxis Formula.ListElementName. Sin embargo, debe tener en cuenta que las propiedades de la fórmula a las que se puede acceder del mismo modo tienen prioridad sobre los elementos de la lista con el mismo nombre. Esto se aplica, por ejemplo, al elemento R2.
Disponibilidad
FlexPro Basic, Professional, Developer Suite
Ejemplos
Dim list = NonLinCurveFit(MODEL_EXP_EXPONENTIAL_DECAY2, Ag, {13.33,980.56,33.92,133.80,188.28}, , _
NLCF_WEIGHTING_DATA, , NLCF_SCALING_NONE, , NLCF_OUTPUT_ALL, _
[<MaximumNumberOfFunctionCalls> 100, _
<XTolerance> 1e-008, _
<YTolerance> 1e-008, _
<FTolerance> 1e-015, _
<StepBound> 1e+002], _
NLCF_ALGORITHM_FULLNEWTON, _
[<NumberOfPeaks>1, _
<BaseLine>NLCF_BASELINE_NONE , _
<FixedParameters>{FALSE,FALSE,FALSE,FALSE,FALSE}, _
<SharedParameters>{FALSE,FALSE,FALSE,FALSE,FALSE}])
Aproxima la señal 'Ag' con el modelo de función exponencial decreciente (variante 2). El resultado del cálculo es una lista de todos los gastos disponibles. Este es un ejemplo del tutorial Ajuste de curva no lineal.
list.["PredictedValues"]
Resultados en los datos modelizados.
NonLinCurveFit(MODEL_EXP_EXPONENTIAL_DECAY2, Ag, {13.33,980.56,33.92,133.80,188.28})
También produce los datos modelizados. Esta es una llamada de función simplificada del ejemplo anterior, en la que se utilizan los valores por defecto.
NonLinCurveFit("Dim a = p[0]\r\n _
Dim b = p[1]\r\n _
Dim c = p[2]\r\n _
a + b * x + c * x^2", _
Data, {1,1,0,0}, , , , , , , [<MaximumNumberOfFunctionCalls> 300])
Aproxima el conjunto de datos 'Datos' con el modelo personalizado a + b * x + c *x2. Se permite un máximo de 300 iteraciones.
NonLinCurveFit("Dim a = p[0]\r\n _
Dim b = p[1]\r\n _
Dim s1 = d.[0]\r\n _
Dim s2 = d.[1]\r\n _
a * s1 + b * s2", _
Data, {1,1}, , , , , , , [<MaximumNumberOfFunctionCalls> 300], , [<AuxData> [Series1, Series2] ])
Aproxima el conjunto de datos 'Datos' con el modelo personalizado a * Serie1 + b * Serie2. Las dos series de datos 'Series1' y 'Series2' se transfieren como una lista con dos elementos.
Véase también
Objeto de análisis Ajuste de curva no lineal
Tutorial Ajuste de curva no lineal
Opciones de salida estadística para el ajuste de curva no lineal