Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Modelos polinómicos

Sobre los modelos polinómicos

Los modelos polinómicos de las curvas vienen dados por

y=i=1n+1pixn+1i

donde n + 1 es el orden del polinomio, n es el grado del polinomio y 1 ≤ n ≤ 9. El orden indica el número de coeficientes que se van a ajustar y el grado indica la mayor potencia de la variable predictora.

En esta guía se describen los polinomios refiriéndose a su grado. Por ejemplo, un polinomio de tercer grado (cúbico) viene dado por

γ=p1x3+p2x2+p3x+p4

A menudo, se usan polinomios cuando se necesita un modelo empírico sencillo. Puede usar el modelo polinómico para una interpolación o una extrapolación, o para caracterizar datos usando un ajuste global. Por ejemplo, la conversión de temperatura a tensión para un termopar tipo J en el rango de temperaturas de 0 a 760o queda descrita con un polinomio de séptimo grado.

Nota

Si no necesita un ajuste paramétrico global y desea maximizar la flexibilidad del ajuste, los polinomios por tramos pueden ser la mejor opción. Consulte Ajuste no paramétrico para obtener más información.

Las ventajas principales del ajuste polinomial son una flexibilidad razonable en el caso de datos que no sean demasiado complejos y que se trata de un ajuste lineal, lo que simplifica el proceso. La desventaja principal es que los ajustes de grado elevado se vuelven inestables. Además, los polinomios de cualquier grado proporcionan un buen ajuste dentro del rango de los datos, pero pueden divergir muchísimo fuera de dicho rango. Por lo tanto, hay que tener cuidado al extrapolar usando los polinomios.

Si lleva a cabo un ajuste con polinomios de grado elevado, el procedimiento de ajuste usa los valores predictores como base de una matriz con valores muy elevados, lo que puede generar problemas de escala. Para gestionarlo, debería normalizar los datos (centrando la media en el cero y cambiando la escala de los datos para que la desviación estándar sea la unidad). Para normalizar los datos, marque la casilla de verificación Center and scale en la app Curve Fitter.

Ajustar modelos polinómicos de forma interactiva

  1. Abra la app Curve Fitter escribiendo curveFitter en la línea de comandos de MATLAB®. También puede hacer clic en Curve Fitter dentro del grupo Math, Statistics and Optimization de la pestaña Apps.

  2. En la app Curve Fitter, seleccione datos de curva o de superficie. En la pestaña Curve Fitter, en la sección Data, haga clic en Select Data. Seleccione las variables de datos en el cuadro de diálogo.

    • Si selecciona datos de curva (X data e Y data, o simplemente Y data contra un índice), la app Curve Fitter creará el ajuste de curva predeterminado, que es un ajuste Polynomial.

    • Si selecciona datos de superficie (X data, Y data y Z data), la app Curve Fitter creará el ajuste de superficie predeterminado, que es un ajuste Interpolant. Haga clic en la flecha de la sección Fit Type para abrir la galería y, luego, haga clic en Polynomial dentro del grupo Regression Models.

Para datos de curva, la app crea un ajuste Polynomial para X.

Fit Options pane for curve data polynomial fit

Para datos de superficie, la app crea un ajuste Polynomial para X e Y.

Fit Options pane for surface data polynomial fit

Puede especificar las siguientes opciones en el panel Fit Options:

  • El grado de las variables X e Y:

  • El método de ajuste lineal robusto de mínimos cuadrados que desea usar (Off, LAR o Bisquare). Para obtener más detalles, consulte el argumento nombre-valor Robust de la función fitoptions.

  • Establecer límites o excluir términos. Puede excluir cualquier término estableciendo sus límites en 0. Observe el panel Results para ver los términos del modelo, los valores de los coeficientes y las estadísticas de bondad de ajuste.

Sugerencia

Si las variables de datos tienen escalas muy diferentes, marque y desmarque la casilla de verificación Center and scale para ver la diferencia de ajuste. La app mostrará mensajes en el panel Results cuando escalar los datos pueda mejorar el ajuste.

Para ver un ejemplo en el que se comparan varios ajustes polinomiales, consulte Compare Fits in Curve Fitter App.

Ajustar polinomios usando la función fit

Este ejemplo muestra cómo usar la función fit para ajustar polinomios a los datos. Los sucesivos pasos permiten ajustar y representar curvas polinómicas y una superficie, especificar opciones de ajuste, obtener valores estadísticos de bondad de ajuste, calcular predicciones y mostrar intervalos de confianza.

El modelo de biblioteca de polinomios es un argumento de entrada para las funciones fit y fittype. Especifique el tipo de modelo poly seguido del grado de x (hasta 9) o de x e y (hasta 5). Por ejemplo, especifique una curva cuadrática con 'poly2' o una superficie cúbica con 'poly33'.

Crear y representar una curva polinomial cuadrática

