我有一个这样的示例数据框(日期列格式为 mm-dd-YYYY
):
date count grp
01-09-2009 54 1
01-09-2009 100 2
01-09-2009 546 3
01-10-2009 67 4
01-11-2009 80 5
01-11-2009 45 6
我想使用 ts()
将此数据帧转换为时间序列,但问题是:当前数据帧具有相同日期的多个值 . 在这种情况下我们可以应用时间序列吗?
-
我可以将数据帧转换为时间序列,并构建一个可以每天预测计数值的模型(ARIMA)吗?
-
或者我应该根据grp预测计数值,但在这种情况下,我必须只选择数据帧的grp和count列 . 那么在这种情况下,我必须跳过日期列,并且每日预测计数值是不可能的?
-
假设我想要每天汇总计数值 . 我尝试使用聚合函数,但是我们必须指定日期值,但是我有一个非常大的数据集? r中还有其他选项吗?
有人可以建议是否有更好的方法可以遵循?我的假设是时间序列预测仅适用于双变量数据?这个假设是对的吗?
2 回答
您的问题似乎有两个方面:
如果您乐意使用xts包,您可以尝试:
这将导致:
以下课程:
然后,您可以将时间序列对象用作单变量时间序列并引用所选变量或作为多变量时间序列,例如使用PerformanceAnalytics包:
侧点
关于你的第二个问题:
恕我直言,这是相当广泛的 . 我建议您使用已创建的
xts
对象并详细说明您要使用的模型以及为什么,如果这是关于时间序列分析性质的概念性问题,您可能更愿意在CrossValidated上发布您的后续问题 .数据来源:
dta2 <- read.delim(pipe("pbpaste"), sep = "")
使用提供的示例 .由于需要每日预测,我们需要汇总到每日 . 使用最后注释中的
DF
,使用read.zoo
和参数aggregate=sum
将前两列数据读入动物园系列z
. 我们可以选择将其转换为"ts"
系列(tser <- as.ts(z)
),尽管这对于许多预测功能来说是不必要的 . 特别是,检查auto.arima
的源代码,我们看到它在进一步处理之前在其输入上运行x <- as.ts(x)
. 最后运行auto.arima
,forecast
或其他预测功能 .Note:
DF
在这里可重复给出:Updated: 重读问题后修改 .