Main Content

Splines de suavizado

Sobre splines de suavizado

Si sus datos son ruidosos puede que le interese ajustarlos con un spline de suavizado. También puede utilizar uno de los métodos de suavizado descritos en Filtrar y suavizar datos.

El spline de suavizado s se construye para el parámetro de suavizado p especificado y las ponderaciones especificadas wi. El spline de suavizado minimiza

piwi(yis(xi))2+(1p)(d2sdx2)2dx

Si las ponderaciones no se especifican, se da por supuesto que son 1 para todos los puntos de datos.

p se define entre 0 y 1. p = 0 produce un ajuste de línea recta de mínimos cuadrados a los datos, mientras que p = 1 produce una interpolación por splines cúbicos. Si no especifica el parámetro de suavizado, se selecciona de forma automática en el "rango interesante". El rango interesante de p suele estar cerca de 1/(1+h3/6) donde h es el espaciado promedio de los puntos de datos, y suele ser mucho menor que el rango permitido del parámetro. Dado que los splines de suavizado tienen un parámetro de suavizado asociado, podría considerar que estos ajustes son paramétricos. Sin embargo, los splines de suavizado también son polinomios por tramos como los splines cúbicos o las interpolaciones que conservan la forma, y en esta guía se consideran un tipo de ajuste no paramétrico.

Nota

El algoritmo de spline de suavizado está basado en la función csaps.

Los datos de reacción nuclear del archivo carbon12alpha.mat se muestran aquí con tres ajustes de splines de suavizado. El parámetro de suavizado predeterminado (p = 0,99) produce la curva más suave. La curva del spline cúbico (p = 1) pasa por todos los puntos de datos, pero no es tan suave. La tercera curva (p = 0,95) pasa lejos de los datos por un amplio margen y muestra lo pequeño que puede ser el "rango interesante" de p.

Seleccionar un ajuste de spline de suavizado de forma interactiva

  1. Cargue los datos en la línea de comandos de MATLAB®.

    load carbon12alpha
  2. Abra la app Curve Fitter.

    curveFitter

    También puede hacer clic en Curve Fitter dentro del grupo Math, Statistics and Optimization de la pestaña Apps.

  3. En la sección Data de la pestaña Curve Fitter, haga clic en Select Data. En el cuadro de diálogo Select Fitting Data, seleccione angle como valor de X data y counts como valor de Y data. Para obtener más detalles, consulte Seleccionar los datos que se desea ajustar en la app Curve Fitter.

  4. En la sección Fit Type de la pestaña Curve Fitter, haga clic en la flecha para abrir la galería y, luego, haga clic en Smoothing Spline dentro del grupo Smoothing.

  5. En el panel Fit Options, puede especificar el valor de Smoothing Parameter.

    Fit Options pane for smoothing spline fit

    El valor predeterminado de Smoothing Parameter está cerca de 1. La app intenta seleccionar un valor predeterminado apropiado para sus datos. Puede cambiar el valor de Smoothing Parameter mediante una de estas opciones:

    • Para crear un ajuste que se aleje más de los datos, haga clic en el botón < Smoother repetidamente hasta que la gráfica le muestre la suavidad deseada.

    • Para crear un ajuste que se aproxime más a los datos, haga clic en el botón Rougher > hasta que la gráfica esté a su gusto.

    • También puede especificar cualquier valor entre 0 y 1 para el parámetro de suavizado. El valor 0 produce un ajuste polinomial lineal (un ajuste de línea recta de mínimos cuadrados para los datos), mientras que 1 produce un ajuste polinomial cúbico por tramos que pasa por todos los puntos de datos (una interpolación por splines cúbicos). Para el conjunto de datos carbon12alpha, establezca los valores de Smoothing Parameter en 1 y 0.95.

    • Haga clic en Default para volver al valor inicial.

Ajustar modelos de spline de suavizado con la función fit

Este ejemplo muestra cómo utilizar la función fit para ajustar un modelo de spline de suavizado a los datos.

Ajustar un modelo de spline de suavizado

Cargue datos y ajuste un modelo de spline de suavizado especificando 'smoothingspline' al llamar a la función fit.

load enso
f = fit(month,pressure,'smoothingspline');
plot(f,month,pressure)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

Ver el parámetro de suavizado calculado

Cree el modelo de nuevo y utilice el tercer argumento de salida para ver el parámetro de suavizado calculado. El parámetro de suavizado es el valor p de la estructura out. El valor predeterminado depende del conjunto de datos.

[f,gof,out] = fit(month,pressure,'smoothingspline');

