时间序列(time serie)分析系列之Prophet6

1.Prophet简介

Prophet是Facebook开源的一个关于时间序列的框架。Prophet功能完善,既可以做未来预测,也可以填补缺失值,并且可以检测异常。
Prophet的整体框架,整个过程分为四部分:Modeling、Forecast Evaluation、Surface Problems以及Visually Inspect Forecasts

  • a.Modeling:建立时间序列模型。分析师根据预测问题的背景选择一个合适的模型。
  • b.Forecast Evaluation:模型评估。根据模型对历史数据进行仿真,在模型的参数不确定的情况下,我们可以进行多种尝试,并根据对应的仿真效果评估哪种模型更适合。
  • c.Surface Problems:呈现问题。如果尝试了多种参数后,模型的整体表现依然不理想,这个时候可以将误差较大的潜在原因呈现给分析师。
  • d.Visually Inspect Forecasts:以可视化的方式反馈整个预测结果。当问题反馈给分析师后,分析师考虑是否进一步调整和构建模型。

2.Prophet流程

Prophet 采取类似 Sklearn 模式的 API,先创建一个Prophet的实例,然后调用它的 fit 和 predict 方法。
输入是一个DataFrame,必须包含这两列:ds 和 y。ds 必须是一个 date 或者 datetime。y 必须是数字,代表我们需要预测的序列的值。构造效果如下:

index ds y
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
原创时序分析timeserieanalysis模型的应用parte1-TimeSerie_Concha.rar 【问题描述】:我们现在有某年的某机构的某数据,这些数据每15分钟采集一次,于是一年之中我们可以得到365天*24小时*4=35,040个点。相当于我们有一个365*96的矩阵,(在这里我们的数据是不完整的,只到10月份,故而我们有一个306*96的矩阵)。下图一为一年范围的时序信号,然后下图二是一个星期范围内的时序信号。相信大家不难看出,每逢周末的时候的数据要比平时小很多,这说明它具有完全不同的行为特征,需要单独拿出来考虑。然后再仔细观察一些,我们还可以发现会有一些天(例如周三)具有和其他周三不同的特征,我们猜测的是可能这个星期是假期或者其他什么原因,而这些outlier我们是需要适当的将他们修正的。我们的任务是预测每天的平均量。 1-1.JPG 2-1.jpg 这一年的日历表: 3.JPG 【问题的解决】:我们考虑使用AR,MA或者ARMA模型来拟合我们的数据,具体模型建立步骤为: 前提假设:一周的每天都有自己的独立的模型,因此需要将现有数据中的每一个周一,周二只到周末都提取出来,然后对它们分别进行模型建立。 这里我们以周三为例: 1. 原始周三信号为X,提取出X的趋势Trend。 关于趋势的去除方法有很多种,我们这里应用的是论坛上讨论过的SPA 和EMD。 2. 由第一步可以到residual = X - Trend。对这个residual信号进行IID测试,通过的话,我们就可以在这个residual信号基础上建立AR或者MA或者ARMA模型,如果没有通过的话,那就要回到第一步,寻找更好的可以去除趋势的信号。 3. 通过计算residual信号的autocorrelation(AC)和partial autocorrelation(PAC)我们就可以确定模型的类型了(这里就不再赘叙如何确定了,感兴趣的朋友可以自己查阅相关资料)。一旦确定了模型类型,我们就可以使用相关的算法来得到模型参数。例如对于AR模型我们可以使用Burg或者Yule-Walker算法等等啦。 4.假定在步骤三中我们得到一个AR模型即residual = a1*residual noise ~WN, 那么我们就可以开始预测啦! 5. 最终预测结果 = residual    Trend, 注意这里有一个问题就是比如我们知道了时间1:40的数据值,现在想要预测41:43时间段的值,那么其实主要的预测走势是跟着趋势走的,我用的多项式拟合的方法得到趋势在时间段41:43的值的,得到趋势的大体走势之后,再加上residual的模型预测值,我们就得到了所需要的预测结果啦,一般来说误差都不会太大。 【时间结果】:还是以周三为例吧。先给一下去趋势前后的周三数据的图像吧。 4.jpg 4-1.jpg 再给个预测结果图吧 5.jpg 【代码】:程序其实蛮简单的,主要在于思想。具体函数的使用请参照main.m.谢谢 【后期工作】:以上所阐述的问题属于长时间范围内的预测,如果我们想要做短时间的预测,比如我想知道5月8号22:15的时候的数据量,那么我们的模型假设又要重新考虑啦。这个问题的解答过段时间再传到论坛上吧。欢迎大家留言讨论啊!!! TimeSerie_Concha.rar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Great1414

整理不易,谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值