2015-03-18 2 views
1

Я относительно новичок в R, поэтому, пожалуйста, несите меня. Я пытаюсь справиться с основным нерегулярным анализом временных рядов.R: использование stl() на объекте xts

Вот как выглядит мой файл данных, около 40 тыс. Строк. Интервал не всегда ровно 20 секунд.

Time, Avg 
04/03/2015 00:00:23,20.24 
04/03/2015 00:00:43,20.38 
04/03/2015 00:01:03,20.53 
04/03/2015 00:01:23,20.54 
04/03/2015 00:01:43,20.53 

data <- read.zoo("data.csv",sep=",",tz='',header=T,format='%d/%m/%Y %H:%M:%S') 

Я рад агрегировать по минутам

data <- to.minutes(as.xts(data)) 

Использование «открытой» колонки в качестве примера

head(data[,1]) 
        as.xts(data).Open 
2015-03-04 00:00:43    20.24 
2015-03-04 00:01:43    20.53 
2015-03-04 00:02:43    20.47 
2015-03-04 00:03:43    20.38 
2015-03-04 00:04:43    20.05 
2015-03-04 00:05:43    19.84 

data <- data[,1] 

А вот где все это разваливается для меня

fit <- stl(data, t.window=15, s.window="periodic", robust=TRUE) 
Error in stl(data, t.window = 15, s.window = "periodic", robust = TRUE) : 
series is not periodic or has less than two periods 

Я искал ошибку m но мне это не совсем понятно. Период = частота? Для моего набора данных я ожидал бы, что сезонный компонент будет еженедельным.

frequency(data) <- 52 
fit <- stl(data, t.window=15, s.window="periodic", robust=TRUE)     
Error in na.fail.default(as.ts(x)) : missing values in object 

?

head(as.ts(data)) 
[1] 20.24 NA NA NA NA NA 

Ух, что?

Что я делаю неправильно? Как мне подготовить объект xts, чтобы он мог правильно передать его в stl()?

спасибо.

+0

Будет легче помочь, если вы предоставите [воспроизводимый пример] (http://stackoverflow.com/q/5963269/271616). –

ответ

1

Я извлекаю числовые значения xts_object и строю ts-объект для функции stl. Однако в этом случае метки времени xts_object полностью игнорируются.

stl(ts(as.numeric(xts_object), frequency=52), s.window="periodic", robust=TRUE) 
Смежные вопросы