时间序列分析方法之 -- 自回归模型(Autoregressive Model, AR)

news2024/11/27 13:48:20

目录

原理

适用情况

Python 示例代码

结论


 

原理

自回归模型(Autoregressive Model, AR)是一种时间序列模型,用于描述一个时间序列的当前值与其过去值之间的关系。自回归模型假设时间序列的当前值是其过去若干值的线性组合,并且这些值之间的关系可以通过模型参数来描述。

自回归模型的一般形式为 AR(p),其中 p 表示自回归模型的阶数,即使用的过去值的数量。AR(p) 模型的数学表达式如下:

eq?X_t%20%3D%20c%20+%20%5Csum_%7Bi%3D1%7D%5E%7Bp%7D%20%5Cphi_i%20X_%7Bt-i%7D%20+%20%5Cepsilon_t

其中:

  • eq?X_t 表示时间 t 的实际值。
  • c 是常数项(截距)。
  • eq?%5Cphi_i​ 是自回归系数。
  • eq?%5Cepsilon_t 是白噪声误差项,假设为均值为零且方差为常数的独立同分布随机变量。

适用情况

自回归模型适用于以下情况:

  1. 平稳时间序列:自回归模型适用于平稳时间序列,即时间序列的均值、方差和自协方差在时间上不随时间变化。
  2. 短期预测:自回归模型通常用于短期预测,因为它只依赖于时间序列的过去值。
  3. 无季节性:自回归模型不适用于具有明显季节性模式的时间序列。对于具有季节性特征的时间序列,可以考虑使用季节性自回归模型(SAR)或其他季节性时间序列模型。

Python 示例代码

以下是使用 Python 实现自回归模型的示例代码,利用 statsmodels 库进行建模和预测:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.ar_model import AutoReg
from statsmodels.tsa.stattools import adfuller

# 生成样本数据
np.random.seed(0)
data = np.random.randn(100).cumsum()

# 创建数据序列
data_series = pd.Series(data)

# 检查数据平稳性
result = adfuller(data_series)
print('ADF Statistic:', result[0])
print('p-value:', result[1])

# 应用自回归模型
p = 3  # 模型阶数
model = AutoReg(data_series, lags=p).fit()
print(model.summary())

# 进行预测
pred_start = len(data_series)
pred_end = len(data_series) + 10
predictions = model.predict(start=pred_start, end=pred_end, dynamic=False)

# 可视化结果
plt.figure(figsize=(12, 6))
plt.plot(data_series, label='Original Data')
plt.plot(range(pred_start, pred_end + 1), predictions, label='Predictions', color='red')
plt.legend()
plt.title('Autoregressive Model (AR)')
plt.show()

在上述代码中:

  1. 我们首先生成了一些样本数据,并将其创建为一个 Pandas 系列对象。
  2. 使用 adfuller 函数检查数据的平稳性。如果数据不是平稳的,可以考虑对数据进行差分以使其平稳。
  3. 使用 AutoReg 类拟合自回归模型,并打印模型摘要。
  4. 使用拟合好的模型进行预测,并将预测结果与原始数据进行可视化。

结论

自回归模型是一种有效的时间序列分析和预测方法,特别适用于平稳时间序列和短期预测。通过选择合适的模型阶数,自回归模型可以捕捉时间序列的动态特征,为实际应用中的时间序列数据提供有价值的洞察和预测。在实践中,可以结合数据的具体特征和目标需求,调整模型参数以获得更好的预测效果。

 

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

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

相关文章

Github 2024-07-26开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目2TypeScript项目2C++项目2HTML项目1Python项目1C#项目1Lua项目1JavaScript项目1Vue项目1C项目1免费编程学习平台:freeCodeCamp.org 创…

HANA-sum函数与sum() over(partition by ... order by ... )

sum函数与sum() over(partition by … order by … ) sum()函数就不介绍了。 sum() over(partition by … order by … )其实就是累加的过程具体化。 比如 有1,2,3,4 sum()就会得到10 sum() over(partition by … order by … ) 就会得到:1,3…

leetocde662. 二叉树最大宽度,面试必刷题,思路清晰,分点解析,附代码详解带你完全弄懂

leetocde662. 二叉树最大宽度 做此题之前可以先做一下二叉树的层序遍历。具体题目如下: leetcode102二叉树的层序遍历 我也写过题解,可以先看看学习一下,如果会做层序遍历了,那么这题相对来说会简单很多。 具体题目 给你一棵…

数据结构 链式存储 +

int DeleteLinkList(LinkList *list, char *name); int ReviseLinkList(LinkList *list, char *name, DATATYPE data); int DestroyLinkList(LinkList *list); int InsertTailLinkList(LinkList *list, DATATYPE data); ​​​​​​​删除 修改​​​​​​​ 销毁 ​​​​​…

Anaconda、Pytorch安装