Cargue algunos datos y ajuste un polinomio cuadrático. Especifique un polinomio cuadrático (o de segundo grado) con la cadena 'poly2'.

load census;
fitpoly2=fit(cdate,pop,'poly2')
% Plot the fit with the plot method.
plot(fitpoly2,cdate,pop)
% Move the legend to the top left corner.
legend('Location','NorthWest' );
fitpoly2 = 

     Linear model Poly2:
     fitpoly2(x) = p1*x^2 + p2*x + p3
     Coefficients (with 95% confidence bounds):
       p1 =    0.006541  (0.006124, 0.006958)
       p2 =      -23.51  (-25.09, -21.93)
       p3 =   2.113e+04  (1.964e+04, 2.262e+04)

Crear una curva cúbica

Ajuste un polinomio cúbico 'poly3'.

fitpoly3=fit(cdate,pop,'poly3')
plot(fitpoly3,cdate,pop)
Warning: Equation is badly conditioned. Remove repeated data points or try
centering and scaling. 

fitpoly3 = 

     Linear model Poly3:
     fitpoly3(x) = p1*x^3 + p2*x^2 + p3*x + p4
     Coefficients (with 95% confidence bounds):
       p1 =   3.855e-06  (-4.078e-06, 1.179e-05)
       p2 =    -0.01532  (-0.06031, 0.02967)
       p3 =       17.78  (-67.2, 102.8)
       p4 =       -4852  (-5.834e+04, 4.863e+04)

Especificar las opciones de ajuste

El ajuste cúbico advierte que la ecuación está mal condicionada, por lo que debería intentar centrar y cambiar la escala de los datos mediante la opción 'Normalize'. Ajuste el polinomio cúbico con las opciones de centrado y cambio de escala y de ajuste robusto. Activar el ajuste robusto en 'on' es un atajo equivalente a 'Bisquare', el método predeterminado para el método de ajuste lineal robusto de mínimos cuadrados.

fit3=fit(cdate, pop,'poly3','Normalize','on','Robust','on')
plot(fit3,cdate,pop)
fit3 = 

     Linear model Poly3:
     fit3(x) = p1*x^3 + p2*x^2 + p3*x + p4
       where x is normalized by mean 1890 and std 62.05
     Coefficients (with 95% confidence bounds):
       p1 =     -0.4619  (-1.895, 0.9707)
       p2 =       25.01  (23.79, 26.22)
       p3 =       77.03  (74.37, 79.7)
       p4 =       62.81  (61.26, 64.37)

Para averiguar qué parámetros puede establecer para el modelo de biblioteca 'poly3', use la función fitoptions.

fitoptions poly3
ans = 

  llsqoptions with properties:

        Lower: []
        Upper: []
       Robust: 'Off'
    Normalize: 'off'
      Exclude: []
      Weights: []
       Method: 'LinearLeastSquares'

Obtener valores estadísticos de bondad de ajuste

Especifique el argumento de salida 'gof' para obtener los valores estadísticos de bondad de ajuste para el ajuste polinomial cúbico.

[fit4, gof]=fit(cdate, pop,'poly3','Normalize','on');
gof
gof = 

  struct with fields:

           sse: 149.7687
       rsquare: 0.9988
           dfe: 17
    adjrsquare: 0.9986
          rmse: 2.9682

Representar los valores residuales para evaluar el ajuste

Para representar los valores residuales, elija 'residuals' como tipo de gráfica en el método de representación.

plot(fit4,cdate, pop,'residuals');

Estudiar un ajuste más allá del rango de datos

De forma predeterminada, el ajuste se representa sobre el rango de datos. Para representar un ajuste sobre un rango distinto, establezca los límites del eje x antes de representar el ajuste. Por ejemplo, para ver los valores del ajuste extrapolados, establezca el límite superior del eje x en 2050.

plot( cdate, pop, 'o' );
xlim( [1900, 2050] );
hold on
plot( fit4 );
hold off

Representar los límites de predicción

Para representar los límites de predicción, use 'predobs' o 'predfun' como tipo de gráfica.

plot(fit4,cdate,pop,'predobs')

Represente los límites de predicción del polinomio cúbico hasta el año 2050.

plot( cdate, pop, 'o' );
xlim( [1900, 2050] )
hold on
plot( fit4, 'predobs' );
hold off

Obtener límites de confianza en puntos de consulta nuevos

Evalúe el ajuste con algunos puntos de consulta nuevos.

cdateFuture = (2000:10:2020).';
popFuture = fit4( cdateFuture )
popFuture =

  276.9632
  305.4420
  335.5066

Calcule los límites de confianza del 95% respecto a la predicción de población futura mediante el método predint.

ci = predint( fit4, cdateFuture, 0.95, 'observation' )
ci =

  267.8589  286.0674
  294.3070  316.5770
  321.5924  349.4208

