R 中的时间序列对象存在很多问题
Having a lot of issues with time series objects in R
我在处理某些预算数据的 -any- 时间序列对象时遇到了异常困难的时间。
原始数据是约 1800 份合约的 14,460 行付款,其中每一行都有一个 DD/MM/YYYY 和金额特征。从 1/1/2000 到 12/31/2014 之间有 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、forecasting、timeSeries、tseries、xts 等都需要更有序的order.by
或其他类似问题的日期功能。
我关心的是 R 包的适用性,而不是统计方法。例如,我尝试了几种不同的方法来构建预测包所需的时间序列对象,包括 XTS、TS,但它们都存在频率、周期性问题,或者要求 order.by.
更新:
我用
构建我的 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()
编辑该对象,但是当我尝试
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`
我尝试在 kaggle competition 中使用 R 中的时间序列对象。我发现使用各种时间序列预测方法的时间序列预测对我来说效果不佳。对我有用的是创建一个普通的标准 R 数据框,并基于上下文数据创建一个神经网络,例如:温度、星期几、一年中的某一天、今天是否是假期,等等。
这对你意味着什么,因为你不是在做预测,而是简单的统计分析,也许你根本不需要时间序列功能,可以简单地使用标准 'R'数据框?
我最终 9th 来了,使用标准数据框和神经网络,没有时间序列的东西:-)
我觉得可能和我最近遇到的以下问题有关
我尝试 运行 时间序列的自相关函数 (acf()
)。使用 xts/zoo 包将数据转换为合适的时间序列格式。但是,acf()
是一个函数,在R中没有安装任何包就存在,所以通过更多的'traditional'函数调整为时间序列数据,在本例中是ts()
。所以这段代码返回了与您的情况相同的错误:
ts<- xts(dane.filtered$CRO, dane.filtered$Date_xts)
acf(ts, col="red")
解决方案是使用 R 中内置的默认时间序列函数创建时间序列(这段代码 运行 完全没问题):
ts <- ts(dane.filtered$CRO)
acf(ts, col="red")
希望对您有所帮助。
我在处理某些预算数据的 -any- 时间序列对象时遇到了异常困难的时间。
原始数据是约 1800 份合约的 14,460 行付款,其中每一行都有一个 DD/MM/YYYY 和金额特征。从 1/1/2000 到 12/31/2014 之间有 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、forecasting、timeSeries、tseries、xts 等都需要更有序的order.by
或其他类似问题的日期功能。
我关心的是 R 包的适用性,而不是统计方法。例如,我尝试了几种不同的方法来构建预测包所需的时间序列对象,包括 XTS、TS,但它们都存在频率、周期性问题,或者要求 order.by.
更新:
我用
构建我的 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()
编辑该对象,但是当我尝试
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`
我尝试在 kaggle competition 中使用 R 中的时间序列对象。我发现使用各种时间序列预测方法的时间序列预测对我来说效果不佳。对我有用的是创建一个普通的标准 R 数据框,并基于上下文数据创建一个神经网络,例如:温度、星期几、一年中的某一天、今天是否是假期,等等。
这对你意味着什么,因为你不是在做预测,而是简单的统计分析,也许你根本不需要时间序列功能,可以简单地使用标准 'R'数据框?
我最终 9th 来了,使用标准数据框和神经网络,没有时间序列的东西:-)
我觉得可能和我最近遇到的以下问题有关
我尝试 运行 时间序列的自相关函数 (acf()
)。使用 xts/zoo 包将数据转换为合适的时间序列格式。但是,acf()
是一个函数,在R中没有安装任何包就存在,所以通过更多的'traditional'函数调整为时间序列数据,在本例中是ts()
。所以这段代码返回了与您的情况相同的错误:
ts<- xts(dane.filtered$CRO, dane.filtered$Date_xts)
acf(ts, col="red")
解决方案是使用 R 中内置的默认时间序列函数创建时间序列(这段代码 运行 完全没问题):
ts <- ts(dane.filtered$CRO)
acf(ts, col="red")
希望对您有所帮助。