out.p
ans = 0.9000

Especificar un parámetro de suavizado con 'SmoothingParam'

Especifique el parámetro de suavizado para un nuevo ajuste con la opción 'SmoothingParam'. Su valor debe estar entre 0 y 1.

f = fit(month,pressure,'smoothingspline','SmoothingParam',0.07);
plot(f,month,pressure)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

Especificar un parámetro de suavizado con fitoptions

También puede utilizar fitoptions para especificar un parámetro de suavizado antes del ajuste.

options = fitoptions('Method','Smooth','SmoothingParam',0.07);
[f,gof,out] = fit(month,pressure,'smooth',options);
out.p
ans = 0.0700

Como alternativa a 'smoothingspline', puede utilizar la función de spline cúbico de suavizado csaps o las funciones de spline que permiten un mayor control sobre lo que puede crear. Consulte Introducción al ajuste de splines.

Comparar ajustes de splines cúbicos y de suavizado utilizando Curve Fitter

En este ejemplo se compara un ajuste de interpolación por splines cúbicos y un ajuste de spline de suavizado utilizando la app Curve Fitter.

  1. Cree los datos de x e y.

    x = (4*pi)*[0 1 rand(1,25)]; 
    y = sin(x) + .2*(rand(size(x))-.5);
    

  2. Abra la app Curve Fitter.

    curveFitter

    También puede hacer clic en Curve Fitter dentro del grupo Math, Statistics and Optimization de la pestaña Apps.

  3. En la sección Data de la pestaña Curve Fitter, haga clic en Select Data. En el cuadro de diálogo Select Fitting Data, seleccione x como valor de X data e y como valor de Y data.

  4. En la sección Fit Type de la pestaña Curve Fitter, haga clic en la flecha para abrir la galería y, luego, haga clic en Interpolant dentro del grupo Interpolation.

  5. En el panel Fit Options, especifique Interpolation Method como Cubic spline. La app Curve Fitter ajusta y representa la interpolación por splines cúbicos.

    Fit Options pane for cubic spline interpolant fit

  6. Modifique el nombre del ajuste. En el panel Table Of Fits, haga doble clic en el valor de Fit Name e introduzca CubicSplineFit.

  7. Consulte el panel Results. Algunas estadísticas de bondad de ajuste, como RMSE, no se definen para los ajustes Interpolant y su valor es NaN.

    Results pane for cubic spline interpolant fit

    Una interpolación de spline cúbico se define como un polinomio por tramos que resulta en una estructura de coeficientes (p). El número de "piezas" de la estructura es una menos que el número de puntos de datos ajustados, y el número de coeficientes para cada pieza es cuatro porque el grado del polinomio es tres. Puede analizar la estructura del coeficiente p si exporta su ajuste al espacio de trabajo introduciendo CubicSplineFit.p. Para obtener más información sobre la estructura del coeficiente, consulte Constructing and Working with ppform Splines.

  8. Cree otro ajuste para comparar. Haga clic con el botón secundario en el ajuste CubicSplineFit de la pestaña Table Of Fits y seleccione Duplicate "CubicSplineFit". Modifique el nombre del ajuste nuevo a SmoothingSplineFit.

  9. En la pestaña Curve Fitter, en la sección Fit Type, seleccione un ajuste Smoothing Spline.

    Fit Options pane for smoothing spline fit

    En el panel Fit Options, el Smoothing Parameter define el nivel de suavidad. La app calcula el valor de Smoothing Parameter según el conjunto de datos. Para este conjunto de datos, el valor predeterminado de Smoothing Parameter está cerca de 1, lo que indica que el spline de suavizado es casi cúbico y está muy cerca de pasar por cada punto de datos.

    Puede cambiar el nivel de suavizado especificando Smoothing Parameter como escalar no negativo en el rango [0 a 1]. Especifique Smoothing Parameter como 0 para crear un ajuste polinomial lineal. Especifique Smoothing Parameter como 1 para crear un ajuste polinomial cúbico por tramos que pase por todos los puntos de datos.

  10. Consulte el panel Results para ver los resultados numéricos del ajuste de spline de suavizado.

    Results pane for smoothing spline fit

  11. Compare las gráficas que ha creado de ambos ajustes (ajuste de interpolación por splines cúbicos y ajuste de spline de suavizado). Ambos ajustes son similares para puntos interiores, pero divergen en los extremos.

Nota

Sus resultados dependen de puntos de partida aleatorios y podrían variar con respecto a los que se describen.

Consulte también

Apps

Funciones

Temas relacionados