0

我对 R 比较陌生,目前正在尝试在数据集上实施时间序列来预测未来六个月的产品量。我的数据集有 2 列日期(-timestamp)和库存中的产品量(在特定日期),例如:

Date    Volume
24-06-2013  16986
25-06-2013  11438
26-06-2013  3378
27-06-2013  27392
28-06-2013  24666
01-07-2013  52368
02-07-2013  4468
03-07-2013  34744
04-07-2013  19806
05-07-2013  69230
08-07-2013  4618
09-07-2013  7140
10-07-2013  5792
11-07-2013  60130
12-07-2013  10444
15-07-2013  36198
16-07-2013  11268

我需要预测结束日期后库存中所需的六个月产品量(在我的数据集中,即“14-06-2019”“3131076”)。大约 6 年的数据我的开始日期为 2013 年 6 月 24 日和结束日期 14-06-2019

我尝试在我的数据集上使用 auto.arima(R) 并得到了很多错误。我开始研究使我的数据适合 ts 分析的方法,并开始了解 imputets 和 zoo 包。

我猜日期与在模型中输入频率值有很高的相关性,所以我这样做了:我创建了一个新列并计算了每个工作日的频率,这不一样

data1 <- mutate(data, day = weekdays(as.Date(Date)))
> View(data1)
> table(data1$day)
Friday    Monday  Saturday    Sunday  Thursday   Tuesday Wednesday 
      213       214       208       207       206       211       212 

日期没有缺失值,但我们可以从上面看到每个工作日的计数不一样,有些日期丢失了,如何处理?我遇到了一种死胡同,尝试在这里浏览有关 impute ts 和 zoo 包的各种帖子,但没有取得太大成功。

如果您认为它是垃圾邮件,有人可以指导我如何继续并原谅我@admins 和用户,但这对我来说真的很重要。我尝试过各种关于时间序列的教程,但几乎所有教程都使用了我认为没有缺陷的航空乘客数据集。

问候 RD

library(imputeTS)
library(dplyr)
library(forecast)

setwd("C:/Users/sittu/Downloads")

data <- read.csv("ts.csv")

str(data)
 $ Date  : Factor w/ 1471 levels "01-01-2014","01-01-2015",..: 1132 1181 1221 1272 1324 22 71 115 163 213 ...
 $ Volume: Factor w/ 1468 levels "0","1002551",..: 379 116 840 706 643 1095 1006 864 501 1254 ...

data$Volume <- as.numeric(data$Volume)
data$Date <- as.Date(data$Date, format = "%d/%m/%Y")

str(data)
'data.frame':   1471 obs. of  2 variables:
 $ Date  : Date, format: NA NA NA ...     ## 1st Error now showing NA instead of dates
 $ Volume: num  379 116 840 706 643 ...
4

1 回答 1

1

让我们尝试生成该数据集:

首先,让我们重现一个缺少数据的数据集:

dates <- seq(as.Date("2018-01-01"),as.Date("2018-12-31"),1)
volume <- floor(runif(365, min=2500, max=50000))


dummy_df <- do.call(rbind, Map(data.frame, date=dates, Volume=volume))

df <- dummy_df %>% sample_frac(0.8)

在这里,我们生成了一个包含2018 年和 20% 的数据框,其中有 20% 的数据缺失(Date)。volumesample_frac(0.8)

这应该会正确地模拟您的数据集,其中缺少数据几天。

我们想要从那里找到没有体积数据的日子:

Df_full_dates <- as.data.frame(dates) %>% 
                 left_join(df,by=c('dates'='date'))

现在你想NA用一个卷替换值(对应于没有数据的天数)(我在那里取了 0,但如果它缺少数据,你可能想要输入月份平均值或特定值,我不知道什么最适合您的样本数据):

Df_full_dates[is.na(Df_full_dates)] <- 0

从那里,您有一个包含每天数据的数据集,您应该能够找到一个模型来预测未来几个月的交易量。

如果您有任何问题,请告诉我

于 2019-07-23T12:51:35.587 回答