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.

predict

Clase: NonLinearModel

Predecir la respuesta del modelo de regresión no lineal

Sintaxis

ypred = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew)
[ypred,yci] = predict(mdl,Xnew,Name,Value)

Descripción

ypred = predict(mdl,Xnew) Devuelve la respuesta pronosticada del modelo de regresión no lineal a los puntos en.mdlXnew

[ypred,yci] = predict(mdl,Xnew) Devuelve intervalos de confianza para las respuestas medias verdaderas.

[ypred,yci] = predict(mdl,Xnew,Name,Value) predice las respuestas con opciones adicionales especificadas por uno o más argumentos de par.Name,Value

Argumentos de entrada

mdl

Modelo de regresión no lineal, construido por.fitnlm

Xnew

Puntos en los que predice las respuestas.mdl

  • Si es una matriz de tabla o DataSet, debe contener los nombres de predictor en.Xnewmdl

  • Si es una matriz numérica, debe tener el mismo número de variables (columnas) que se usó para crear.Xnewmdl Además, todas las variables utilizadas en la creación deben ser numéricas.mdl

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

'Alpha'

Escalar positivo desde a.01 El nivel de confianza es 100 (1 –)%.ycialpha

Predeterminado: , lo que significa un intervalo de confianza del 95%.0,05

'Prediction'

Tipo de predicción:

  • : predice los límites de confianza para los valores medio ajustados.'curve'Predecir

  • : predice los límites de confianza para las nuevas observaciones.'observation'Predecir Esto da lugar a límites más amplios porque el error en una nueva observación es igual al error en el valor medio estimado, más la variabilidad en la observación de la media verdadera.

Para obtener más información, consulte.polyconf

Predeterminado: 'curve'

'Simultaneous'

Valor lógico que especifica si los límites de confianza son para todos los valores predictores simultáneamente (), o mantener para cada valor predictor individual ().truefalse Los límites simultáneos son más anchos que los límites independientes, ya que es más estricto exigir que toda la curva esté dentro de los límites que exigir que la curva en un solo valor predictor esté dentro de los límites.

Para obtener más información, consulte.polyconf

Predeterminado: false

'Weights'

Vector de pesos de valor real, positivo o un manejador de funciones.

  • Si especifica un vector, debe tener el mismo número de elementos que el número de observaciones (o filas) en.Xnew

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

Pesos dados,, estima la varianza del error en la observación por, donde MSE es el error cuadrado medio.WPredeciriMSE*(1/W(i))

Predeterminado: Sin pesos

Argumentos de salida

ypred

Valores de media previstos en. es del mismo tamaño que cada componente de.XnewypredXnew

yci

Intervalos de confianza, una matriz de dos columnas con cada fila que proporciona un intervalo. El significado del intervalo de confianza depende de la configuración de los pares nombre-valor.

Ejemplos

expandir todo

Crear un modelo no lineal de kilometraje del coche en función del peso, y predecir la respuesta.

Crear un modelo exponencial de kilometraje de coche en función del peso de los datos.carsmall Escale el peso por un factor de 1000 para que todas las variables sean aproximadamente iguales en tamaño.

load carsmall X = Weight; y = MPG; modelfun = 'y ~ b1 + b2*exp(-b3*x/1000)'; beta0 = [1 1 1]; mdl = fitnlm(X,y,modelfun,beta0);

Crear respuestas pronosticadas a los datos.

Xnew = X; ypred = predict(mdl,Xnew);

Trace las respuestas originales y las respuestas previstas para ver cómo difieren.

plot(X,y,'o',X,ypred,'x') legend('Data','Predicted')

Crear un modelo no lineal de kilometraje del coche en función del peso, y examinar los intervalos de confianza de algunas respuestas.

Crear un modelo exponencial de kilometraje de coche en función del peso de los datos.carsmall Escale el peso por un factor de 1000 para que todas las variables sean aproximadamente iguales en tamaño.

load carsmall X = Weight; y = MPG; modelfun = 'y ~ b1 + b2*exp(-b3*x/1000)'; beta0 = [1 1 1]; mdl = fitnlm(X,y,modelfun,beta0);

Cree respuestas pronosticadas en los puntos de datos más pequeños, medios y grandes.

Xnew = [min(X);mean(X);max(X)]; [ypred,yci] = predict(mdl,Xnew)
ypred = 3×1

   34.9469
   22.6868
   10.0617

yci = 3×2

   32.5212   37.3726
   21.4061   23.9674
    7.0148   13.1086

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>
<mi mathvariant="normal">exp</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
<math display="block">
<mrow>
<mi>ϵ</mi>
</mrow>
</math>
se distribuye normalmente con la media 0 y la desviación estándar 0,5.

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.5,100,1);

Ajuste el modelo no lineal con opciones de ajuste sólidas.

opts = statset('nlinfit'); opts.RobustWgtFun = 'bisquare'; b0 = [2;2;2]; mdl = fitnlm(x,y,modelfun,b0,'Options',opts);

Trace el modelo de regresión ajustada y los límites de confianza simultáneos del 95%.

xrange = [min(x):.01:max(x)]'; [ypred,yci] = predict(mdl,xrange,'Simultaneous',true);  figure() plot(x,y,'ko') % observed data hold on plot(xrange,ypred,'k','LineWidth',2) plot(xrange,yci','r--','LineWidth',1.5)

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 y, a continuación, ajuste el modelo Hougen-Watson a los datos de velocidad utilizando la función de ponderaciones de observación especificada.

a = 1; b = 1; weights = @(yhat) 1./((a + b*abs(yhat)).^2); mdl = fitnlm(X,y,@hougen,beta0,'Weights',weights);

Calcule el intervalo de predicción del 95% para una nueva observación con niveles de reactivo [100.100.100] utilizando la función de peso de observación.

[ypred,yci] = predict(mdl,[100,100,100],'Prediction','observation', ...     'Weights',weights)
ypred = 1.8149 
yci = 1×2

    1.5264    2.1033

Sugerencias

  • Para las predicciones con ruido añadido, utilice random.

  • Para obtener una sintaxis que puede ser más fácil de usar con modelos creados a partir de tablas o matrices de conjuntos de datos, intente feval.

Referencias

[1] Lane, T. P. and W. H. DuMouchel. “Simultaneous Confidence Intervals in Multiple Regression.” The American Statistician. Vol. 48, No. 4, 1994, pp. 315–321.

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