首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间序列分析适用性?

时间序列分析适用性?
EN

Stack Overflow用户
提问于 2016-11-27 10:15:31
回答 2查看 179关注 0票数 1

我有这样一个示例数据框架(日期列格式为mm-dd-YYYY):

代码语言:javascript
复制
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中还有其他的选择吗?

能否有人,请,建议,如果有一个更好的方法跟随?我的假设是时间序列预测只适用于二元数据?这个假设对吗?

EN

回答 2

Stack Overflow用户

发布于 2016-11-27 10:54:28

你的问题似乎有两个方面:

我想使用ts()将这个数据帧转换成时间序列,但问题是-当前的数据帧具有相同日期的多个值。在这种情况下,我们能应用时间序列吗?

如果您乐于使用xts包,您可以尝试:

代码语言:javascript
复制
dta2$date <- as.Date(dta2$date, "%d-%m-%Y")
dtaXTS <- xts::as.xts(dta2[,2:3], dta2$date)

这将导致:

代码语言:javascript
复制
>> 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

下列课程中:

代码语言:javascript
复制
>> class(dtaXTS)
[1] "xts" "zoo"

然后,您可以使用时间序列对象作为单变量时间序列,并引用所选变量或多变量时间序列,例如使用https://cran.r-project.org/web/packages/PerformanceAnalytics/PerformanceAnalytics.pdf包:

代码语言:javascript
复制
PerformanceAnalytics::chart.TimeSeries(dtaXTS)

侧点

关于你的第二个问题:

有人能告诉我什么是更好的方法,我的假设是时间序列预测只适用于二元数据吗?这个假设也是对的吗?

国际水文学组织这是相当广泛的。我建议您使用已创建的xts对象,并详细说明您想要使用的模型,以及为什么,如果这是一个关于时间序列分析性质的概念性问题,您可能更愿意在CrossValidated上发布您的后续问题。

数据来源于:dta2 <- read.delim(pipe("pbpaste"), sep = ""),使用提供的示例。

票数 1
EN

Stack Overflow用户

发布于 2016-11-27 12:47:26

因为我们需要每天的预测,所以我们需要每天进行汇总。最后使用注释中的DF,使用read.zoo和参数aggregate=sum将前两列数据读入动物园系列z。我们可以选择将其转换为"ts"系列(tser <- as.ts(z)),尽管这对于许多预测函数来说是不必要的。特别是,通过查看auto.arima的源代码,我们可以看到它在进一步处理之前对其输入运行x <- as.ts(x)。最后运行auto.arimaforecast等预测功能。

代码语言:javascript
复制
library(forecast)
library(zoo)

z <- read.zoo(DF[1:2], format = "%m-%d-%Y", aggregate = sum)

auto.arima(z)

forecast(z)

注: DF在这里可重复使用:

代码语言:javascript
复制
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)

更新:重新阅读问题后修订的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40827807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档