Как определить отставание во временных рядах? - PullRequest
3 голосов
/ 14 марта 2011

Я работаю над проблемой временного ряда и хочу разобраться, чтобы получить основную информацию о задержке.Цель состоит в том, чтобы оценить отставание выходной переменной на основе изменений в переменной изменения, как часть примера data.frame ниже.Полный data.frame содержит больше данных, но все они по неделям и имеют ту же структуру, что и этот пример.

year <- c(2010,2010,2010,2010)
week <- c("P7W1","P7W2","P7W3","P7W4")
output <- c(3295,4379,4284,4832)
change <- c(1912,2177,1587,2708)

timeTest <- data.frame(year,week,output,change)

Я создал объект временного ряда со следующим:

timeObject <- ts(timeTest, start=c(2010,7), frequency=52)

Однако, когда я запустил декомпозицию (timeObject), я получил сообщение об ошибке, в котором говорилось, что у меня нет или меньше, чем2 периода.Я явно что-то здесь упускаю, любой совет приветствуется.

1 Ответ

6 голосов
/ 14 марта 2011

Для того, чтобы запустить degpose () или его двоюродного брата stl (), вам нужно как минимум два полных периоды данных. Период определяется как 1 / частота. Поэтому, если вы работаете с еженедельными данными, где частота = 52, ваш период составляет один год, а вам нужны данные за два года.

Например, не удастся запустить декомпозицию () с набором данных за 103 недели:

decompose(ts(runif(103), frequency=52))

Error in decompose(ts(runif(103), frequency = 52)) : 
  time series has no or less than 2 periods

Но работает метод degpose () со 104 точками данных:

decompose(ts(runif(104), frequency=52))

$seasonal
Time Series:
Start = c(1, 1) 
End = c(2, 52) 
Frequency = 52 
  [1] -0.015447737  0.392006955  0.185528936  0.372505618 -0.079588619
  [6] -0.351928149 -0.472617951 -0.306461367 -0.475596801  0.266197693
 [11]  0.167468113 -0.332837411 -0.427845149 -0.001199151  0.276361737
...
$type
[1] "additive"

attr(,"class")
[1] "decomposed.ts"

PS. Возможно, вы также захотите взглянуть на acf (), которая вычислит автокорреляцию. Это будет работать, даже если у вас есть менее двух полных лет данных. Например:

acf (тс (runif (100), частота = 52))

enter image description here

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