Ошибка зацикливания на выходах авторегрессии

#r #for-loop #arima

#r #для цикла #arima

Вопрос:

Я пытаюсь создать модель авторегрессии для уже дифференцированного временного ряда.

Я хотел бы поместить приведенный ниже код в цикл, чтобы он не повторялся.

 gas_ar_date <- arima(diff_gas[[1]], order = c(1, 0, 0))
print("AR for Date")
gas_ar_date
print("******************************************")

gas_ar_change <- arima(diff_gas[[2]], order = c(1, 0, 0))
print("AR for Currency Change")
gas_ar_change
print("******************************************")

gas_ar_domestic <- arima(diff_gas[[3]], order = c(1, 0, 0))
print("AR for UK Domestic Production")
gas_ar_domestic
print("******************************************")

gas_ar_import <- arima(diff_gas[[4]], order = c(1, 0, 0))
print("AR for Import")
gas_ar_import
print("******************************************")
 

Однако, когда я пытаюсь:

 for (i in 1:8) {
  gas_ar[i] <- arima(diff_gas[[i]], order = c(1, 0, 0))
  gas_ar[i]
}
 

Я получаю сообщение об ошибке:

 number of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement lengthnumber of items to replace is not a multiple of replacement length
 

Как в этом случае можно создать цикл и получить полный вывод модели авторегрессии ARIMA?

Вот краткий обзор данных: введите описание изображения здесь

Ответ №1:

Если вы str(fit1) это сделаете, это должен быть «Список из 14»

Так что либо

 gas_ar[[i]] <- arima(diff_gas[[i]], order = c(1, 0, 0))
 

или

 gas_ar[i] <- list(arima(diff_gas[[i]], order = c(1, 0, 0)))
 

должно сработать.

Комментарии:

1. Ничего не печатается, когда я это делаю: for (i in 1:8) { gas_ar[[i]] <- arima(diff_gas[[i]], order = c(1, 0, 0)) gas_ar[[i]] }

2. Использовать print(gas_ar[[i]]) . Это проблема, отличная от описанной выше. for (i in 1:8) {i} также ничего не будет напечатано. Некоторые функции по умолчанию неуязвимо возвращаются.

3. Я не понимаю, почему вы не приняли этот ответ?

Ответ №2:

Я не специалист по R, но, похоже, вы можете сделать следующее:

 list<-c('date','change','domestic','import')

for (i in 1:4) {
   paste('gas_ar',list[i],sep="") <- arima(diff_gas[[i]], order = c(1, 0, 0))
}