开发者社区> 问答> 正文

时间序列



时间序列




目录




x13_arima


Arima全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出一著名时间序列预测方法,所以又称为box-jenkins模型、博克思-詹金斯法.
x13-arima是基于开源X-13ARIMA-SEATS封装的针对季节性调整的arima算法。
X-13ARIMA-SEATS Seasonal Adjustment Program 详细介绍请见链接 wiki
Arima 详细介绍请见链接 wiki


pai命令行

<divre style='background: rgb(246, 246, 246); font: 12px/1.6 "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; margin: 0px 0px 16px; padding: 10px; outline: 0px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; overflow: auto; word-spacing: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;' prettyprinted?="" linenums="">
  1. pai -name x13_arima
  2.     -project algo_public
  3.     -DinputTableName=pai_ft_x13_arima_input
  4.     -DseqColName=id
  5.     -DvalueColName=number
  6.     -Dorder=3,1,1
  7.     -Dstart=1949.1
  8.     -Dfrequency=12
  9.     -Dseasonal=0,1,1
  10.     -Dperiod=12
  11.     -DpredictStep=12
  12.     -DoutputPredictTableName=pai_ft_x13_arima_out_predict
  13.     -DoutputDetailTableName=pai_ft_x13_arima_out_detail


参数说明


参数名称参数描述取值范围是否必选,默认值/行为
inputTableName输入表表名必选
inputTablePartitions输入表中指定哪些分区参与训练, 格式为: Partition_name=value. 如果是多级格式为name1=value1/name2=value2; 如果是指定多个分区, 中间用’,’分开可选, 默认值选择所有分区
seqColName时序列列名必选,仅用来对valueColName 排序,具体数值与计算无关
valueColName数值列列名必选
groupColNames分组列,多列已逗号分隔,如col0,col1; 每个分组会构建一个时间序列列名可选
orderp,d,q 分别表示自回归系数、差分、滑动回归系数p,d,q均为非负整数,范围[0, 36]必选
start时序开始日期字符串,格式year.seasonal, 如1986.1
时序格式介绍
可选,默认为1.1
frequency时序频率正整数,范围(0, 12]
时序格式介绍
可选,默认为12, 表示12月/年
seasonalsp,sd,sq 分别表示季节性自回归系数、季节性差分、季节性滑动回归系数sp,sd,sq均为非负整数,范围[0, 36]可选,默认无seasonal
periodseasonal周期数字,范围(0, 100]可选,默认为 frequency
maxiter最大迭代次数正整数可选,默认为 1500
toltolerance,容忍度double类型可选,默认为 1e-5
predictStep预测条数数字,范围(0, 365]可选,默认为12
confidenceLevel预测置信水平数字,范围(0, 1)开区间可选,默认为 0.95
outputPredictTableName预测输出表表名必选
outputDetailTableName详细信息表表名必选
outputTablePartition输出分区分区名可选,默认不输出到分区
coreNum节点个数与参数memSizePerCore配对使用,正整数可选, 默认自动计算
memSizePerCore单个节点内存大小,单位M正整数,范围[1024, 64 *1024]可选, 默认自动计算
lifecycle可选,指定输出表的生命周期正整数没有生命周期


时序格式介绍


参数start和frequency规定了数据(valueColName)的两个时间维度ts1、ts2。frequency表示单位周期内数据的频率,既单位ts1中ts2的频率。 start格式是n1.n2, 既表示开始日期是第n1个ts1中的第n2个ts2
单位时间ts1ts2frequencystart
12月/年121949.2 表示第1949年中的第2个月
4季/年41949.2 表示第1949年中的第2个季度
7天/周71949.2 表示第1949周中的第2天
1任何时间单位111949.1 表示第1949(年、天、时等)

例如. value=[1,2,3,5,6,7,8,9,10,11,12,13,14,15]

1) start=1949.3, frequency=12表示数据是monthly per year, 预测开始的日期是1950.06
yearJanFebMarAprMayJunJulAugSepOctNovDec
194912345678910
19501112131415

2) start=1949.3, frequency=4表示数据是quarterly per year, 预测开始的日期是1953.02
yearQtr1Qtr2Qtr3Qtr4
194912
19503456
195178910
195211121314
195314

3) start=1949.3, frequency=7表示数据是daily per week, 预测开始的日期是1951.04
weekSunMonTueWedThuFriSat
194912345
19506789101112
1951131415

4) start=1949.1, frequency=1 可以表示任何时间单位, 预测开始日期是1963.00
cyclep1
19491
19502
19513
19514
19525
19536
19547
19558
19569
195710
195811
195912
196013
196114
196215


