[英]Time series analysis applicability?
我有一个像这样的示例数据框(日期列格式为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并计数数据帧的列。 因此,在这种情况下,我必须跳过日期列,并且无法对计数值进行每日预测?
假设我想每天汇总计数值。 我尝试使用汇总函数,但是必须指定日期值,但是我有非常大的数据集? r中还有其他可用选项吗?
有人可以建议是否有更好的方法吗? 我的假设是时间序列预测仅适用于双变量数据? 这个假设正确吗?
您的问题似乎有两个方面:
我想使用
ts()
将此数据帧转换为时间序列,但问题是-当前数据帧在同一日期具有多个值。 在这种情况下,我们可以应用时间序列吗?
如果您乐于使用xts
包,则可以尝试:
dta2$date <- as.Date(dta2$date, "%d-%m-%Y")
dtaXTS <- xts::as.xts(dta2[,2:3], dta2$date)
这将导致:
>> head(dtaXTS)
count grp
2009-09-01 54 1
2009-09-01 100 2
2009-09-01 546 3
2009-10-01 67 4
2009-11-01 80 5
2009-11-01 45 6
以下类别中的一个:
>> class(dtaXTS)
[1] "xts" "zoo"
然后,您可以将时间序列对象用作单变量时间序列,并引用选定的变量或多变量时间序列,例如使用PerformanceAnalytics
包:
PerformanceAnalytics::chart.TimeSeries(dtaXTS)
关于第二个问题:
有人可以建议我遵循什么更好的方法,我的假设是时间序列预测仅适用于双变量数据? 这个假设对吗?
恕我直言,这是相当广泛的。 我建议您使用创建的xts
对象并详细说明要使用的模型,以及为什么,如果这是有关时间序列分析性质的概念性问题,您可能更愿意将后续问题发布到CrossValidated上 。
数据来自: dta2 <- read.delim(pipe("pbpaste"), sep = "")
使用提供的示例。
由于需要每日预报,因此我们需要汇总到每天。 使用末尾Note中的DF
,使用read.zoo
和参数aggregate=sum
将数据的前两列读入zoo系列z
。 我们可以选择将其转换为"ts"
系列( tser <- as.ts(z)
),尽管这对于许多预测功能而言都是不必要的。 特别是,检查出auto.arima
的源代码后,我们看到它在进一步处理之前在其输入上运行x <- as.ts(x)
。 最后运行auto.arima
, forecast
或其他预测功能。
library(forecast)
library(zoo)
z <- read.zoo(DF[1:2], format = "%m-%d-%Y", aggregate = sum)
auto.arima(z)
forecast(z)
注意: DF
在此处可重现:
Lines <- "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"
DF <- read.table(text = Lines, header = TRUE)
更新:重新阅读问题后修订。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.