首页 > 编程知识 正文

python实现时间序列预测(时间序列分析及应用r语言pdf)

时间:2023-05-03 09:21:40 阅读:84605 作者:3652

利用Auto ARIMA的高性能时间序列模型的构筑(带Python和r码的) ) () ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

个人资料

想象一下——你的任务是根据现有的历史数据预测新一代iPhone的价格。 这包括季度销售、每月支出和苹果资产负债表的一系列功能。 作为数据科学家,为什么要对这类问题进行分类? 当然是时间序列建模。

从预测某产品的销售到估算家庭用电,时间序列预测是任何数据科学家都必须知道的核心技能之一。 可以使用各种技术进行时间序列预测。 在这里,我们将介绍最有效的技术之一,叫做Auto ARIMA的技术。

首先,让我们了解ARIMA的概念,然后进入正题——Auto ARIMA。 为了巩固我们的概念,我们训练数据集,用Python和r语言实现它。

目录

1 .什么是时间序列?

2 .时间序列预测的方法

3. ARIMA的介绍

4.ARIMA的实现步骤

5 .为什么需要Auto ARIMA?

由Auto ARIMA实现的情况(航空乘客数据集) ) ) ) ) ) ) ) ) )。

7. Auto ARIMA如何选择参数?

如果熟悉移动平均、指数平滑、ARIMA等时间序列及其技术,可以直接跳到第4部分。 对于初学者,从下一节开始,包括时间序列和各种预测技术的简单介绍。

什么是时间序列? 在学习处理时间序列数据的技术之前,首先需要了解什么是时间序列,以及它与其他类型的数据有什么不同。 时间序列的正式定义如下。 这是在同一时间间隔测量的一系列数据点。 简单地说,时间序列是以一定的时间间隔记录的特定的值,时间间隔可以是小时、每天、每周、每10天等。 时间序列的特殊性在于序列中的每个数据点都与以前的数据点相关。 通过以下几个例子更清楚地了解这一点。

例1:

假设有一个从特定公司获得贷款的人的数据集,如下表所示。 你认为每一行都与前一行有关吗? 当然不是! 一个人的贷款根据他的经济状况和需要而定(也可能有家庭规模等其他因素,但为了简单,只考虑收入和贷款的因素)。 此外,这些数据不是在特定的时间间隔收集的,只与公司何时收到贷款申请有关。

例2:

让我再举一个例子。 假设有一个包含每天空气中二氧化碳水平的数据集。 以下是截图。 那么,通过查看过去几天的数值,可以预测第二天的二氧化碳总量吗? 当然可以。 如果观察的数据每天都被记录,则时间间隔为一定(24小时)。

现在你一定对这个有直觉了。 第一个例子是简单的回归问题,第二个例子是时间序列问题。 这里的时间序列问题也可以用线性回归解决,但这不是最好的方法,因为它忽略了这些值和相对过去的值之间的关系。 下面我们来看一些解决时间序列问题的常用技术。

2 .时间序列预测的方法

时间序列预测有多种方法。 本节将简要介绍这些内容。 以下列举的所有技术的详细说明和python代码均可在“7种时间序列预测技术(带python代码)”的文章中找到。

(1)朴素的预测法)在该预测技术中,新数据点的值被预测为与前一数据点的值相等。 所有预测的新值都采用以前的值,因此结果为平行线。

(2) .简单平均法)将以下值视为所有过去值的平均值。 这个预测法必须优于“朴素的预测法”。 因为其结果无法成为平行线。 但是,简单平均法考虑了过去的所有值,那些值可能不一定是有用的。 例如,如果需要预测今天的温度,只需要考虑前7天内的温度,而不是一个月前的温度。

class="pgc-img-caption">

(3) 移动平均法:这是对前两个技术的改进。不取前面所有点的平均值,而是将“n”个先前的点的平均值作为预测值。

(4)加权移动平均法:加权移动平均是带权重的移动平均,先前的‘n’个值被赋予不同的权重。

(5) 简单指数平滑法:在这种技术中,更大的权重分配给更近期的观测结果,来自遥远过去的观测值则被赋予较小的权重。

(6) 霍尔特(Holt)线性趋势模型:该方法考虑了数据集的趋势。所谓趋势,指的是数据的递增或递减性质。假设旅馆的预订数量每年都在增加,那么我们可以说预订数量呈现出增加的趋势。该方法的预测函数是值和趋势的函数。

(7)笨笨的薯片(Holt Winters)方法:该算法同时考虑了数据的趋势和季节性。例如,一家酒店的预订数量在周末很高,而在工作日则很低,并且每年都在增加;因此存在每周的季节性和增长的趋势。

3. ARIMA简介

在本节中,我们将简要介绍ARIMA,这将有助于理解Auto Arima。在“时间序列完整教程”一文中对ARIMA, (p,q,d) 参数,ACF、 PACF图和具体实现做出了详细的解释。