具体示例

  • 测试数据使用的数据:AirPassengers。这个数据集是1949-1960年每个月国际航空的乘客数量的数据。```

create table pai_ft_x13_arima_input(id bigint,number bigint);tunnel upload data/airpassengers.csv pai_ft_x13_arima_input -h true;<divre style='background: rgb(246, 246, 246); font: 12px/1.6 "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; margin: 0px 0px 16px; padding: 10px; outline: 0px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; overflow: auto; word-spacing: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;' prettyprinted?="" linenums="">
  1. * pai命令
  2. ```bash
  3. pai -name x13_arima
  4.     -project algo_public
  5.     -DinputTableName=pai_ft_x13_arima_input
  6.     -DseqColName=id
  7.     -DvalueColName=number
  8.     -Dorder=3,1,1
  9.     -Dseasonal=0,1,1
  10.     -Dstart=1949.1
  11.     -Dfrequency=12
  12.     -Dperiod=12
  13.     -DpredictStep=12
  14.     -DoutputPredictTableName=pai_ft_x13_arima_out_predict
  15.     -DoutputDetailTableName=pai_ft_x13_arima_out_detail
  • 输出说明

输出表:outputPredictTableName,字段分别为:
column namecomment
pdate预测日期
forecast预测结论
lower置信度为confidenceLevel(默认0.95)时,预测结论下界
upper置信度为confidenceLevel(默认0.95)时,预测结论上界

数据展示


输出表:outputDetailTableName,字段分别为:
column namecomment
keymodel表示模型
evaluation表示评估结果
parameters表示训练参数
log表示训练日志
summary存储具体信息

数据展示


PaiWeb展示-模型系数(key=model)


PaiWeb展示-评估指标(key=evaluation)



算法规模

  • 支持规模

行:单group数据最大1200条
列:1数值列
  • 资源计算方式

不设置groupColNames, 默认计算方式
coreNum = 1
memSizePerCore = 4096

设置groupColNames,默认计算方式

coreNum = floor(总数据行数 / 12万)
memSizePerCore = 4096


训练数据集

idnumber
1112
2118
3132
4129
5121


x13-auto-arima


