Eu tenho alguns dados que eu uso suave loess
. Eu gostaria de encontrar os pontos de inflexão da linha suavizada. Isso é possível? Tenho certeza que alguém criou um método sofisticado para resolver isso ... quero dizer ... afinal, é R!
Estou bem com a alteração da função de suavização que uso. Eu apenas usei loess
porque era isso que eu era no passado. Mas qualquer função de suavização está correta. Percebo que os pontos de inflexão dependerão da função de suavização que uso. Eu estou bem com isso. Eu gostaria de começar apenas com qualquer função de suavização que possa ajudar a cuspir os pontos de inflexão.
Aqui está o código que eu uso:
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)
Respostas:
Da perspectiva de usar R para encontrar as inflexões na curva suavizada, você só precisa encontrar os lugares nos valores y suavizados onde a alteração em y muda de sinal.
Em seguida, você pode adicionar pontos ao gráfico onde essas inflexões ocorrem.
Da perspectiva de encontrar pontos de inflexão estatisticamente significativos, concordo com o @nico que você deve analisar a análise de ponto de mudança, às vezes também chamada de regressão segmentada.
fonte
Existem problemas em vários níveis aqui.
Primeiro, o loess é um pouco mais suave e há muitos, muitos por onde escolher. Os otimistas argumentam que praticamente qualquer suavidade razoável encontrará um padrão real e que praticamente todas as suavidades razoáveis concordam com padrões reais. Os pessimistas argumentam que esse é o problema e que "mães razoáveis" e "padrões reais" são aqui definidos em termos um do outro. Ao ponto, por que perder e por que você acha que é uma boa escolha aqui? A escolha não é apenas de uma única suavização ou de uma implementação única de uma suavização (nem tudo o que se passa com o nome de loess ou lowess é idêntico no software), mas também de um único grau de suavização (mesmo que isso seja escolhido pelo rotina para você). Você menciona esse ponto, mas isso não está sendo abordado.
Mais especificamente, como mostra o seu exemplo de brinquedo, recursos básicos como pontos de virada podem não ser facilmente preservados pelo loess (para não destacar o loess). Seu primeiro mínimo local desaparece e seu segundo mínimo local é deslocado pela suavidade específica que você mostra. Inflexões definidas por zeros da segunda derivada, em vez da primeira, podem ser ainda mais volúveis.
fonte
Existem várias ótimas abordagens para esse problema. Alguns incluem. (1) - pacote do ponto de mudança (2) - pacote segmentado. Mas você precisa escolher o número de pontos de mudança. (3) MARS conforme implementado no pacote -terro-
Dependendo da troca de desvio / variação, tudo fornecerá informações ligeiramente diferentes. -segmentado- vale a pena dar uma olhada. Um número diferente de modelos de pontos de mudança pode ser comparado com o AIC / BIC
fonte
Talvez você possa usar a biblioteca fda e, depois de estimar uma função contínua apropriada, poderá encontrar facilmente os locais onde a segunda derivada é zero.
CRAN DO FDA
Introdução à FDA
fonte
Recebi muitas visitas ao blog sobre o pacote do ponto de mudança (> 650 em 11 de novembro de 2014), então aqui está uma postagem atualizada usando o CausalImpact. http://r-datameister.blogspot.com/2014/11/causality-in-time-series-look-at-2-r.html
fonte