2012-01-17 3 views
1

Я пытаюсь использовать stl, чтобы получить разбивку сезонных тенденций и данных в моих временных данных. У меня есть данные по тикам, и я создал объект ts.plotting stl с данными временных рядов

Я побежал запрос SQL, чтобы получить данные в приведенной ниже форме

> x 
     datetime  price 
1 2010-09-08 1501  9110 
2 2010-09-08 1501  9110 
3 2010-09-08 1501  9110 
4 2010-09-08 1501  9110 
5 2010-09-08 1501  9115 
6 2010-09-08 1501  9115 
7 2010-09-08 1501  9110 
8 2010-09-08 1502  9115 
9 2010-09-08 1502  9115 
10 2010-09-08 1502  9115 
11 2010-09-08 1503  9120 
12 2010-09-08 1503  9115 
13 2010-09-08 1503  9115 
14 2010-09-08 1503  9115 
15 2010-09-08 1503  9115 
16 2010-09-08 1503  9115 
17 2010-09-08 1503  9115 
18 2010-09-08 1503  9115 
19 2010-09-08 1503  9115 
20 2010-09-08 1503  9115 
21 2010-09-08 1503  9115 
22 2010-09-08 1503  9110 
23 2010-09-08 1503  9105 
24 2010-09-08 1503  9105 
25 2010-09-08 1503  9110 
26 2010-09-08 1504  9110 
27 2010-09-08 1504  9110 
28 2010-09-08 1504  9110 
29 2010-09-08 1504  9110 
30 2010-09-08 1504  9115 
31 2010-09-08 1504  9115 
32 2010-09-08 1504  9115 
33 2010-09-08 1504  9115 
34 2010-09-08 1504  9115 
35 2010-09-08 1504  9115 
36 2010-09-08 1504  9115 
37 2010-09-08 1504  9120 

и я преобразовал его в тс, выполнив следующие действия:

> xt<-ts(x[,2]) 
> xt 
Time Series: 
Start = 1 
End = 37 
Frequency = 1 
[1] 9110 9110 9110 9110 9115 9115 9110 9115 9115 9115 9120 9115 9115 9115 9115 
[16] 9115 9115 9115 9115 9115 9115 9110 9105 9105 9110 9110 9110 9110 9110 9115 
[31] 9115 9115 9115 9115 9115 9115 9120 

> drg<-stl(log(xt),"per") 
Error in stl(log(xt), "per") : 
    series is not periodic or has less than two periods 

> is.ts(xt) 
[1] TRUE 

любое предложение о том, как я могу исправить ошибка, чтобы иметь возможность увидеть разбивку различных компонентов тренда ...

+0

Я не много работал с временными рядами, поэтому просто уточнить: это функция 'plot', создающая ошибку или' stl'? т. е. если вы выполняете 'drg <- stl (...)' на своей собственной строке, а затем 'plot (drg)', какая строка выдает ошибку? Мое предположение - «сюжет», поэтому, возможно, «drg» - это не то, что вы ожидаете. Можете ли вы предоставить небольшой образец ваших данных, который воспроизводит вашу проблему? –

+0

это часть stl '> drg <-stl (log (xt)," per ") Ошибка в stl (log (xt)," per "): серия не является периодической или имеет менее двух периодов ' Я обновляю сообщение небольшим образцом данных всего за несколько минут. – itcplpl

+0

только что обновленный пост с небольшим образцом данных, который воспроизводит проблему. – itcplpl

ответ

11

Ошибка есть у вас здесь

> drg<-stl(log(xt),"per") 
Error in stl(log(xt), "per") : 
    series is not periodic or has less than two periods 

В stl() функции нужны оба объекта таймсерия и частоты (или в равной степени, приращение) так, чтобы сезонный часть имеет смысл. Для более далеких макроэкономических рядов это обычно 1/12 за месяц, или 1/4 для квартальных данных. Подробнее см. В разделе help(ts) и более подробно рассмотрите примеры для ts() и stl() и тип используемых там данных.

Выполнение этого с использованием ежедневных бизнес-данных ... сложнее, чем календарь, ну, нерегулярный. При использовании ваших ежедневных данных вы должны придумать какую-то схему. Такие данные принципиально разные: рынки открываются и закрываются, тогда как макроданные могут быть концептуализированы как непрерывные.

+2

Спасибо Дирк, я ценю рассуждения и ваше разъяснение. Имея опыт, у вас есть какие-либо предложения по потенциальной схеме, возможно, это может быть применено к еженедельным данным OHLC. Или есть еще одна функция, которую вы бы предложили использовать для подобного типа анализа по ценам акций. – itcplpl

+2

@itcplpl попробуйте с * zoo * или * xts * пакетом для создания серии в своих форматах, а затем принудите к 'ts' объекту, используя свои' as.ts() '. Помимо этого, моделируйте сезонные и трендовые компоненты напрямую с помощью аддитивной модели - я сделал что-то подобное недавно, используя пакет mgcv, который имеет циклические сглаживания для еженедельного эффекта. Гораздо больше задействован этот STL, но он стоит того, что можно использовать как консервированные методы, такие как STL –

Смежные вопросы