x13-auto-arima includes an automatic ARIMA model selection procedure based largely on the procedure of Gomez and Maravall (1998) as implemented in TRAMO (1996) and subsequent revisions.
x13-auto-arima选择过程如下

  1. default model esitmation.
    当frequency = 1,默认模型是(0,1,1)当frequency > 1,默认模型是(0,1,1)(0,1,1)

  • identication of dierencing orders

    如果设置了diff和seasonalDiff,则跳过此步使用 Unit root test ( wiki )确定差分d,和季节性差分D

  • identication of ARMA model orders

    根据BIC( wiki)准则选择最合适的模型, 其参数maxOrder、maxSeasonalOrder在此步骤其作用

  • comparison of identified model with default model

    使用Ljung-Box Q statistic( wiki)比较模型,如果两个模型均是不可接受的,则使用(3,d,1)(0,D,1)模型

  • final model checks


  • pai命令行

    <divre style='background: rgb(246, 246, 246); font: 12px/1.6 "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; margin: 0px 0px 16px; padding: 10px; outline: 0px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; overflow: auto; word-spacing: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;' prettyprinted?="" linenums="">
    1. pai -name x13_auto_arima
    2.     -project algo_public
    3.     -DinputTableName=pai_ft_x13_arima_input
    4.     -DseqColName=id
    5.     -DvalueColName=number
    6.     -Dstart=1949.1
    7.     -Dfrequency=12
    8.     -DpredictStep=12
    9.     -DoutputPredictTableName=pai_ft_x13_arima_out_predict2
    10.     -DoutputDetailTableName=pai_ft_x13_arima_out_detail2


    参数说明


    参数名称参数描述取值范围是否必选,默认值/行为
    inputTableName输入表表名必选
    inputTablePartitions输入表中指定哪些分区参与训练, 格式为: Partition_name=value. 如果是多级格式为name1=value1/name2=value2; 如果是指定多个分区, 中间用’,’分开可选, 默认值选择所有分区
    seqColName时序列列名必选,仅用来对valueColName 排序,具体数值与计算无关
    valueColName数值列列名必选
    groupColNames分组列,多列已逗号分隔,如col0,col1; 每个分组会构建一个时间序列列名可选
    start时序开始日期字符串,格式year.seasonal, 如1986.1
    时序格式介绍
    可选,默认为1.1
    frequency时序频率正整数,范围(0, 12]
    时序格式介绍
    可选,默认为12, 表示12月/年
    maxOrderp,q最大值正整数,范围 [0,4]可选,默认2
    maxSeasonalOrder季节性p,q最大值正整数,范围[0,2]可选,默认1
    maxDiff差分d最大值正整数,范围[0,2]可选,默认 2
    maxSeasonalDiff季节性差分d最大值正整数,范围[0,1]可选,默认1
    diff差分d正整数,范围[0,2]
    diff与maxDiff同时设置时,maxDiff被忽略
    diff与seasonalDiff要同时设置
    可选,默认-1, 不指定diff
    seasonalDiff季节性差分d正整数,范围[0,1]
    seasonalDiff与maxSeasonalDiff同时设置时
    maxSeasonalDiff被忽略
    可选,默认-1,不指定seasonalDiff
    maxiter最大迭代次数正整数可选,默认为 1500
    toltolerance,容忍度double类型可选,默认为 1e-5
    predictStep预测条数数字,范围(0, 365]可选,默认为12
    confidenceLevel预测置信水平数字,范围(0, 1)开区间可选,默认为 0.95
    outputPredictTableName预测输出表表名必选
    outputDetailTableName详细信息表表名必选
    outputTablePartition输出分区分区名可选,默认不输出到分区
    coreNum节点个数与参数memSizePerCore配对使用,正整数可选, 默认自动计算
    memSizePerCore单个节点内存大小,单位M正整数,范围[1024, 64 *1024]可选, 默认自动计算
    lifecycle可选,指定输出表的生命周期正整数没有生命周期


    时序格式介绍


    参数start和frequency规定了数据(valueColName)的两个时间维度ts1、ts2。frequency表示单位周期内数据的频率,既单位ts1中ts2的频率。 start格式是n1.n2, 既表示开始日期是第n1个ts1中的第n2个ts2
    单位时间ts1ts2frequencystart
    12月/年121949.2 表示第1949年中的第2个月
    4季/年41949.2 表示第1949年中的第2个季度
    7天/周71949.2 表示第1949周中的第2天
    1任何时间单位111949.1 表示第1949(年、天、时等)

    例如. value=[1,2,3,5,6,7,8,9,10,11,12,13,14,15]

    1) start=1949.3, frequency=12表示数据是monthly per year, 预测开始的日期是1950.06
    yearJanFebMarAprMayJunJulAugSepOctNovDec
    194912345678910
    19501112131415

    2) start=1949.3, frequency=4表示数据是quarterly per year, 预测开始的日期是1953.02
    yearQtr1Qtr2Qtr3Qtr4
    194912
    19503456
    195178910
    195211121314
    195314

    3) start=1949.3, frequency=7表示数据是daily per week, 预测开始的日期是1951.04
    weekSunMonTueWedThuFriSat
    194912345
    19506789101112
    1951131415

    4) start=1949.1, frequency=1 可以表示任何时间单位, 预测开始日期是1963.00
    cyclep1
    19491
    19502
    19513
    19514
    19525
    19536
    19547
    19558
    19569
    195710
    195811
    195912
    196013
    196114
    196215


    具体示例

    • 测试数据使用的数据:AirPassengers。这个数据集是1949-1960年每个月国际航空的乘客数量的数据。查看数据```

    create table pai_ft_x13_arima_input(id bigint,number bigint);tunnel upload data/airpassengers.csv pai_ft_x13_arima_input -h true;<divre style='background: rgb(246, 246, 246); font: 12px/1.6 "YaHei Consolas Hybrid", Consolas, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Helvetica, monospace, monospace; margin: 0px 0px 16px; padding: 10px; outline: 0px; border-radius: 3px; border: 1px solid rgb(221, 221, 221); color: rgb(51, 51, 51); text-transform: none; text-indent: 0px; letter-spacing: normal; overflow: auto; word-spacing: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;' prettyprinted?="" linenums="">
    1. * pai命令

    pai -name x13_auto_arima -project algo_public -DinputTableName=pai_ft_x13_arima_input -DseqColName=id -DvalueColName=number -Dstart=1949.1 -Dfrequency=12 -DmaxOrder=4 -DmaxSeasonalOrder=2 -DmaxDiff=2 -DmaxSeasonalDiff=1 -DpredictStep=12 -DoutputPredictTableName=pai_ft_x13_arima_auto_out_predict -DoutputDetailTableName=pai_ft_x13_arima_auto_out_detail```
    • 输出说明

    输出表:outputPredictTableName,字段分别为:
    column namecomment
    pdate预测日期
    forecast预测结论
    lower置信度为confidenceLevel(默认0.95)时,预测结论下界
    upper置信度为confidenceLevel(默认0.95)时,预测结论上界

    数据展示


    输出表:outputDetailTableName,字段分别为:
    column namecomment
    keymodel表示模型
    evaluation表示评估结果
    parameters表示训练参数
    log表示训练日志
    summary存储具体信息

    数据展示


    PaiWeb展示-模型系数(key=model)


    PaiWeb展示-评估指标(key=evaluation)



    算法规模

    • 支持规模

    行:单group数据最大1200条
    列:1数值列
    • 资源计算方式

    不设置groupColNames, 默认计算方式
    coreNum = 1
    memSizePerCore = 4096

    设置groupColNames,默认计算方式

    coreNum = floor(总数据行数 / 12万)
    memSizePerCore = 4096


    常见问题

    • 为什么预测结果都一样?

    在模型训练异常时,会调用均值模型,则所有预测结果是训练数据的均值。常见的异常如: 时序差分diff后不stationary;训练没有收敛;方差为0等。 可以在logview中,查看单独节点的stderr文件,获取具体的异常信息


    训练数据集

    idnumber
    1112
    2118
    3132
    4129
    5121

    展开
    收起
    nicenelly 2017-10-25 11:02:43 2413 0
    0 条回答
    写回答
    取消 提交回答
    问答排行榜
    最热
    最新

    相关电子书

    更多
    时间序列数据的处理 立即下载
    低代码开发师(初级)实战教程 立即下载
    阿里巴巴DevOps 最佳实践手册 立即下载