Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

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

En la app Curve Fitting, seleccione Smoothing Spline de la lista de tipos de modelo.

Puede especificar las siguientes opciones:

  • Para realizar 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 realizar un ajuste que se aproxime más a los datos, haga clic en el botón Rougher > hasta que esté satisfecho con la gráfica.

  • También puede especificar cualquier valor entre 0 y 1 para el parámetro de suavizado. 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).

  • Haga clic en Default para volver al valor inicial. La toolbox intenta seleccionar un valor predeterminado apropiado para sus datos. Consulte Sobre splines de suavizado.

Por ejemplo:

  1. Cargue los datos en Sobre splines de suavizado escribiendo:

    load carbon12alpha

  2. En la app Curve Fitting, seleccione angle para X data y counts para Y data.

  3. Seleccione el tipo de ajuste Smoothing Spline.

  4. Pruebe los valores de parámetro de suavizado 1, 0.95 y el valor predeterminado (0.99).

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. The axes contains 2 objects of type line. 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. The axes contains 2 objects of type line. 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 de suavizado cúbico csaps o las funciones de spline que permiten un mayor control sobre lo que puede crear. Consulte About Splines in Curve Fitting Toolbox.

Ejemplo: Ajuste no paramétrico con splines cúbicos y de suavizado

Este ejemplo ajusta algunos datos con una interpolación por splines cúbicos y varios splines de suavizado.

  1. Cree las variables en su espacio de trabajo:

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

  2. Abra la app Curve Fitting escribiendo:

    cftool

  3. Seleccione x e y de las listas X data e Y data.

    La app Curve Fitting ajusta y representa los datos.

  4. Ajuste los datos con una interpolación por splines cúbicos seleccionando el tipo de ajuste Interpolant y el Method Cubic.

    La app Curve Fitting ajusta y representa la interpolación por splines cúbicos.

  5. Seleccione el Fit name cubicsp.

  6. Consulte el panel Results. Las estadísticas de bondad de ajuste como RMSE no se definen para las interpolaciones (se muestran como NaN).

    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 (por ejemplo, indique fitname.p). Para obtener información sobre la estructura de coeficientes, consulte Constructing and Working with ppform Splines.

  7. Cree otro ajuste para comparar. Haga clic en su ajuste con el botón secundario en la Table of Fits y seleccione Duplicate ‘cubicsp’.

  8. Ajuste los datos con un spline de suavizado seleccionando Smoothing Spline.

    El nivel de suavidad viene dado por el Parámetro de suavizado. El valor del parámetro de suavizado depende del conjunto de datos y la toolbox lo calcula de forma automática.

    Para este conjunto de datos, el parámetro de suavizado predeterminado 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.

  9. Nombre el ajuste de parámetro de suavizado predeterminado Smooth1. Si no le gusta el nivel de suavizado producido por el parámetro de suavizado predeterminado, puede especificar cualquier valor entre 0 y 1. 0 produce un ajuste polinomial lineal, mientras que 1 produce un ajuste polinomial cúbico por tramos que pasa por todos los puntos de datos.

    Aquí se muestran los resultados numéricos del ajuste de spline de suavizado.

  10. Con el objetivo de realizar una comparación, cree otro ajuste de spline de suavizado. Haga clic en su ajuste con el botón secundario en la Table of Fits y seleccione Duplicate ‘smooth1’. Cambie el parámetro de suavizado a 0.5 y nombre el ajuste Smooth2.

  11. Compare las gráficas de sus tres ajustes. Explore el comportamiento del ajuste más allá de los límites de datos aumentando la escala de abscisas predeterminada. Puede cambiar los límites del eje con el elemento del menú Tools > Axes Limit Control.

Nota

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

Tenga en cuenta que el parámetro de suavizado predeterminado produce una curva que es más suave que la interpolación, pero es un buen ajuste para los datos. En este caso, reducir el parámetro de suavizado del valor predeterminado produce una curva que es aún más suave, pero no es un buen ajuste para los datos. A medida que el parámetro de suavizado aumenta más allá de los valores predeterminados, la curva asociada se acerca a la interpolación por splines cúbicos. El spline cúbico y el spline de suavizado predeterminado son similares para puntos interiores, pero divergen en los extremos de línea.

Consulte también

Temas relacionados