Как использовать цикл для прогнозирования ежедневных продаж? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь предсказать продажи для каждого из оставшихся дней до закрытия.Я использую линейную регрессию для прогнозирования каждого отдельного дня на основе предыдущего среднего значения за 7 дней (среди прочих факторов).Однако, когда единственным оставшимся днем ​​является день закрытия, я хочу использовать другую функцию для прогнозирования этого дня.Модель также должна обновлять ежедневные продажи по отдельности, чтобы каждый прогноз можно было использовать для следующей итерации.

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

Ссылка на код R

### loop attempt
nnextdp <- DataforQuestion[c(74),]        #first na data point -- row 74, column Day6  for reference
   while (is.na(DataforQuestion[c(nnextdp),]) = TRUE) {      #while data point is NA, continue the loop
       if(nnextdp(head != Day0)) {Prior_week_average <- mean(nnextdp + right(7) - nnextdp) #set wkprioravg to the last 7 days of sales
          lmDayX <- lm(Day[right(head(nnextdp),1)] ~ Month + CDoW + 
           Prior_week_average, DataforQuestion)  #if datapoint is not in column Day0, let's use the lmDayX function
            predict(lmDayX, newdata = nnextdp)        #predict the data point's value & add it to the data set
                      nnextdp = nnextdp[c(-1)]                  #move the data point to the next na space
}   else if (nnextdp(head = Day0)) {Total_Not_Including_CSales <- aggreagate(Day1...Day203)  #if data point header is Day0, then sum the day1 - Day203 to get the total sales prior to close day
         lmDay0 <- lm(Day0 ~ Month + CDoW + Day1Sales + Total_Not_Including_CSales, DataforQuestion)  #if data point header is Day0, then run the other regression model
          predict(lmDay0, newdata = nnextdp)        #lmDay0 to predict the sales & fill in the value to the NA space
           nnextdp = nnextdp[c(-1)]  #move the data point to be predicted to the next NA space to the left of the previous
}  else
     print("complete")    #else print completed
}

По существу мне нужен цикл для прогнозирования ежедневных продаж в столбцах Day0… ... Day74, где есть значения NA.Но только в том случае, если по крайней мере 7 предшествующих дней продаж данных, не относящихся к NA, были.

Я предоставил здесь ссылку на набор данных.

Ссылка на набор данных

Я ценю вашу помощь и, пожалуйста, дайте мне знать, если я могу что-то добавить, чтобы уточнить что-нибудь!

...