Anaconda 打开 Anaconda 官网 https://www.anaconda.com/ 点击右上角的 Free Download 可以选择相应的型号进行下载 如果版本不合适,可以进入 anaconda 的历史版本官网选择适合本机 python 版本的 anaconda 进行下载: https://repo.anaconda.com/arc…

Django-3.3创建模型

创建模型(models)的时候, 1:我们需要这个模型是哪个文件下面的模型(models),我们需要在配置文件中吧应用安装上(安装应用:INSTALLED_APPS) 2:找对…

【java计算机毕设】在线考试系统java MySQL ssm jsp maven项目设计代码前后端一体 寒暑假小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 2项目介绍 系统功能: ssm在线考试管理系统包括管理员、用户俩种角色。 管理员功能包括在线考试,参加考试,我的成绩,我的错题,资源大全,下载资源&#xf…

GUL图形化界面操作(下部)

目录 ​编辑 前言 Swing 窗口 注意点 新增的组件 进度条组件 开关按钮 多面板和分割面板 多面板 分割面板 ​编辑 选项窗口 对话框带三个选项是,否,取消。 对话框提示输入文本: 前言 修炼中,该篇文章为俺很久前的学习笔记 Swi…

Matlab类阿克曼车机器人运动学演示

v1是后驱动轮轮速, v2是转向角变化速度, 实际上我们只需要关注XQ, YQ和Phi的变化率。 通过这三项和时间步长, 我们就可以计算出变化量, 再结合初始值就能推断出每个时刻的值。 % 清理当前运行环境 % 清除所有变量 cle…

Windosw下Visual Studio2022编译FFmpeg(支持x264、x265、fdk-acc)

FFmpeg 7.0 版本移除了 6.0 之前已弃用的 API,无法向下兼容。所以编译的版本选择FFmpeg 6.1.1。 一、安装Visual Studio2022 可参考另外一篇文章:Windows安装Visual Studio2022 QT5.15开发环境_qt5.15.2 vs2022-CSDN博客 二、安装MSYS2 下载地址&…

企业创建百度百科有什么好处?

现如今,网络越来越发达,网络营销的方法百花齐放,对于企业和品牌来说,想要推广产品,就是提升知名度,让更多的人知道企业和品牌。 而百度现如今在中国的搜索市场上仍是巨头,而在百度上有权威,以及能提升企业知名度的就是百度百科了。 今天&…

Linux基础复习(二)

前言 本文介绍了一下Linux命令行基本操作及网络配置 一、 命令行提示含义 [当前用户主机名 工作目录]$ 若当前用户是root,则最后一个字符为# 否则,最后一个字符为$ 二、常用Linux命令及其解释 修改主机名 一般在创建一台主机后会使用hostname相关命…

《python程序语言设计》第6章13题 数列求和编写一个函数计算

正确代码 def sumNumber(integer_num):print(" i || m(i)")print("-"*30)a 0for i in range(1, integer_num 1):a i / (i 1)print("{:4d} || {:.4f}".format(i, a))sumNumber(20)结果如下

win11 安装 Gradle

一、win11 安装Gradle(7.5.1): 1.1、下载二进制包 Gradle下载页面 1.2、配置环境变量 变量名:GRADLE_HOME 变量值(二进制包解压路径):D:\develop-tool\gradle-7.5.1 变量名:GRADLE_USER_HOME 变量值&a…

qt总结--翻金币案例

完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…

Linux-IO操作之fcntl 和 ioctl

fcntl函数,也就是file control,提供了对文件描述符的各种操作。另一个常见的控制文件描述符的属性和行为的系统调用是ioctl,而且ioctl比fcntl能够执行更多的控制。但是,对于控制文件描述符常见的属性和行为,fcntl函数是…

认证中心:基于cookie和session实现单点登陆

流程图 参数 不同域名之下(不同父域名) cookiesessionredis 流程追踪 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数 sso认证中心发现用户未登录,将用户引…

Adobe Photoshop(PS) 2024软件下载(附下载链接)+PS教程

一、简介 Adobe Photoshop 2024(简称PS2024)是全球公认的专业图像处理和设计软件,它为摄影师、设计师和艺术家等创意工作者提供了强大的工具和功能。这款软件是Adobe Creative Cloud创意云桌面程序中心中的明星产品,凭借其出色的…

微信小程序之调查问卷

一、设计思路 1、界面 调查问卷又称调查表,是以问题的形式系统地记载调查内容的一种形式。微信小程序制作的调查问卷,可以在短时间内快速收集反馈信息。具体效果如下所示: 2、思路 此调查问卷采用服务器客户端的方式进行设计,服…

乐尚代驾八订单执行三

司机到达代驾终点,代驾结束了。结束代驾之后, – 获取额外费用(高速费、停车费等) – 计算订单实际里程(实际与预估有偏差) – 计算代驾实际费用 – 系统奖励 – 分账信息 – 生成最终账单 计算订单…