ARIMA是一种非常流行的时间序列预测统计方法,它是自回归综合移动平均(Auto-Regressive Integrated Moving Averages)的首字母缩写。ARIMA模型建立在以下假设的基础上:

数据序列是平稳的,这意味着均值和方差不应随时间而变化。通过对数变换或差分可以使序列平稳。输入的数据必须是单变量序列,因为ARIMA利用过去的数值来预测未来的数值。

ARIMA有三个分量:AR(自回归项)、I(差分项)和MA(移动平均项)。让我们对每个分量做一下解释:

AR项是指用于预测下一个值的过去值。AR项由ARIMA中的参数‘p’定义。“p”的值是由PACF图确定的。MA项定义了预测未来值时过去预测误差的数目。ARIMA中的参数‘q’代表MA项。ACF图用于识别正确的‘q’值,差分顺序规定了对序列执行差分操作的次数,对数据进行差分操作的目的是使之保持平稳。像ADF和KPSS这样的测试可以用来确定序列是否是平稳的,并有助于识别d值。

4. ARIMA实现步骤

实现ARIMA模型的通用步骤如下:

1) 加载数据:构建模型的第一步当然是加载数据集

2) 预处理:根据数据集定义预处理步骤。包括创建时间戳、日期/时间列转换为d类型、序列单变量化等。

3) 序列平稳化:为了满足假设,应确保序列平稳。这包括检查序列的平稳性和执行所需的转换

4) 确定d值:为了使序列平稳,执行差分操作的次数将确定为d值

5) 创建ACF和PACF图:这是ARIMA实现中最重要的一步。用ACF PACF图来确定ARIMA模型的输入参数

6) 确定p值和q值:从上一步的ACF和PACF图中读取p和q的值

7) 拟合ARIMA模型:利用我们从前面步骤中计算出来的数据和参数值,拟合ARIMA模型

8) 在验证集上进行预测:预测未来的值,

9) 计算RMSE:通过检查RMSE值来检查模型的性能,用验证集上的预测值和实际值检查RMSE值

5. 为什么我们需要Auto ARIMA?

虽然ARIMA是一个非常强大的预测时间序列数据的模型,但是数据准备和参数调整过程是非常耗时的。在实现ARIMA之前,需要使数据保持平稳,并使用前面讨论的ACF和PACF图确定p和q的值。Auto ARIMA让整个任务实现起来非常简单,因为它去除了我们在上一节中提到的步骤3至6。下面是实现AUTO ARIMA应该遵循的步骤:

1) 加载数据:此步骤与ARIMA实现步骤1相同。将数据加载到笔记本中

2) 预处理数据:输入应该是单变量,因此删除其他列

3) 拟合Auto ARIMA:在单变量序列上拟合模型

4) 在验证集上进行预测:在验证集基础上进行预测

5) 计算RMSE:用验证集上的预测值和实际值检查RMSE值

正如您所看到的,我们完全绕过了选择p和q特性这一步骤。啊!可以松口气了!在下一节中,我们将使用一个假想数据集实现AutoArima。

6. Python和R语言的实现

我们将使用国际航空旅客数据集,此数据集包含每月乘客总数(以千为单位),它有两栏-月份和乘客数。您可以从此链接下载数据集。

以下是同一问题的R代码:

7. AUTOARIMA如何选择最佳参数

在上述代码中,我们仅需用.efit()命令来拟合模型,而不必选择p、q、d的组合,但是模型是如何确定这些参数的最佳组合的呢?Auto ARIMA生成AIC和BIC值(正如您在代码中看到的那样),以确定参数的最佳组合。AIC(Akaike信息准则)和BIC(Bayes信息准则)值是用于比较模型的评估器。这些值越低,模型就越好。

如果您对AIC和BIC背后的数学感兴趣,请查看这些链接。

8. 尾注和进一步阅读

我发现自动ARIMA是进行时间序列预测的最简单的技术。知道一条捷径是件好事,但熟悉它背后的数学也同样重要的。在这篇文章中,我略过了ARIMA如何工作的细节,但请务必阅读本文中提供的链接的文章。为了方便您参考,这里再次提供一遍链接:

A Comprehensive Guide for beginners to Time Series Forecast in PythonComplete Tutorial to Time series in R7 techniques for time series forecasting (with python codes)

l 时间序列预测初学者综合指南(Python)

l 时间序列完整教程(R)

l 时间序列预测的七种技术 (附python代码)

建议大家做一下这个课程中的练习题:“时间序列实战问题”。您也可以参加我们的培训课程,参与到实战中来,“时间序列预测”课程为您提供一个领先的开端。

祝您好运,请在下面的评论部分提供您的反馈并提出问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。