2016-12-23 2 views
1

У меня есть dataframe (DF), который является широким набором данных со следующей структурой,Применение модели временных рядов для каждой строки

ID 2015/01/01 2015/02/01 2015/03/01 2015/04/01 
A1 42   42  24   32 
A2 22   22  24   32 
A3 12   15  19   22 
A4 8   12  18   24 
  • Я хочу построить модель временных рядов для каждой строки, таким образом, там будет N быть время модели серии, где N = количество строк в dataframe

Я усталым следующее:

ts_1 <- ts(df[1:1,], start = c(2015, 05), frequency = 12) 

ts_1_stl <- stl(ts_1, s.window = "periodic") 

Но я получил ошибку как:

Error in stl(ts_1, s.window = "periodic") : only univariate series are allowed 
  • Что я делаю не так, как я могу применить к каждой строке
+1

Я думаю, первое заявление будет 'ц (unlist (DF [-1]), старт = с (2015, 05), частота = 12)' или если вы хотите для каждой строки 'применяются (df [-1], 1, FUN = функция (x) ts (x, start = c (2015, 05), частота = 12)) ' – akrun

+0

Это очень понравилось !!! –

ответ

1

Если мы применяем на каждой строки (первая колонка - «ID», колонка класса символов, которая не требуется), мы можем использовать apply с MARGIN = 1

apply(df[-1], 1, FUN = function(x) ts(x, start = c(2015, 05), frequency = 12)) 

Для всего набора данных, мы должны unlist

ts(unlist(df[-1]), start = c(2015, 05), frequency = 12) 

Мы бы предположить «ФР», чтобы иметь большее количество столбцов, чтобы иметь достаточное количество наблюдений, то есть по крайней мере 2 периода для «периодического» в работа

set.seed(24) 
df <- cbind(Col1 = LETTERS[1:4], as.data.frame(matrix(rnorm(31*4), ncol=31))) 
res <- apply(df[-1], 1, FUN = function(x) stl(ts(x, start = c(2015, 05), 
      frequency = 12), s.window = "periodic")) 
+1

Большое спасибо за это! Я проголосовал за res <- применение stl. Не могу поблагодарить вас! –

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