Represente la predicción de población futura con intervalos de confianza frente al ajuste y los datos.

plot(cdate, pop, 'o');
xlim([1900, 2040])
hold on
plot(fit4)
h = errorbar(cdateFuture,popFuture,popFuture-ci(:,1),ci(:,2)-popFuture,'.');
hold off
legend('cdate v pop','poly3','prediction','Location','NorthWest')

Ajustar y representar una superficie polinomial

Cargue algunos datos de superficie y ajuste un polinomio de cuarto grado en x e y.

load franke;
fitsurface=fit([x,y],z, 'poly44','Normalize','on')
plot(fitsurface, [x,y],z)
     Linear model Poly44:
     fitsurface(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p30*x^3 
                    + p21*x^2*y + p12*x*y^2 + p03*y^3 + p40*x^4 + p31*x^3*y 
                    + p22*x^2*y^2 + p13*x*y^3 + p04*y^4
       where x is normalized by mean 1982 and std 868.6
       and where y is normalized by mean 0.4972 and std 0.2897
     Coefficients (with 95% confidence bounds):
       p00 =      0.3471  (0.3033, 0.3909)
       p10 =     -0.1502  (-0.1935, -0.107)
       p01 =     -0.4203  (-0.4637, -0.377)
       p20 =      0.2165  (0.1514, 0.2815)
       p11 =      0.1717  (0.1175, 0.2259)
       p02 =     0.03189  (-0.03351, 0.09729)
       p30 =     0.02778  (0.00749, 0.04806)
       p21 =     0.01501  (-0.002807, 0.03283)
       p12 =    -0.03659  (-0.05439, -0.01879)
       p03 =      0.1184  (0.09812, 0.1387)
       p40 =    -0.07661  (-0.09984, -0.05338)
       p31 =    -0.02487  (-0.04512, -0.004624)
       p22 =   0.0007464  (-0.01948, 0.02098)
       p13 =    -0.02962  (-0.04987, -0.009366)
       p04 =    -0.02399  (-0.0474, -0.0005797)

Opciones de ajuste de modelos polinómicos

Todos los métodos de ajuste tienen las propiedades predeterminadas Normalize, Exclude, Weights y Method. Para ver un ejemplo, consulte Especificar opciones de ajuste en la línea de comandos.

Los modelos polinómicos aplican a la propiedad Method el valor LinearLeastSquares, así como las demás propiedades de opciones de ajuste que muestra la siguiente tabla. Para obtener más información sobre todas las opciones de ajuste, consulte la página de referencia de fitoptions.

Propiedad

Descripción

Robust

Especifica el método de ajuste lineal robusto de mínimos cuadrados que desea usar. Los valores posibles son 'on', 'off', 'LAR' o 'Bisquare'. El valor predeterminado es 'off'.
'LAR' especifica el método de mínimo residual absoluto y 'Bisquare' especifica el método de ponderaciones bicuadradas. 'on' equivale a 'Bisquare', el método predeterminado.

Lower

Un vector de límites inferiores de los coeficientes que se van a ajustar. El valor predeterminado es un vector vacío, que indica que el ajuste no está restringido por límites inferiores. Si se especifican los límites, la longitud del vector debe ser igual al número de coeficientes. -Inf permite especificar límites inferiores individuales ilimitados.

Upper

Un vector de límites superiores de los coeficientes que se van a ajustar. El valor predeterminado es un vector vacío, que indica que el ajuste no está restringido por límites superiores. Si se especifican los límites, la longitud del vector debe ser igual al número de coeficientes. Los límites superiores individuales ilimitados se pueden especificar con Inf

Definir términos polinómicos para los ajustes polinomiales de superficie

Puede controlar los términos que se van a incluir en el modelo polinómico de superficie especificando los grados de las entradas x e y. Si i es el grado en x y j es el grado en y, el grado total del polinomio es el máximo de i y j. El grado de x en cada término será menor o igual que i, y el grado de y en cada término será menor o igual que j. El máximo tanto para i como para j es cinco.

Por ejemplo:

poly21  Z = p00 + p10*x + p01*y + p20*x^2 + p11*x*y
poly13  Z = p00 + p10*x + p01*y + p11*x*y + p02*y^2 
                      + p12*x*y^2 + p03*y^3
poly55  Z = p00 + p10*x + p01*y +...+ p14*x*y^4 
                      + p05*y^5

Por ejemplo, si especifica un grado en x de 3 y un grado en y de 2, el nombre del modelo será poly32. Los términos del modelo siguen la forma de la siguiente tabla.

Grado del término012
01yy2
1xxyxy2
2x2x2yN/A
3x3N/AN/A

El grado total del polinomio no puede superar el máximo de i y j. En este ejemplo, los términos como x3y y x2y2 se excluyen porque sus grados suman más de 3. En ambos casos, el grado total es 4.

Consulte también

Apps

Funciones

Temas relacionados