Prophet在R语言中进行时间序列数据预测

news2024/11/15 9:24:56

您将学习如何使用Prophet(在R中)解决一个常见问题:预测公司明年的每日订单。 

最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。

数据准备与探索

Prophet最适合每日数据以及至少一年的历史数据。 我们将使用SQL处理每天要预测的数据:

`select
``  date,
  value
from modeanalytics.daily_orders
order by date`

我们可以将SQL查询结果集通过管道传递R数据框对象中。首先,将您的SQL查询重命名为Daily Orders。然后,在R 中,我们可以使用以下语句将查询结果集传递到数据帧df中:

df <- datasets[["Daily Orders"]]

为了快速了解您的数据框包含多少个观测值,可以运行以下语句:

#  
dim(df)

Prophet输入DataFrame中有两列:分别包含日期和数值。 

 str(df)

在此示例中,您将需要进行一些手动的日期格式转换:

 df <- mutate (
df,
date = ymd_hms(date) #  
)

现在您已经准备好要与Prophet一起使用的数据,在将数据输入到Prophet中之前,将其作图并检查数据。 

  1. 2017年5月左右,趋势轨迹发生了明显变化。默认情况下,Prophet自动检测到此类“ 趋势变化点 ”,并允许趋势进行适当调整。
  2. 每周和每年都有明显的季节性。如果时间序列长于两个周期以上,则Prophet将自动适应每周和每年的季节性。
  3. 我们的观察结果的均值和方差随时间增加。 

Box-Cox变换

通常在预测中,您会明确选择一种特定类型的幂变换,以将其应用于数据以消除噪声,然后再将数据输入到预测模型中(例如,对数变换或平方根变换等)。但是,有时可能难以确定哪种变换适合您的数据。 

Box-Cox变换是一种数据变换,用于评估一组Lambda系数(λ)并选择可实现最佳正态性近似值的值。

如果我们将新转换的数据与未转换的数据一起绘制,则可以看到Box-Cox转换能够消除随着时间变化而观察到增加的方差:

预测

使用Prophet通过Box-Cox转换的数据集拟合模型后,现在就可以开始对未来日期进行预测。 
现在,我们可以使用该predict()函数对未来数据帧中的每一行进行预测。

forecast <- predict(m, future)

此时,Prophet将创建一个预测变量的新数据框,其中包含名为的列下的未来日期的预测值yhat

plot(m, forecast)

在我们的示例中,我们的预测如下所示:

如果要可视化各个预测成分,则可以使用plot_components
 

预测和成分可视化显示,Prophet能够准确地建模数据中的潜在趋势,同时还可以精确地建模每周和每年的季节性(例如,周末和节假日的订单量较低)。

逆Box-Cox变换

由于Prophet用于Box-Cox转换后的数据,因此您需要将预测值转换回其原始单位。要将新的预测值转换回其原始单位,您将需要执行Box-Cox逆转换。

现在,您已将预测值转换回其原始单位,现在可以将预测值与历史值一起可视化:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ansible

Ansible是什么&#xff1f; Ansible是一个基于eythn开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pbet和Saltstack能实现的功能&#xff0c;As;ble基本上都可以实现。Ansible能批量配置、部署、管理上…

MongoDB入门与实战-第五章-MongoDB副本集

目录参考一、副本集概念1、**主要功能**2、主从复制和副本集区别3、复制结构图二、副本集成员角色1.主节点2.副本节点3.仲裁节点三、副本集架构&#xff08;一主一副本一仲裁&#xff09;1、**设置读操作权限&#xff1a;**2、取消作为奴隶节点的读权限四、选举原则1、触发条件…

时序逻辑电路

数字电路分为两大类&#xff0c;组合逻辑电路和时序逻辑电路 今天我们要开始学习的是时序逻辑电路&#xff0c;要求大家掌握 同步逻辑电路的分析方法 常用的时序逻辑电路的使用方法 当然由于时序逻辑电路的特点&#xff0c;使得时序逻辑电路难度远远大于组合逻辑电路 电路任…

一文详解Redis键过期策略,最全文档

文章目录1 设置带过期时间的 key1.1 刷新过期时间1.2 Redis 之前的 2.1.3 的差异1.3 返回值1.4 示例1.5 带过期时间的 key1.6 过期精度1.7 过期和持久化2 Redis的key过期策略2.1 惰性删除2.1.1 优点2.1.2 缺点定时删除优点缺点2.2 定期删除优点缺点难点定期删除流程Redis采用的…

SpringMVC异常处理器

1.异常 1.1 异常结构层次 异常主要分为&#xff1a;错误、一般性异常&#xff08;检查异常&#xff09;、运行期异常&#xff08;非受控异常&#xff09; 错误&#xff1a;如果应用程序出现了 Error&#xff0c;那么将无法恢复&#xff0c;只能重新启动应用程序&#xff0c;最…

VUE3-工作笔记-06

