2016-01-28 8 views
2

Я использую следующую временную ряд:Нет оборудованную модель линии для временных сегментов серии

Lines <- "D1,Value 
1,20/11/2014 16:00,0.01 
2,20/11/2014 17:00,0.01 
3,20/11/2014 19:00,0.01 
4,20/11/2014 22:00,0.20 
5,20/11/2014 23:00,0.03" 

library (zoo) 
library (strucchange) 

z <- read.zoo(text = Lines, tz = "", format = "%d/%m/%Y %H:%M", sep = ",") 

bp <- breakpoints(z ~ 1, h = 2) 

plot(z) 
abline(v = time(z)[bp$breakpoints]) 

Я хотел бы добавить к графе для каждого сегмента подобранной модели и дополнительно создать dataframe, который имеет конст и наклон приспособленной модели. Для подогнанной модели на сегмент графа Я пытался использовать следующее:

lines(z, fitted(bp, breaks = 1), col = 2, lwd = 2) 

но нет никакой линии. Для dataframe я пытался использовать:

coef(bp, breaks = 1) 

Однако мне нужно наклон, а также.

ответ

3

кажется, что контрольные точки возвращает "ts" объект, даже если входной является зоопарк так попробовать это:

fit <- zoo(fitted(bp), time(z)) 
lines(fit, col = "blue", lty = 2, lwd = 2) 

enter image description here

+0

Спасибо большое. Можете ли вы добавить, как я могу найти наброски моделей по каждому сегменту? – Avi

+0

Два сегмента являются горизонтальными (без наклонов), потому что формула, заданная в вопросе, является 'z ~ 1' .. Используя' fit' из ответа, два уровня: 'levs <- fit [bp $ breakpoints + 0: 1 ] ', а наклон между ними -' diff (levs)/diff (as.numeric (time (levs))/3600) ' –

+0

Спасибо за публикацию решения. К сожалению, 'breakpoints()' не работает должным образом с 'zoo'. Он может потреблять серии 'zoo', но, по сути, рассматривает их как числовые векторы и не сохраняет соответствующий индекс. Я попытался выяснить, могу ли я легко сжать поддержку 'zoo' в' breakpoints() ', но изменения не были бы тривиальными и, скорее всего, не обратными. Так что до сих пор я никогда не сталкивался с написанием гораздо более совершенных новых «breakpoints()» ... –