Main Content

La traducción de esta página está obsoleta. 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 Nonparametric Fitting 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 Fitting.

Ajustar modelos polinómicos de forma interactiva

  1. Abra la app Curve Fitting escribiendo cftool. También puede hacer clic en Curve Fitting en la pestaña de aplicaciones.

  2. En la app Curve Fitting, seleccione datos de curva o de superficie.

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

    • Si selecciona datos de superficie (X data, Y data y Z data), la app Curve Fitting creará el ajuste de superficie predeterminado Interpolant. Cambie el tipo de modelo de Interpolant a Polynomial.

En el caso de curvas, el modelo Polynomial ajusta un polinomio a x.

En el caso de superficies, el modelo Polynomial ajusta un polinomio a x e y.

Puede especificar las siguientes opciones:

  • El grado de las entradas 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 información, consulte Robust en la página de referencia de fitoptions.

  • Para establecer límites o excluir términos, haga clic en Fit Options. 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 los valores estadísticos de bondad de ajuste.

Sugerencia

Si las variables de entrada tienen escalas muy diferentes, marque y desmarque la casilla de verificación Center and scale para ver la diferencia de ajuste. Los mensajes en el panel Results le informarán cuando un cambio de escala pueda mejorar el ajuste.

Para ver un ejemplo en el que se comparan varios ajustes polinomiales, consulte Compare Fits in Curve Fitting 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 =

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

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 Specifying Fit Options at the Command Line.

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á limitado 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á limitado por límites superiores. Si se especifican los límites, la longitud del vector debe ser igual al número de coeficientes. Inf permite especificar límites superiores individuales ilimitados.

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

| | |

Temas relacionados