7 votos

¿Qué es la dimensión de base en splines?

Desde el paquete mgcv, la función gam(para ajuste de modelo aditivo generalizado) utiliza el parámetro 'k' que es la dimensión de la base.

¿Puede alguien explicarme qué significa dimensión de función base en spline en términos sencillos?

3voto

usεr11852 Puntos 5514

La forma más fácil de pensar en una base es como los bloques de construcción o el conjunto de prototipos utilizados para crear algo más complejo. Así, cuando establecemos $k$ a un número bajo forzamos indirectamente una forma general relativamente simple.

Dejando de lado por un momento la noción de splines de regresión de placa de cosas, una de las bases más triviales que utilizamos son las bases polinómicas. Suponiendo que nuestro predictor $x$ abarca desde $[-1,1]$ si utilizamos una base polinómica de grado 4 tenemos algo como lo siguiente:

x = seq(-1,1, by=0.01)
matplot(x, poly(x, degree = 4, raw = TRUE), t='l', lwd = 3, 
        lty=1, panel.first=grid()); 
legend("bottomright",col = 1:4, lwd=3, legend = paste0("Degree:", 1:4))

enter image description here

Lo que significa que podemos permitir que el comportamiento de nuestro predictor $x$ para variar según cualquier combinación lineal válida de estas cuatro funciones de base. Estupendo, ¿verdad? Pero quizá queramos asegurarnos de tener un comportamiento periódico. Digamos que nuestro $x$ representa el día del año de algo que claramente es periódico. La base anterior mostrada, la polinómica, no está constreñida a "empezar y acabar" con el mismo valor. Lo bueno es que cierto gigante de las matemáticas llamado Joseph Fourier convirtió el concepto de representar una función periódica (o señal) en la suma ponderada de senos y cosenos en un campo propio (denominado Análisis de Fourier ). Lo importante aquí es que podemos representar una señal periódica mediante una serie de senos y cosenos y estar seguros de que cualquier combinación de ellos será un periodo.

x = seq(1,365, by=1)
plot(  fda::create.fourier.basis(range(x), nbasis = 3), lwd= 3, lty=1)
grid(ny = 12)
legend("bottomright",col = 1:4, lwd=3, legend = paste0("N-th basis:", 1:3))

enter image description here

Y aquí podemos ver fácilmente que todas las bases mostradas empezarán y terminarán en el mismo valor. Esto nos lleva a $k$ . Aunque la base mostrada es estupenda en términos de periodicidad, no podemos representar una señal/función que oscile más de dos veces en este periodo anual. El "prototipo negro" permitirá mover la línea de base de la señal hacia arriba o hacia abajo, el "prototipo verde" permitirá tener un patrón de oscilación lento de un año de duración y el "prototipo rojo" permitirá tener un patrón de oscilación de contrapeso de seis meses. Pero, ¿y si tenemos una periodicidad mensual? Utilizando esta base propuesta con sólo tres funciones básicas no podemos modelizarla. Así de sencillo. Si aumentamos $k$ podemos tener oscilaciones rápidas, es decir, modelar cambios más frecuentes. Por ejemplo $k = 7$ nos permitiría utilizar una colección más amplia de bloques de construcción como ésta:

enter image description here

(Tenga en cuenta que esto es efectivamente lo que s cuando definimos el tipo de base como un spline cíclico s(..., bs = 'cc') .)

OK, así que finalmente de vuelta a la spline de suavizado de placa delgada que es lo que mgcv::gam utiliza por defecto. El spline de suavizado de placa fina estima una función de suavizado $f$ que minimiza una función de mínimos cuadrados penalizados $g$ :

$g(x,y,\lambda) = \sum^N_{i=1} (y_i - f(x_i)^2) + \lambda J(f)$

donde $x$ es nuestra variable explicativa, $y$ es nuestra respuesta, $\lambda$ es nuestro parámetro de penalización, $N$ es el número de puntos de datos disponibles y $J$ es una función que penaliza la complejidad de la función $f$ es. Ahora, sin entrar en detalles sangrientos, $k$ controla el número de bloques de construcción para $f$ y, por tanto, es otra forma de hacer que el ajuste global sea más sencillo/menos complejo. El bien llamado artículo de 2003 " Splines de regresión de placas delgadas "por S. Wood (el principal desarrollador de mgcv ), repasa la mecánica exacta de cómo un rango bajo (es decir, no muy grande $k$ ) pueden utilizarse como suavizadores. Específicamente para mgcv::gam como ha mencionado Gavin (+1 si aún no lo ha hecho), $k$ es un límite superior y no necesariamente lo que se utilizará.

En conclusión, la dimensión de la función base significa el número de bloques de construcción que podemos utilizar. Un número menor nos limita a patrones variacionales más simples, mientras que un número mayor nos permite tener en cuenta detalles más precisos. Y esta es la principal carga metodológica que la estimación GAM trata de aliviar; queremos permitir la cantidad correcta de complejidad; demasiado poco (demasiado pequeño $k$ ) y nos ajustamos mal perdiendo información importante, demasiado alto (demasiado alto $k$ ) y nos sobreajustamos encontrando patrones que en realidad no existen.

1voto

David J. Sokol Puntos 1730

La dimensión de la base es el número de funciones de la base.

Típico, k refleja cuántas funciones base se crean inicialmente, pero las restricciones de identificabilidad pueden reducir el número de funciones base por liso que se utilizan realmente para ajustar el modelo.

k establece algún límite superior en el número de funciones base, pero normalmente algunas de las funciones base se eliminarán cuando se aplique la restricción de identificabilidad. Por ejemplo, por defecto k con el tipo de suavizado por defecto (Thin plate regression splines) es 10 para un suavizado univariante. Sin embargo, como una de esas funciones base es una función plana, el modelo se vuelve inidentificable cuando hay un intercepto en el modelo; esta función horizontal es lo mismo que el intercepto del modelo, por lo que se podría añadir cualquier valor al coef para el intercepto y restar el mismo valor del coef para la función base horizontal y obtener el mismo ajuste pero a través de un modelo diferente (los coefs son diferentes). Como tal, la función de base plana/horizontal se elimina de la base, lo que resulta en 9 funciones de base utilizadas para ajustar el modelo.

0 votos

¿Sería posible explicar la función de base. Entiendo la base de un vector, pero no pude entender en este contexto.

2 votos

Buena respuesta (+1) Me gusta que hayas llamado la atención sobre la identificabilidad de las funciones de base utilizadas. La gente (yo incluido) suele olvidarse de mencionarlo. (Prueba: yo no lo mencioné en mi respuesta).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X