Tengo algunos datos que suavizo utilizando loess
. Me gustaría encontrar los puntos de inflexión de la línea suavizada. ¿Es esto posible? Estoy seguro de que alguien ha hecho un método elegante para resolver esto ... Quiero decir ... después de todo, es R!
Me parece bien que se cambie la función de suavizado que uso. Acabo de utilizar loess
porque eso es lo que he usado en el pasado. Pero cualquier función de suavizado está bien. Soy consciente de que los puntos de inflexión dependerán de la función de suavizado que utilice. Estoy de acuerdo con eso. Me gustaría empezar con cualquier función de suavizado que pueda ayudar a escupir los puntos de inflexión.
Este es el código que utilizo:
x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)
3 votos
Tal vez quiera echar un vistazo a análisis del punto de cambio .
0 votos
He encontrado esta línea de código muy útil: infl <- c(FALSE, diff(diff(out)>0)!=0) Pero este código encuentra todos los puntos de inflexión independientemente de que se doble hacia arriba o hacia abajo. ¿Cómo puedo saber qué puntos giran hacia arriba y cuáles hacia abajo en una serie temporal? Por ejemplo, trazar y colorear en verde los puntos de giro hacia arriba y en rojo los que giran hacia abajo.