Modelos polinómicos
Sobre los modelos polinómicos
Los modelos polinómicos de las curvas vienen dados por
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
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
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.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.
Para datos de superficie, la app crea un ajuste Polynomial para X e Y.
Puede especificar las siguientes opciones en el panel Fit Options:
El grado de las variables X e Y:
Para datos de curva, el grado de X puede ser hasta
9
.Para datos de superficie, el grado de X e Y puede ser hasta
5
. El grado del ajuste Polynomial es el valor máximo de los grados de X e Y. Para obtener más información, consulte Definir términos polinómicos para los ajustes polinomiales de superficie.
El método de ajuste lineal robusto de mínimos cuadrados que desea usar (
Off
,LAR
oBisquare
). Para obtener más detalles, consulte el argumento nombre-valorRobust
de la funciónfitoptions
.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 = 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 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 |
---|---|
| Especifica el método de ajuste lineal robusto de mínimos cuadrados que desea usar. Los valores posibles son |
| 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. |
| 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 |
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érmino | 0 | 1 | 2 |
---|---|---|---|
0 | 1 | y | y2 |
1 | x | xy | xy2 |
2 | x2 | x2y | N/A |
3 | x3 | N/A | N/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
fit
|fittype
|fitoptions