用python做未来的预测(数据预测怎么用python做)

技术如何在R中使用开源大规模预测工具Prophet这期内容当中小编将会给大家带来有关如何在R中使用开源大规模预测工具Prophet,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Prop

本期,边肖将为大家带来如何使用开源大规模预测工具Prophet in R的信息,文章内容丰富,从专业角度进行分析和描述。希望你看完这篇文章能有所收获。

Prophet是脸书推出的开源大规模预测工具,可以用在R和Python中对时间序列数据进行预测。

先知在R中的使用将在下面简要介绍。

一、基础介绍

在下面的例子中使用了Peyton middot曼宁维基百科主页日访问量时间序列数据(2007/12/10 ndash;2016/01/20)。我们使用R中的Wikipediatrend包来获取这个数据集。该数据集具有多季节周期性、增长率不断变化的特点,可拟合特定日期(如Peyton middot曼宁的决赛和超级碗)等先知适用属性,所以可以作为一个很好的例子。(注:佩顿米多;曼宁是美国足球的前四分卫)

在R中,prophet提供了一个Prophet函数来拟合模型,并返回一个模型对象,在该对象上可以执行“预测”和“绘制”操作。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

使用prophet_plot_components函数显示预测中的趋势、周效果和年效果。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

注意:如果Windows系统的语言设置为中文,则R输出成分分析图时无法正常显示周效果。您可以使用sys。R中的setlocale ('LC _ all ',' English ')代码,用于将环境更改为英语。

二、预测增长

默认情况下,先知使用线性模型进行预测。在预测增长情况时,通常会有可达* * *的极限值,比如市场总规模、总人口等等。这就是所谓的承载能力,所以在预测的时候,应该在接近这个值的时候达到饱和。

先知可以使用逻辑增长趋势模型来预测和指定承载能力。下面是一个用R语言进行维基百科主页访问(取对数)的例子。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

三、趋势突变点

默认情况下,预言家会自动检测突变点,并适当调整趋势。

下面将介绍几种用于更好地控制趋势调整过程的方法。

1. 调整趋势的灵活性

如果趋势的变化过拟合(即过于灵活)或欠拟合(即不够灵活),可以使用输入参数changepoint.prior.scale来调整稀疏先验的程度。默认情况下,此参数指定为0.05。

增加该值将导致更灵活的趋势拟合。如下图所示:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

降低该值会降低趋势拟合的灵活性。如下图所示:

mation/20210522/378/535960.jpg" alt="如何在R中使用开源大规模预测工具Prophet">

如何在R中使用开源大规模预测工具Prophet

四、节假日效应

1. 对节假日建模

如果需要专门对节假日进行建模,你就必须得为此创建一个新的数据框,其中包含两列(节假日 holiday 和日期戳 ds  ),每行分别记录了每个出现的节假日。

你可以在这个数据框基础上再新建两列 lower_window 和 upper_window ,从而将节假日的时间扩展成一个区间 [  lower_window , upper_window ] 。举例来说,如果想将平安夜也加入到 “圣诞节” 里,就设置 lower_window = -1 ,  upper_window = 0 ;如果想将黑色星期五加入到 “感恩节” 里,就设置 lower_window = 0 , upper_window = 1  。

下面我们创建一个数据框,其中包含了所有佩顿 · 曼宁参加过的决赛日期:

如何在R中使用开源大规模预测工具Prophet

上述代码中,我们将超级碗的日期既记录在了决赛的日期数据框中,也记录在了超级碗的日期数据框中。这就会造成超级碗日期的效应会在决赛日期的作用下叠加两次。

一旦这个数据框创建好了,就可以通过传入 holidays 参数使得在预测时考虑上节假日效应。

如何在R中使用开源大规模预测工具Prophet

可通过 forecast 数据框,来展示节假日效应:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

在成分分析的图中,如下所示,也可以看到节假日效应。我们可以发现,在决赛日期附近有一个穿透,而在超级碗日期时穿透则更为明显。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

2. 对节假日和季节性设定先验规模

如果发现节假日效应被过度拟合了,通过设置参数 holidays.prior.scale 可以调整它们的先验规模来使之平滑,默认下该值取 10 。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

和之前相比,节假日效应的规模被减弱了,特别是对观测值较少的超级碗而言。类似的,还有一个 seasonality.prior.scale  参数可以用来调整模型对于季节性的拟合程度。

五、预测区间

在预测时,不确定性主要来源于三个部分:趋势中的不确定性、季节效应估计中的不确定性和观测值的噪声影响。

1. 趋势中的不确定性

预测中,不确定性***的来源就在于未来趋势改变的不确定性。Prophet 假定 “未来将会和历史具有相似的趋势”  。尤其重要的是,我们假定未来趋势的平均变动频率和幅度和我们观测到的历史值是一样的,从而预测趋势的变化并通过计算,最终得到预测区间。

