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
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
Cargue los datos en la línea de comandos de MATLAB®.
load carbon12alpha
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.
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 ycounts
como valor de Y data. Para obtener más detalles, consulte Seleccionar los datos que se van a ajustar en la app Curve Fitter.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.
En el panel Fit Options, puede especificar el valor de Smoothing Parameter.
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 en1
y0.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)
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)
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 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.
Cree los datos de
x
ey
.x = (4*pi)*[0 1 rand(1,25)]; y = sin(x) + .2*(rand(size(x))-.5);
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.
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 ey
como valor de Y data.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.
En el panel Fit Options, especifique Method como
Cubic spline
. La app Curve Fitter ajusta y representa la interpolación por splines cúbicos.Modifique el nombre del ajuste. En el panel Table Of Fits, haga doble clic en el valor de Fit Name e introduzca
CubicSplineFit
.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.
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 coeficientep
si exporta su ajuste al espacio de trabajo introduciendoCubicSplineFit.p
. Para obtener más información sobre la estructura del coeficiente, consulte Constructing and Working with ppform Splines.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 aSmoothingSplineFit
.En la pestaña Curve Fitter, en la sección Fit Type, seleccione un ajuste
Smoothing Spline
.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.
Consulte el panel Results para ver los resultados numéricos del ajuste de spline de suavizado.
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.