У меня есть некоторые данные, которые я использую loess
. Я хотел бы найти точки перегиба сглаженной линии. Это возможно? Я уверен, что кто-то нашел причудливый метод, чтобы решить эту проблему ... Я имею в виду ... в конце концов, это R!
Я в порядке с изменением функции сглаживания, которую я использую. Я просто использовал, loess
потому что это то, что я использовал в прошлом. Но любая функция сглаживания в порядке. Я понимаю, что точки перегиба будут зависеть от функции сглаживания, которую я использую. Я в порядке с этим. Я хотел бы начать, просто имея любую функцию сглаживания, которая может помочь выплюнуть точки перегиба.
Вот код, который я использую:
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)
Ответы:
С точки зрения использования R, чтобы найти перегибы в сглаженной кривой, вам просто нужно найти те места в сглаженных значениях y, где обозначено изменение в y переключателях.
Затем вы можете добавить точки на график, где происходят эти перегибы.
С точки зрения нахождения статистически значимых точек перегиба, я согласен с @nico, что вам следует изучить анализ точек изменения, иногда также называемый сегментированной регрессией.
источник
Здесь есть проблемы на нескольких уровнях.
Во-первых, Лёсс просто оказывается более гладкой, и есть из чего выбирать. Оптимисты утверждают, что практически любой разумный сглаживатель найдет реальную модель, и что почти все разумные сглаживатели согласятся с реальной моделью. Пессимисты утверждают, что это проблема, и что «разумные сглаживатели» и «реальные модели» здесь определены в терминах друг друга. Кстати, почему лесс и почему вы думаете, что хороший выбор здесь? Выбор состоит не только из одного сглаживателя или отдельной реализации сглаживателя (не все, что идет под именем лесс или лоуссес, одинаково для всех программ), но также и с одной степенью сглаживания (даже если это выбрано рутина для вас). Вы упоминаете этот момент, но это не относится к нему.
Более конкретно, как показывает ваш игрушечный пример, базовые функции, такие как точки поворота, могут легко не быть сохранены лессом (не выделяя лессов также). Ваш первый локальный минимум исчезает, а ваш второй локальный минимум смещается из-за определенного сглаживания, которое вы показываете. Можно ожидать, что отклонения, определяемые нулями второй производной, а не первой, будут еще более переменчивыми.
источник
Есть множество отличных подходов к этому вопросу. Некоторые включают. (1) - changepoint- package (2) - сегментированный - пакет. Но вы должны выбрать количество точек изменения. (3) MARS, как реализовано в пакете -earth-
В зависимости от вашего компромисса смещения / отклонения, все даст вам немного другую информацию. -сегментированный- стоит посмотреть. Разное количество моделей точек переключения можно сравнить с AIC / BIC
источник
Возможно, вы могли бы использовать библиотеку fda, и как только вы оценили подходящую непрерывную функцию, вы можете легко найти места, где вторая производная равна нулю.
FDA CRAN
FDA Intro
источник
Я много раз посещал блог о пакете изменений (> 650 по состоянию на 11 ноября 2014 года), поэтому вот обновленное сообщение с использованием CausalImpact. http://r-datameister.blogspot.com/2014/11/causality-in-time-series-look-at-2-r.html
источник