首页 > 其他分享 >Prophet在R语言中进行时间序列数据预测

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

时间:2024-06-05 20:34:06浏览次数:14  
标签:Box 语言 Prophet Cox 序列 数据 预测

原文链接:http://tecdat.cn/?p=7327

原文出处:拓端数据部落公众号

 

您将学习如何使用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逆转换。``

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


最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测

标签:Box,语言,Prophet,Cox,序列,数据,预测
From: https://www.cnblogs.com/tecdat/p/18233734

相关文章

  • 基于c语言的UDP客户端、服务端二合一基础代码
    基于c语言的UDP客户端、服务端二合一基础代码示意图:准备好了吗,以下是基础代码:/****************************************************************************************************************************************字节序:数据以字节流的方式进行传输,底层都是......
  • 基于c语言的TCP客户端、服务端基础代码
    基于c语言的TCP客户端、服务端基础代码基本流程:客户端:#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>#include<errno.h>#include<sys/socket.h>#include<netinet/in.h>#include<netinet/......
  • python 函数 形参前带*或者两个星** 收集元组或者字典,实参前带星*或者两个星** 解开序
    函数的形参前面带一个星*,代表着不定长参数,实际上是收集了不定长的实参,作为一个元组。形参前面带两个星**,代表可以接收不定长参数,并且调用该函数时实参要指定参数名,实际上是收集了一个不定键个数的字典。实参前带一个星*,表示解开当前的序列,再做为参数传递。实参前带两个星**,表示......
  • 初识C语言(03)—学习笔记
    常见关键字C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造关键字的。归类下面是按照关键字的用途不同进行的归类变量的命名规则有意义,例如intage;floatsalary;等名字必须是字母、数字、下划线组成,不能有特殊字符,同时不能以数字......
  • C语言排序
    一、排序的运用生活中排序随处可见,比如我们高考时的排名,大学学校水平的排名等,打开京东,可以发现每样商品按照不同的方式排序,比如综合,销量,价格。其内部需要排序代码来完成。二、常见的排序算法一、交换排序一、冒泡排序冒泡排序是一种最容易想到的排序,但是其效率不高,没有实......
  • Java1.8语言+ springboot +mysql + Thymeleaf 全套家政上门服务平台app小程序源码
    Java1.8语言+springboot+mysql +Thymeleaf 全套家政上门服务平台app小程序源码家政系统是一套可以提供上门家政、上门维修、上门洗车、上门搬家等服务为一体的家政平台解决方案。它能够与微信对接、拥有用户端小程序,并提供师傅端app,可以帮助创业者在不需要相关技术人员及......
  • go语言方法之封装
        一个对象的变量或者方法如果对调用方是不可见的话,一般就被定义为“封装”。封装有时也叫信息隐藏,同时也是面向对象编程的一个方面。    Go语言只有一种控制可见性的手段:大写首字母的标识符会从定义它们的包中被导出,小写的字母则不会。这种限制包内成员的......
  • 使用C语言实现链式栈
    一、栈的基本概念        栈(Stack)是一种数据结构,它遵循“后进先出”(LIFO,LastInFirstOut)的原则。这意味着最后一个插入栈的元素最先被删除,你可以理解成一堆盘子,每次只能取最上面的盘子,删除的时候也只能删除最上面的盘子。这样是不是更容易理解了呢?栈的基本操作包......
  • 2024-06-05:用go语言,给定三个正整数 n、x 和 y, 描述一个城市中由 n 个房屋和 n 条街道
    2024-06-05:用go语言,给定三个正整数n、x和y,描述一个城市中由n个房屋和n条街道连接的情况。城市中存在一条额外的街道连接房屋x和房屋y。需要计算对于每个街道数(从1到n),有多少房屋对满足从一个房屋到另一个房屋经过的街道数正好为该街道数。在结果数组中,索引k对......
  • 赛博斗地主——使用大语言模型扮演Agent智能体玩牌类游戏。
    通过大模型来实现多个智能体进行游戏对局这个想对已经比较成熟了无论是去年惊艳的斯坦福小镇还是比如metaGPT或者类似的框架都是使用智能体技术让大模型来操控,从而让大模型跳出自身“预测下一个token”的文字功能去探索更多的应用落地可能性。不过一直没有真正操作过,直到前段时间......