ITPub博客

首页 > > > R语言时间序列分析(十四):分层和分组预测

R语言时间序列分析(十四):分层和分组预测

作者:浪花小雨滴 时间:2019-10-27 10:54:26 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书,《R语言数据高效处理指南》(黄天元)【简介_书评_在线阅读】 - 当当图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


在现实的预测中,一个属性往往能够分层或分类。

分层,是从属的关系,比如把中国分为不同的省份,把一个地级市分为不同的区,最小单位的总和即是上一级单位。

分类,则是交叠的关系,比如学校里面的学生既可以分不同的系所,又可以分不同的入学年份,但是入学年份和系所是不能简单相加的,它们是相乘的关系。

在时间序列的预测中,也可以利用线性代数的方法,来对具有分层或分类关系的时间序列,进行建模和预测。具体可参考Chapter 10 Forecasting hierarchical or grouped time series | Forecasting: Principles and Practice。

分层的实现如下:

library(hts)
tourism.hts <- hts(visnights, characters = c(3, 5))
tourism.hts %>% aggts(levels=0:1) %>%
  autoplot(facet=TRUE) +
  xlab("Year") + ylab("millions") + ggtitle("Visitor nights")

具体细节还需要关注数据的结构和函数的基本参数。

分组的实现如下:

prison.gts <- gts(prison/1e3, characters = c(3,1,9),
  gnames = c("State", "Gender", "Legal",
             "State*Gender", "State*Legal",
             "Gender*Legal"))

这里,不仅仅要对各自的组别进行命名,还要定义其交互项。

现在,这些东西都仅仅是按照一定规律进行分层或分组的数据,要进行实际的预测,还要随时进行拟合和推演。推演方法有三种:

1、bottom-up【forecast(prison.gts, method="bu", fmethod="arima")】

2、top-down【method="tdfp"】

3、middle-out【method="mo"】

其中fmethod参数决定了预测方法,分别可以使用ARIMA/ETS/random walk三种。而method则决定了预测的策略,可以先对最低层次进行预测,然后用其和来推上级的序列(bottom-up);也可以先对总序列进行预测,然后向下分解(top-down);还可以先计算中间的层级,然后分别向上和向下推演(middle-out)。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39978