【问题标题】:Having a lot of issues with time series objects in RR中的时间序列对象有很多问题
【发布时间】:2015-04-21 12:37:55
【问题描述】:

我在处理一些预算数据的任何时间序列对象时非常困难。

原始数据是约 1800 份合同的 14,460 行付款,其中每一行都有 DD/MM/YYYY 和 Amount 特征。从 2000 年 1 月 1 日到 2014 年 12 月 31 日共有 5296 天,但其中只有 3133 天实际付款。因此,这些日子的间隔是不规则的,在某些日子出现不止一份合同付款,而在其他日子出现零付款。

我遇到的主要问题是这些时间序列对象在接收不定期发生的每日数据时表现出的残酷固执。我什至将付款合并到一个连续的日期向量中,但仍然遇到同样的问题,即频率、周期或 order.by。

CTS_date_V <- data.frame(Date = seq(as.Date("2000/07/01"), as.Date("2014/12/31"), "days"))
exp_d <- merge(exp, CTS_date_V, by="Date", all.y = T)
exp_d$Amount[is.na(exp_d$Amount)] <- 0

head(exp_d[,c("Amount","Date")],20)
      Amount       Date
1        0.0 2000-07-01
2        0.0 2000-07-02
3        0.0 2000-07-03
4        0.0 2000-07-04
5   269909.4 2000-07-05
6   130021.9 2000-07-06
7  1454135.3 2000-07-06
8   140065.5 2000-07-07
9        0.0 2000-07-08
10       0.0 2000-07-09
11       0.0 2000-07-10
12  274147.2 2000-07-11
13  106959.2 2000-07-11
14  119208.6 2000-07-12
15       0.0 2000-07-13
16       0.0 2000-07-14
17       0.0 2000-07-15
18  125402.5 2000-07-16
19 1170603.1 2000-07-16
20 1908463.3 2000-07-16

我熟悉的大多数预测包(以及迄今为止我发现的关于 SO 提出的任何问题)如 fpp、预测、timeSeries、tseries、xts 等都需要更有序的日期功能order.by 或其他类似问题。

我关心的是 R 包的适当性,而不是统计方法。例如,我尝试了几种不同的方法来构建预测包所需的时间序列对象,包括 XTS、TS,它们都存在频率、周期性或要求排序的问题。 .

更新:

我用

构建我的 xts 对象
exp_xts <- xts(exp_d$Amount, start = min(exp$Date), end = max(exp$Date), order.by=exp_d$Date, colnames = "Amount", frequency = "") 

head(exp_xts,15)
                [,1]
2000-07-01       0.0
2000-07-02       0.0
2000-07-03       0.0
2000-07-04       0.0
2000-07-05  269909.4
2000-07-06  130021.9
2000-07-06 1454135.3
2000-07-07  140065.5
2000-07-08       0.0
2000-07-09       0.0
2000-07-10       0.0
2000-07-11  274147.2
2000-07-11  106959.2
2000-07-12  119208.6
2000-07-13       0.0

没有问题,那个对象可以是plot.xts()ed,但是当我尝试时

fit_xts <- stl(exp_xts, s.window="periodic",robust = T) 

是说

Error in if (frequency > 1 && abs(frequency - round(frequency)) < ts.eps) frequency <- round(frequency) : missing value where TRUE/FALSE needed`

【问题讨论】:

  • 你的目标是什么?预测或某种时间序列模型? xts 可以处理不规则间隔的数据,但 ts 不能。
  • @Metrics,不是立即stl,而是可能由stl 调用。 (运行traceback() 肯定会告诉我们)。
  • @D8Amonk,您正在尝试一种新的、相对先进的技术来处理大而复杂的数据。您可以尝试减少示例,使它们最小化,从而为自己和我们做很多事情。您向我们展示了数据框的一堆列的头部,但是它们中的大多数都是无关紧要的,因为您从其中的两个中创建了一个 xts 对象。您的问题归结为“我有不规则的时间序列数据。我想做一个季节性分解。这可以用stl 吗?dput(head(exp_xts, 20))。”相反,我们得到了四个段落和我们无法重现的错误。
  • 我从未使用过xts 对象,但stl 是为使用具有频率的常规ts 对象而构建的。如果没有频率,就“季节”的长度而言,您并没有真正给stl 任何东西。您也许可以重新采样以尝试创建一个均匀间隔的时间序列来去季节化,但这听起来像是一个应该交叉验证的问题。
  • 有一个包,its,用于不规则的时间序列。

标签: r time-series xts forecasting stl-decomposition


【解决方案1】:

我尝试在 R 中使用时间序列对象作为 kaggle competition 。我发现使用各种时间序列预测方法进行时间序列预测对我来说效果不佳。对我有用的是创建一个普通的标准 R 数据框,并基于上下文数据创建一个神经网络,例如:温度、星期几、一年中的哪一天、今天是否是假期等等。

这对您意味着什么,因为您不进行预测,但简单的统计分析是,也许您根本不需要时间序列功能,并且可以简单地使用标准的“R”数据框?

我最后来到9th,使用标准数据框和神经网络,没有时间序列的东西:-)

【讨论】:

  • 如果我想手动生成与 seasonplot() 和 stl() 方法相同类型的估计/输出,我该怎么做?
【解决方案2】:

我认为可能与我最近遇到的以下问题有关。

我尝试在时间序列上运行自相关函数 (acf())。使用 xts/zoo 包将数据转换为合适的时间序列格式。但是,acf() 是一个函数,它存在于 R 中而无需安装任何包,因此它被调整为通过更“传统”的函数转换为时间序列的数据,在本例中为 ts()。因此,此代码返回与您的情况相同的错误:

ts<- xts(dane.filtered$CRO, dane.filtered$Date_xts)
acf(ts, col="red")

解决方案是使用 R 中内置的默认时间序列函数创建时间序列(此代码运行良好):

ts <- ts(dane.filtered$CRO)
acf(ts, col="red")

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2015-03-11
    • 2020-07-04
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2020-10-13
    相关资源
    最近更新 更多