我有这样一个示例数据框架(日期列格式为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()将此数据帧转换为时间序列,但问题是:当前的数据帧具有相同日期的多个值。在这种情况下,我们能应用时间序列吗?
能否有人,请,建议,如果有一个更好的方法跟随?我的假设是时间序列预测只适用于二元数据?这个假设对吗?
发布于 2016-11-27 10:54:28
你的问题似乎有两个方面:
我想使用
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"然后,您可以使用时间序列对象作为单变量时间序列,并引用所选变量或多变量时间序列,例如使用https://cran.r-project.org/web/packages/PerformanceAnalytics/PerformanceAnalytics.pdf包:
PerformanceAnalytics::chart.TimeSeries(dtaXTS)

侧点
关于你的第二个问题:
有人能告诉我什么是更好的方法,我的假设是时间序列预测只适用于二元数据吗?这个假设也是对的吗?
国际水文学组织这是相当广泛的。我建议您使用已创建的xts对象,并详细说明您想要使用的模型,以及为什么,如果这是一个关于时间序列分析性质的概念性问题,您可能更愿意在CrossValidated上发布您的后续问题。
数据来源于:dta2 <- read.delim(pipe("pbpaste"), sep = ""),使用提供的示例。
发布于 2016-11-27 12:47:26
因为我们需要每天的预测,所以我们需要每天进行汇总。最后使用注释中的DF,使用read.zoo和参数aggregate=sum将前两列数据读入动物园系列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)更新:重新阅读问题后修订的。
https://stackoverflow.com/questions/40827807
复制相似问题