28 votos

Fijación de nudos en splines cúbicos naturales en R

Tengo datos con muchas características correlacionadas, y quiero empezar por reducir las características con una función de base suave, antes de ejecutar un LDA. Estoy tratando de utilizar splines cúbicos naturales en el splines con el paquete ns función. ¿Cómo asigno los nudos?

Este es el código básico de R:

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

Pero no tengo ni idea de cómo elegir los nudos en ns .

3 votos

¿pregunta sobre cómo especificar los nudos en $R$ (es decir, mediante argumentos a ns ) o ¿preguntas por estrategias para decidir dónde colocar los nudos?

1 votos

Véase Harrell, Regression Strategies 2015, para una buena discusión sobre dónde colocar los nodos (no importa, por lo que los cuantiles son tan buenos como cualquier otra cosa - las excepciones son si tiene razones sólidas para creer que el comportamiento cambia en algún momento) y el número de nodos (3, 4 o 5 dependiendo de N).

47voto

giulio Puntos 166

Cómo especificar los nudos en R

En ns genera un spline de regresión natural dado un vector de entrada. Los nudos pueden especificarse mediante un argumento de grados de libertad df que toma un número entero o mediante un argumento de nudos knots que toma un vector dando la colocación deseada de los nudos. Tenga en cuenta que en el código que ha escrito

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

usted no ha solicitado cinco nudos, sino que ha solicitado un solo (interior) nudo en ubicación 5.

Si utiliza el df los nudos interiores se seleccionarán en función de los cuantiles del vector x . Por ejemplo, si realiza la llamada

ns(x, df=5)

Entonces la base incluirá dos nudos límite y 4 nudos internos, situados en los cuantiles 20º, 40º, 60º y 80º de x respectivamente. Los nudos límite, por defecto, se colocan en los valores mínimo y máximo de x .

He aquí un ejemplo para especificar la ubicación de los nudos

x <- 0:100
ns(x, knots=c(20,35,50))

Si en su lugar llamara a ns(x, df=4) se obtendrían 3 nudos internos en las posiciones 25, 50 y 75, respectivamente.

También puede especificar si desea un término de intercepción. Normalmente no es especificado desde ns se suele utilizar junto con lm que incluye una intercepción implícitamente (a menos que se fuerce a no hacerlo). Si utiliza intercept=TRUE en su llamamiento a ns Asegúrese de saber por qué ya que si haces esto y luego llamas a lm ingenuamente, la matriz de diseño acabará teniendo un rango deficiente.

Estrategias para colocar los nudos

Los nodos se colocan normalmente en los cuantiles, como el comportamiento por defecto de ns . La intuición nos dice que si tenemos muchos datos agrupados muy juntos, es posible que queramos más nodos para modelizar las posibles no linealidades de esa región. Pero eso no significa que sea (a) la única opción ni (b) la mejor.

Evidentemente, se pueden hacer otras elecciones, que son específicas de cada ámbito. Observar los histogramas y las estimaciones de densidad de sus predictores puede proporcionar pistas sobre dónde se necesitan los nodos, a menos que haya alguna opción "canónica" dados sus datos.

En cuanto a la interpretación de las regresiones, me gustaría señalar que, si bien es cierto que se puede "jugar" con la colocación de los nodos, hay que tener en cuenta que se incurre en una penalización por selección del modelo que hay que evaluar cuidadosamente y ajustar las inferencias resultantes.

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