这种衡量不确定性的方法具有以下性质:变化速率灵活性更大时(通过增大参数changepoint.prior.scale  的值),预测的不确定性也会随之增大。原因在于如果将历史数据中更多的变化速率加入了模型,也就代表我们认为未来也会变化得更多,就会使得预测区间成为反映过拟合的标志。

预测区间的宽度(默认下,是 80% )可以通过设置 interval.width 参数来控制:

如何在R中使用开源大规模预测工具Prophet

2. 季节效应中的不确定性

默认情况下, Prophet 只会返回趋势中的不确定性和观测值噪声的影响。你必须使用贝叶斯取样的方法来得到季节效应的不确定性,可通过设置  mcmc.samples 参数(默认下取 0 )来实现。

如何在R中使用开源大规模预测工具Prophet

上述代码将***后验估计( MAP )取代为马尔科夫蒙特卡洛取样 ( MCMC ),并且将计算时间从 10 秒延长到 10  分钟。如果做了全取样,就能通过绘图看到季节效应的不确定性了:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

六、异常值

下面我们使用之前使用过的 R 语言维基百科主页对数访问量的数据来建模预测,只不过使用存在时间间隔并不完整的数据:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

如上 R 输出图所示,趋势预测看似合理,预测区间的估计却过于广泛。

处理异常值***的方法是移除它们,而 Prophet 使能够处理缺失数据的。如果在历史数据中某行的值为空( NA ),但是在待预测日期数据框 future  中仍保留这个日期,那么 Prophet 依旧可以给出该行的预测值。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

上述这个实例虽然影响了不确定性的估计,却没有影响到主要的预测值 yhat  。但是,现实往往并非如此,接下来,在上述数据集基础上加入新的异常值后再建模预测:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

这里 2015年 6 月存在一些异常值破坏了季节效应的估计,因此未来的预测也会***地受到这个影响。***的解决方法就是移除这些异常值:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

七、非日数据

Prophet  处理的对象并非必须是日数据,不过要是试图通过非日数据来预测每日的情况或拟合季节性效应,往往会得到奇奇怪怪的结果。下面使用美国零售业销售量数据来预测未来 10  年的情况:

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

预测结果看起来非常杂乱,原因正是在于这个特殊的数据集使用的是月数据。当我们拟合年度效应时,只有每个月***天的数据,而且对于其他天的周期效应是不可测且过拟合的。当你使用  Prophet 拟合月度数据时,可以通过在 make_future_dataframe 中传入频率参数只做月度的预测。

如何在R中使用开源大规模预测工具Prophet

如何在R中使用开源大规模预测工具Prophet

上述就是小编为大家分享的如何在R中使用开源大规模预测工具Prophet了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153428.html

(0)

相关推荐

  • Lotus系统中CS与BS有什么区别

    技术Lotus系统中CS与BS有什么区别这篇文章主要为大家展示了“Lotus系统中CS与BS有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Lotus系统中CS与BS

    攻略 2021年12月3日
  • 广义货币m2,广义货币M2是具体指什么

    技术广义货币m2,广义货币M2是具体指什么广义货币是一个经济学概念广义货币m2,和狭义货币相对应,货币供给的一种形式或口径,以M2来表示,其计算方法是交易货币以及定期存款与储蓄存款。
    我国现阶段也是将货币供应量划分为三个

    生活 2021年10月24日
  • 扫一扫翻译,手机智能扫一扫都能做什么

    技术扫一扫翻译,手机智能扫一扫都能做什么1、第一个功能为扫一扫翻译:扫词翻译。对准你需要翻译的单词,点击拍照键锁定单词,之后就会出现该单词的基本释义。2、第二个功能:拍照翻译。拍照翻译类似于扫词翻译,不过拍照翻译就好像一

    生活 2021年10月19日
  • oracle归档日志流式分析(oracle执行语句分析)

    技术Oracle查询脚本的示例分析这篇文章将为大家详细讲解有关Oracle查询脚本的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 --查询回滚段信

    攻略 2021年12月20日
  • SQL中CBO优化方式有哪些

    技术SQL中CBO优化方式有哪些这篇文章给大家分享的是有关SQL中CBO优化方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一条查询语句的处理包括语法分析、语句优化和查询执行三个阶段。

    攻略 2021年11月20日
  • 抖音粉丝怎么涨,抖音如何涨粉?

    技术抖音粉丝怎么涨,抖音如何涨粉?不得不说,在抖音上一切皆有可能,甚至很多人莫名其妙就火了,自己也是猝不及防。随着越来越多的网红的出现,许多人都纷纷加入抖音行列,希望一夜爆红,但是又往往事与愿违,有没有好一点的涨粉套路,

    测评 2021年10月20日