Обнаружить значительные изменения тренда - PullRequest
0 голосов
/ 25 сентября 2018

Я хотел бы определить даты, когда кривая тренда значительно изменяется, используя R. Красные точки - это моменты времени, когда я вижу существенные изменения, которые должны быть обнаружены.Небольшие колебания следует игнорировать.

Trend curve

Я пробовал функции breakpoints, которые находят даты, обозначенные пунктирной линией.Я не вижу, как эти линии соотносятся с данными.

Пример данных с графика:

structure(c(431.510725286867, 421.634186460535, 379.627938613016, 
425.906255600274, -14.1367284804303, -384.10599618701, -611.193815166686, 
-460.535003689942, -309.875390598749, -84.9820334889592, 217.330882967973, 
437.111949107673, 738.919896124628, 752.79552200685, 804.851028725362, 
757.869760812822, 1197.91301915761, 1567.88256933466, 1794.97067632374, 
1644.31215300884, 1493.6528224525, 1268.75973855711, 968.432034953716, 
743.503624686386, 510.63191994943), .Tsp = c(2016.66666666667, 
2018.66666666667, 12), class = "ts")

1 Ответ

0 голосов
/ 26 сентября 2018

Сравните прямую и обратную конечную разность и отфильтруйте небольшие значения.

Явно: вычислите ∆ ( t ) = x ( t + 1) - x ( t ) и ∇ ( t ) = x ( t )- x ( t-1 ), затем d ( t ) = ∆ ( t ) - ∇ ( t ) = x ( t + 1) - x ( t -1) и оставьте t , для которых | d ( t ) |> ε, где ε отражает то, что вы называете небольшими колебаниями.

В вашем случае d = c (NA, -32,1, 88,3, -486,3 , 70,1, 142,9, 377,7 , 0,0, 74,2, 77,4, -82,5, 82,0, -287,9 , 38,2, -99,0, 487,0 , -70,1, -142,9, -377,7 , -0,0, -74,2, -75,4, 75,4, -7,9, NA).Что больше по абсолютной величине, чем ε = 200 для t = c (4, 7, 13, 16, 19), ровно ваши 4 красных точки.

Конечно, порог ε = 200 можетбыть более строгим (на гистограмме d значение 200 прыжка в лицо).

Вы также можете сгладить колебания, взяв среднее значение на несколько пунктовскорее предыдущее и следующее значение: d n ( t ) = x ( t + n ) + ... + x ( t + 1 ) - x ( t -1) -...- * * х тысяча восемьдесят пять ( T * 1 088 * -n).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...