首页 文章

时间序列分析适用性?

提问于
浏览
1

我有一个这样的示例数据框(日期列格式为 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 回答

  • 1

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

    我想使用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)
    

    multivariate time series

    侧点

    关于你的第二个问题:

    有人可以告诉我什么是更好的方法,我的假设是时间序列预测只适用于双变量数据?这个假设是对的吗?

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


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

  • 1

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

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

    Note: 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)
    

    Updated: 重读问题后修改 .

相关问题