Создайте собственную функцию для прогнозирования - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть один фрейм данных, который состоит из трех столбцов (PIT, CIT и НДС). Мое намерение состоит в том, чтобы сделать прогноз с каждым из этих трех временных рядов с пакетом Forecast. По этой причине я преобразую фрейм данных в объект TS

Теперь я хочу сделать прогнозирование с помощью функции snaive, которая является частью пакета Forecast. Итак, я написал следующие строки кода:

  SNAIVE_PIT<-snaive(TS_REVENUES[, 'PIT'],h=5) 
  SNAIVE_CIT<-snaive(TS_REVENUES[, 'CIT'],h=5) 
  SNAIVE_VAT<-snaive(TS_REVENUES[, 'VAT'],h=5)

Но я намерен упростить этот код с помощью некоторой функции, такой как: loop, for или другая функция, которая может автоматически рассчитывать прогнозирование для каждого из этих трех временных рядов (PIT, CIT и НДС)? Я спрашиваю об этом, потому что этот временной ряд является лишь небольшой частью целого ряда, и я должен упростить процедуры прогнозирования.

#CODE

library(forecast)

  # Making data frame 
   DATA_SET<-data.frame(
                    PIT=seq(1, 48, by = 2),
                    CIT=seq(1, 24, by = 1),
                    VAT=seq(1, 94, by = 4)
                    )
     View(DATA_SET)

    # Making TS object
      TS_REVENUES<-ts(DATA_SET,start=c(2016,1),frequency = 12)

    # Extracting column names from TS object
      COL_NAMES_TS<-TS_REVENUES[0:0,]
      COL_NAMES_TS

    # Making forecasting with Forecast package      
      SNAIVE_PIT<-snaive(TS_REVENUES[, 'PIT'],h=5) 
      SNAIVE_CIT<-snaive(TS_REVENUES[, 'CIT'],h=5) 
      SNAIVE_VAT<-snaive(TS_REVENUES[, 'VAT'],h=5) 

1 Ответ

1 голос
/ 17 апреля 2019

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

library(forecast)

# Making data frame 
DATA_SET<-data.frame(
  PIT=seq(1, 48, by = 2),
  CIT=seq(1, 24, by = 1),
  VAT=seq(1, 94, by = 4)
)
View(DATA_SET)

for(i in 1:ncol(DATA_SET)){
  # Build a ts for this column
  timeseries <- ts(DATA_SET[,i], start=c(2016,1), frequency = 12)
  # Build a foreacst based on the ts
  forecast <- snaive(timeseries,h=5)

  # rename the forecast according to the original variable name
  colname <- colnames(DATA_SET)[i]
  forecastName <- paste("SNAIVE_",colname," <- forecast",sep="")
  eval(parse(text = forecastName))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...