【问题标题】:Time Series application - Guidance Needed时间序列应用 - 需要指导
【发布时间】:2019-12-01 08:28:19
【问题描述】:

我对 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 年的数据我的开始日期为 24-06 -2013 年和结束日期 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 和用户。我尝试过各种关于时间序列的教程,但几乎所有教程都使用了我认为没有缺陷的航空乘客数据集。

问候 研发

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 ...

【问题讨论】:

  • 如果您将当前问题分解成更小的问题,您可能会更关注您的问题。现在它太宽泛了。请记住,这是一个编程场所。如果您正在寻找统计建议,请尝试stats.stackexchange.com 或当地的统计学家。
  • 注意未来...谢谢
  • 可能会觉得这很有用:robjhyndman.com/eindhoven/1-0-intro.pdf

标签: r time-series


【解决方案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)

在这里,我们生成了一个包含 Datevolume 的 2018 年数据框,其中缺少 20% 的数据 (sample_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

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

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

【讨论】:

  • 感谢我能够在我的数据集中复制它的逻辑和信息,不包括周末,并且每个工作日的 NA 值和相同的计数。现在将继续进行 impute ts。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2023-03-18
  • 2023-01-15
  • 1970-01-01
相关资源
最近更新 更多