Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

nlinfit

La regresión no lineal

Descripción

ejemplo

beta = nlinfit(X,Y,modelfun,beta0) Devuelve un vector de coeficientes estimados para la regresión no lineal de las respuestas en los predictores en el uso del modelo especificado por.YXmodelfun Los coeficientes se estiman utilizando la estimación de mínimos cuadrados iterativos, con los valores iniciales especificados por.beta0

ejemplo

beta = nlinfit(X,Y,modelfun,beta0,options) se ajusta a la regresión no lineal utilizando los parámetros de control de algoritmo en la estructura.options Puede devolver cualquiera de los argumentos de salida en las sintaxis anteriores.

ejemplo

beta = nlinfit(___,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede especificar ponderaciones de observación o un modelo de error no constante. Puede utilizar cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(___) Además devuelve los residuos, el jacobiano de, la matriz de varianza-covarianza estimada para los coeficientes estimados, una estimación de la varianza del término de error, y una estructura que contiene detalles sobre el modelo de error,.RmodelfunJCovBMSEErrorModelInfo

Ejemplos

contraer todo

Cargue datos de muestra.

S = load('reaction'); X = S.reactants; y = S.rate; beta0 = S.beta;

Ajuste el modelo Hougen-Watson a los datos de velocidad utilizando los valores iniciales en.beta0

beta = nlinfit(X,y,@hougen,beta0)
beta = 5×1

    1.2526
    0.0628
    0.0400
    0.1124
    1.1914

Genere datos de ejemplo del modelo de regresión no lineal

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo></mo>
<mi>e</mi>
<mi>x</mi>
<mi>p</mi>
<mo stretchy="false">{</mo>
<mo>-</mo>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>3</mn>
</mrow>
</msub>
<mi>x</mi>
<mo stretchy="false">}</mo>
<mo>+</mo>
<mi>ϵ</mi>
</mrow>
</math>
Dónde
<math display="block">
<mrow>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</math>
,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>b</mi>
</mrow>
<mrow>
<mn>3</mn>
</mrow>
</msub>
</mrow>
</math>
son coeficientes, y el término de error se distribuye normalmente con la media 0 y la desviación estándar 0,1.

modelfun = @(b,x)(b(1)+b(2)*exp(-b(3)*x));  rng('default') % for reproducibility b = [1;3;2]; x = exprnd(2,100,1); y = modelfun(b,x) + normrnd(0,0.1,100,1);

Establezca opciones de ajuste robustas.

opts = statset('nlinfit'); opts.RobustWgtFun = 'bisquare';

Ajuste el modelo no lineal utilizando las opciones de ajuste robusto.

beta0 = [2;2;2]; beta = nlinfit(x,y,modelfun,beta0,opts)
beta = 3×1

    1.0041
    3.0997
    2.1483

Cargue datos de muestra.

S = load('reaction'); X = S.reactants; y = S.rate; beta0 = S.beta;

Especifique un vector de ponderaciones de observación conocidas.

W = [8 2 1 6 12 9 12 10 10 12 2 10 8]';

Ajuste el modelo Hougen-Watson a los datos de velocidad utilizando los pesos de observación especificados.

[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,'Weights',W); beta
beta = 5×1

    2.2068
    0.1077
    0.0766
    0.1818
    0.6516

Visualice los errores estándar de coeficiente.

sqrt(diag(CovB))
ans = 5×1

    2.5721
    0.1251
    0.0950
    0.2043
    0.7735

Cargue datos de muestra.

S = load('reaction'); X = S.reactants; y = S.rate; beta0 = S.beta;

Especifique un manejador de funciones para ponderaciones de observación. La función acepta los valores ajustados del modelo como entrada y devuelve un vector de pesos.

 a = 1; b = 1;  weights = @(yhat) 1./((a + b*abs(yhat)).^2);

Ajuste el modelo Hougen-Watson a los datos de velocidad utilizando la función de ponderaciones de observación especificada.

[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,'Weights',weights); beta
beta = 5×1

    0.8308
    0.0409
    0.0251
    0.0801
    1.8261

Visualice los errores estándar de coeficiente.

sqrt(diag(CovB))
ans = 5×1

    0.5822
    0.0297
    0.0197
    0.0578
    1.2810

Cargue datos de muestra.

S = load('reaction'); X = S.reactants; y = S.rate; beta0 = S.beta;

Ajuste el modelo Hougen-Watson a los datos de velocidad utilizando el modelo de error combinado.

[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(X,y,@hougen,beta0,'ErrorModel','combined'); beta
beta = 5×1

    1.2526
    0.0628
    0.0400
    0.1124
    1.1914

Mostrar la información del modelo de error.

ErrorModelInfo
ErrorModelInfo = struct with fields:
              ErrorModel: 'combined'
         ErrorParameters: [0.1517 5.6783e-08]
           ErrorVariance: [function_handle]
                     MSE: 1.6245
          ScheffeSimPred: 6
          WeightFunction: 0
            FixedWeights: 0
    RobustWeightFunction: 0

Argumentos de entrada

contraer todo

Variables predictoras para la función de regresión no lineal, especificadas como una matriz. Normalmente, es una matriz de diseño de valores predictores (variables independientes), con una fila para cada valor en y una columna para cada predictor.XY Sin embargo, puede ser cualquier arreglo que pueda aceptar.Xmodelfun

Tipos de datos: single | double

Valores de respuesta (variable dependiente) para ajustar la función de regresión no lineal, especificada como un vector con el mismo número de filas que.X

Tipos de datos: single | double

Función de modelo de regresión no lineal, especificada como un identificador de función. debe aceptar dos argumentos de entrada, un vector de coeficiente y una matriz (en ese orden) y devolver un vector de valores de respuesta ajustados.modelfunX

Por ejemplo, para especificar la función de regresión no lineal, utilice el manejador de funciones.hougen@hougen

Tipos de datos: function_handle

Valores de coeficiente iniciales para el algoritmo de estimación de mínimos cuadrados, especificado como vector.

Nota

Los valores de inicio deficientes pueden conducir a una solución con un gran error residual.

Tipos de datos: single | double

Opciones del algoritmo de estimación, especificadas como una estructura que se crea mediante.statset Se aplican los siguientes parámetros.statsetnlinfit

Diferencia relativa para el cálculo de gradiente de diferencia finita, especificado como un valor escalar positivo, o un vector del mismo tamaño que.beta Utilice un vector para especificar una diferencia relativa diferente para cada coeficiente.

Nivel de visualización de salida durante la estimación, especificado como uno de, o.'off''iter''final' Si se especifica, la salida se muestra en cada iteración.'iter' Si se especifica, la salida se muestra después de la iteración final.'final'

Indicador para comprobar si hay valores no válidos, como o de la función objetiva, especificados como o.NaNInf'on''off'

Número máximo de iteraciones para el algoritmo de estimación, especificado como un entero positivo. Las iteraciones continúan hasta que las estimaciones se encuentran dentro de la tolerancia de convergencia, o se alcanza el número máximo de iteraciones especificadas.MaxIter

Función de peso para una conexión robusta, especificada como un vector de caracteres válido, un escalar de cadena o un identificador de función.

Nota

debe tener valor cuando se utilizan ponderaciones de observación,.RobustWgtFun[]W

En la tabla siguiente se describen los posibles vectores de caracteres y escalares de cadena. Permite denotar residuos normalizados y denotar pesos sólidos.rw La función de indicador I [] es igual a 1 si la expresión es verdadera, y 0 en caso contrario.xx

Función de pesoEcuaciónConstante de sintonización predeterminada
predeterminado'' Sin ajuste robusto
'andrews'

w=I[|r|<π]×sin(r)/r

1,339
'bisquare'

w=I[|r|<1]×(1r2)2

4,685
'cauchy'

w=1(1+r2)

2,385
'fair'

w=1(1+|r|)

1,400
'huber'

w=1max(1,|r|)

1,345
'logistic'

w=tanh(r)r

1,205
'talwar'

w=I[|r|<1]

2,795
'welsch'

w=exp{r2}

2,985

También puede especificar un identificador de función que acepte un vector de residuales normalizados como entrada y devuelva un vector de ponderaciones sólidas como salida. Si usa un identificador de función, debe proporcionar una constante.Tune

Constante de ajuste para un empalme robusto, especificado como un valor escalar positivo. La constante de sintonización se utiliza para normalizar los residuos antes de aplicar una función de peso robusta. La constante de sintonización predeterminada depende de la función especificada por.RobustWgtFun

Si utiliza un identificador de función para especificar, debe especificar un valor para.RobustWgtFunTune

Tolerancia de terminación para la suma de cuadrados residual, especificada como un valor escalar positivo. Las iteraciones continúan hasta que las estimaciones se encuentran dentro de la tolerancia de convergencia, o se alcanza el número máximo de iteraciones especificadas.MaxIter

Tolerancia de terminación en los coeficientes estimados, especificado como un valor escalar positivo.beta Las iteraciones continúan hasta que las estimaciones se encuentran dentro de la tolerancia de convergencia, o se alcanza el número máximo de iteraciones especificadas.MaxIter

Indicador de ajuste robusto, especificado como o.'off''on'

Nota

se eliminarán en una versión de software futura.Robust Se utiliza para un ajuste robusto.RobustWgtFun

Función de peso para una conexión robusta, especificada como un vector de caracteres o un escalar de cadena que indica una función de peso o un manejador de función. sólo es válida cuando tiene valor.WgtFunRobust'on'

Nota

se eliminarán en una versión de software futura.WgtFun Use en su lugar.RobustWgtFun

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: especifica un modelo de error proporcional, con el valor inicial 0,5 para la estimación del parámetro de error'ErrorModel','proportional','ErrorParameters',0.5

Forma del término de error, especificada como el par separado por comas que consta de y, o que indica el modelo de error.'ErrorModel''constant''proportional''combined' Cada modelo define el error utilizando una variable media-cero y unidad-varianza estándar en combinación con componentes independientes: el valor de la función y uno o dos parámetros y.efab

predeterminado'constant'y=f+ae
'proportional'y=f+bfe
'combined'y=f+(a+b|f|)e

El único modelo de error permitido cuando se utiliza es.Weights'constant'

Nota

debe tener valor cuando se usa un modelo de error que no sea.options.RobustWgtFun[]'constant'

Estimaciones iniciales para los parámetros del modelo de error en el elegido, especificado como el par separado por comas que consta de un valor escalar o un vector de dos elementos.ErrorModel'ErrorParameters'

Modelo de errorParámetrosValores predeterminados
'constant' a1
'proportional'b1
'combined',ab[1,1]

Por ejemplo, si tiene el valor, puede especificar el valor inicial 1 para y el valor inicial 2 para lo siguiente.'ErrorModel''combined'ab

Ejemplo: 'ErrorParameters',[1,2]

Sólo se puede utilizar el modelo de error cuando se utiliza.'constant'Weights

Nota

debe tener valor cuando se usa un modelo de error que no sea.options.RobustWgtFun[]'constant'

Tipos de datos: double | single

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector de pesos positivos reales o un manejador de función.'Weights' Puede utilizar pesos de observación para bajar el peso de las observaciones que desea que tengan menos influencia en el modelo ajustado.

  • Si es un vector, debe tener el mismo tamaño que.WY

  • Si es un identificador de función, debe aceptar un vector de valores de respuesta pronosticados como entrada y devolver un vector de pesos positivos reales como salida.W

Nota

debe tener valor cuando se utilizan ponderaciones de observación.options.RobustWgtFun[]

Tipos de datos: double | single | function_handle

Argumentos de salida

contraer todo

Coeficientes de regresión estimados, devueltos como un vector. El número de elementos en equivale al número de elementos en.betabeta0

Dejar f(Xi,b) denotan la función no lineal especificada por, dondemodelfun xi son los predictores para la observación, = 1,...,, yiiN b son los coeficientes de regresión. El vector de coeficientes devueltos minimiza la ecuación de mínimos cuadrados ponderados,beta

i=1Nwi[yif(xi,b)]2.

Para la regresión no lineal no ponderada, todos los términos de peso son iguales a 1.

Residuos para el modelo ajustado, devueltos como un vector.

  • Si especifica ponderaciones de observación utilizando el argumento de par nombre-valor, entonces contiene.WeightsRresiduales ponderados

  • Si especifica un modelo de error distinto de usar el argumento de par nombre-valor, entonces ya no podrá interpretar como valores residuales de ajuste de modelo.'constant'ErrorModelR

Jacobiano del modelo de regresión no lineal, devuelto como un-por-matriz, donde es el número de observaciones y es el número de coeficientes estimados.modelfunNpNp

  • Si especifica ponderaciones de observación utilizando el argumento de par nombre-valor, entonces es el.WeightsJfunción ponderada del modelo jacobiano

  • Si especifica un modelo de error distinto de usar el argumento de par nombre-valor, entonces ya no podrá interpretar como la función de modelo Jacobian.'constant'ErrorModelJ

Varianza estimada-matriz de covarianzas para los coeficientes ajustados,, devuelta como a-por-matriz, donde es el número de coeficientes estimados.betappp Si el modelo jacobiano,, tiene rango de columna completa, entonces, donde está el error cuadrado medio.JCovB = inv(J'*J)*MSEMSE

Error cuadrado medio (MSE) del modelo ajustado, devuelto como un valor escalar. MSE es una estimación de la varianza del término del error. Si el modelo jacobiano, tiene rango de columna completo, entonces, donde está el número de observaciones, y es el número de coeficientes estimados.JMSE = (R'*R)/(N-p)Np

Información sobre el ajuste del modelo de error, devuelta como una estructura con los siguientes campos:

ErrorModelModelo de error elegido
ErrorParametersLos parámetros de error estimados
ErrorVarianceIdentificador de función que acepta una-por-matriz, y devuelve un vector-by-1 de varianzas de error utilizando el modelo de error EstimadoNpXN
MSEError cuadrado medio
ScheffeSimPredParámetro de Scheffé para intervalos de predicción simultáneos cuando se utiliza el modelo de error Estimado
WeightFunctionLógico con valor si ha utilizado una función de ponderación personalizada anteriormente entruenlinfit
FixedWeightsLógico con valor si ha utilizado pesos fijos previamente entruenlinfit
RobustWeightFunctionLógico con valor si ha utilizado un ajuste robusto anteriormente entruenlinfit

Más acerca de

contraer todo

Los residuales ponderados

A es un residuo multiplicado por la raíz cuadrada del peso de observación correspondiente.residual ponderada

Dados los coeficientes de regresión estimados, b, el residuo para la observación esi

ri=yif(xi,b),

Dónde yi es la respuesta observada y f(xi,b) es la respuesta ajustada en los predictores xi.

Cuando se ajusta una regresión no lineal ponderada con pesos Wi, = 1,...,, devuelve los residuales ponderados,iNnlinfit

ri*=wi(yif(xi,b)).

Función modelo ponderada jacobiana

El es el modelo no lineal jacobiano multiplicado por la raíz cuadrada de la matriz de peso de observación.función ponderada del modelo jacobiano

Dados los coeficientes de regresión estimados, b, el modelo estimado jacobiano, J,para la función no lineal f(xi,b) tiene elementos

Jij=f(xi,b)bj,

Dónde Bj es el elemento TH dej b.

Cuando se ajusta una regresión no lineal ponderada con la matriz de ponderaciones diagonales W,Devuelve la matriz jacobiana ponderada,nlinfit

J*=W1/2J.

Sugerencias

  • Para generar estimaciones de errores en las predicciones, use los argumentos de salida opcionales, o como entradas.RJCovBMSEnlpredci

  • Para generar estimaciones de errores en los coeficientes estimados, utilice los argumentos de salida opcionales, o como entradas.betaRJCovBMSEnlparci

  • Si utiliza la opción de ajuste robusto, debe utilizar — y podría necesitar — como entradas o para asegurarse de que los intervalos de confianza tienen en cuenta el ajuste robusto correctamente.RobustWgtFunCovBMSEnlpredcinlparci

Algoritmos

  • trata los valores en o como datos que faltan, y omite las observaciones correspondientes.nlinfitNaNYmodelfun(beta0,X)

  • Para una estimación no robusta, utiliza el algoritmo de mínimos cuadrados no lineales Levenberg-Marquardt.nlinfit[1]

  • Para una estimación robusta, utiliza un algoritmo iterativo de mínimos cuadrados reponderados (,).nlinfit[2][3] En cada iteración, los pesos sólidos se recalculan en función del residuo de cada observación de la iteración anterior. Estos pesos superan los valores atípicos, por lo que su influencia en el ajuste disminuye. Las iteraciones continúan hasta que las ponderaciones convergen.

  • Cuando se especifica un manejador de funciones para ponderaciones de observación, las ponderaciones dependen del modelo ajustado. En este caso, utiliza un algoritmo iterativo de mínimos cuadrados generalizados para ajustarse al modelo de regresión no lineal.nlinfit

Referencias

[1] Seber, G. A. F., and C. J. Wild. Nonlinear Regression. Hoboken, NJ: Wiley-Interscience, 2003.

[2] DuMouchel, W. H., and F. L. O'Brien. “Integrating a Robust Option into a Multiple Regression Computing Environment.” Computer Science and Statistics: Proceedings of the 21st Symposium on the Interface. Alexandria, VA: American Statistical Association, 1989.

[3] Holland, P. W., and R. E. Welsch. “Robust Regression Using Iteratively Reweighted Least-Squares.” Communications in Statistics: Theory and Methods, A6, 1977, pp. 813–827.

Introducido antes de R2006a