本节&#xff1a;总结11月份学习的内容 1.如果有很多个功能是一样的&#xff0c;那就先写一个测试很多次&#xff0c;确定没有bug再全部改&#xff0c;不然辛辛苦苦全部改了之后&#xff0c;发现还是有bug又要重新改&#xff0c;最好是写成组件的形式&#xff0c;写成hook。 …

ACM第三周---周训---题目合集.

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.7 数据卷命令

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.7 数据卷命令10.7.1 数据卷10.7.2 操作数据卷10.7.3 直接…

度量方法总结

本文目录0 引言1 度量差异性1.1 闵可夫斯基距离&#xff08;Minkowski distance&#xff09;1.1.1 欧氏距离&#xff08;Euclidean distance&#xff09;1.1.2 曼哈顿距离&#xff08;Manhattan distance&#xff09;1.1.3 切比雪夫距离&#xff08;Chebyshev distance&#xf…

[附源码]JAVA毕业设计课程网站设计(系统+LW)

[附源码]JAVA毕业设计课程网站设计&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

Spring Boot 框架整合 MyBatis 连接数据库,详细说明

在我们日常的开发过程中&#xff0c;肯定不可避免的会使用到数据库以及 SQL 语句。比如&#xff0c;刚开始学习 Java 的时候可能会遇到 JDBC&#xff0c;它是连接 Java 和数据库的桥梁&#xff0c;我们可以使用 JDBC 来建立与数据库之间的连接并且执行相应的 SQL 语句。虽然 JD…

数据结构—List集合

文章目录一、ArrayList集合1&#xff0c;ArrayList集合的特点2&#xff0c;ArrayList集合的一些方法添加元素个数获取指定位置元素指定位置插入元素替换元素移除元素判断是否为空判断是否包含元素移除指定元素迭代器遍历集合二、LinkedList集合1&#xff0c;LinkedList集合的特…

Ra-01SC/Ra-01SCH模组驱动

目录简介硬件准备设备清单接线说明重要函数说明调试联系我们简介 本文档主要介绍Ra-01SC/Ra-01SCH模组驱动例程使用方法&#xff1b; 硬件准备 设备清单 硬件数量Ra-001SC/Ra-01SCH 模组2个杜邦线若干USB转TTL模块2个STM32F103C8T6开发板2个安卓线2根 接线说明 STM32F103C…

[论文阅读] 颜色迁移-直方图渐进式颜色迁移

[论文阅读] 颜色迁移-直方图渐进式颜色迁移 文章: 有2篇相关的文章, 都为同一作者 [Progressive histogram reshaping for creative color transfer and tone reproduction], [code未公开][Progressive color transfer for images of arbitrary dynamic range], [code未公开]…

qt模块feature QT_FEATURE_* qt_lib_*.pri QT_CONFG qtConfig

qt为方便对代码进行删减&#xff0c;将代码拆分成很多模块&#xff0c;对每个模块梳理出feature&#xff0c;为了简化程序的使用和其他目的&#xff0c;qt还对每个模块分成public模块和private模块&#xff08;比如core分为core和core-privare模块&#xff0c;但两者公用同一个…

迭代器失效问题

目录 一、vector迭代器失效问题 1、resize,reserve,insert,assign,push_back可能引起底层空间改变 2、指定位置元素的删除操作erase 3、Linux下&#xff0c;g编译器对迭代器失效的检测不是非常严格&#xff0c;处理也没有vs下极端 4、与vector类似&#xff0c;string在插入…

java swing(GUI) MySQL实现的飞机票预定系统源码带视频运行教程

大家好&#xff0c;今天给大家演示一下由Java swing实现的飞机票预定系统&#xff0c;系统数据库原本采用的是Oracle&#xff0c;我又改了一个mysql版本的&#xff0c;所以这套系统有两个版本&#xff0c;一个是mysql数据库版的&#xff0c;一个是Oracle数据库版&#xff0c;演…

TypeScript是强类型,静态类型的Java Script

1. 编程语言的分类 As we all know, JavaScript 是弱类型&#xff0c;动态类型的编程语言。 首先我们来解释一下这几个名词&#xff1a; 动态类型语言&#xff1a;在 运行期间(Runtime) 才去做数据类型检查的语言。静态类型语言&#xff1a;在 编译其间(Compile) 就进行数据…

【Redis】事务秒杀案例

一、背景 在日常购物时&#xff0c;经常会有商家开展限时秒杀活动&#xff0c;我们如何使用redis来实现这种场景呢 二、业务代码 首先我们可以想到的是&#xff0c;我们可以把商品剩余数量和成功秒杀商品的用户id放在redis中 下面是我们的业务代码 package com.decade.con…

2022物联卡平台排名前十的公司

2022年物联网行业开始爆发&#xff0c;针对于企业设备联网的物联卡就显得格外重要了&#xff0c;而共享单车&#xff0c;移动支付&#xff0c;智慧城市&#xff0c;自动售卖机等企业采购物联卡会面临着各种问题&#xff0c;低价陷阱&#xff0c;流量虚假&#xff0c;管理混乱&a…