Построить и расширить функцию прогнозирования - PullRequest
2 голосов
/ 17 апреля 2019

Этот код делает прогноз с пакетом прогноза.Конечными выходными данными этого кода являются три списка, прогнозируемые с помощью метода snaive (SNAIVE_PIT, SNAIVE_CIT и SNAIVE_VAT).

#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)

      # FOR LOOP
     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))
      }

Однако кодирование не заканчивается приведенным выше кодом.А именно, я должен расширить этот код некоторыми дополнительными вещами.

Во-первых, как поместить эту строку в приведенный выше код (часть FOR LOOP)?

#NEW CODE 1
SNAIVE_ALL<-mapply(SNAIVE_PIT, SNAIVE_CIT,SNAIVE_VAT, FUN=list, SIMPLIFY=FALSE)

Во-вторых, как поместить эту строку в приведенный выше код (часть FOR LOOP)?

#NEW CODE 2
   SNAIVE_PIT_ACCURANCY<-accuracy(SNAIVE_PIT)
    SNAIVE_CIT_ACCURANCY<-accuracy(SNAIVE_CIT)
     SNAIVE_VAT_ACCURANCY<-accuracy(SNAIVE_VAT)

  SNAIVE_ACCURANCY<-rbind(SNAIVE_PIT_ACCURANCY,SNAIVE_CIT_ACCURANCY,SNAIVE_VAT_ACCURANCY)

Так кто-нибудь может мне помочь с этим кодом?

1 Ответ

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

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

Я рекомендую следующую структуру

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

Давайте кодировать.

# I recommend spliting this function but I am lazy

prediction_funtion <- function(x) {
  x <- ts(x, start=c(2016,1), frequency = 12)
  model <- snaive(x)
  forecasts_results <- forecast(model,5)
  accuracy_results <- accuracy(model)
  return(list(forecast = forecasts_results,accuracy =accuracy_results))
}

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