当前位置: 首页 > news >正文

【数据分析】时间序列

UTC时间:时间戳是以格林威治时间1970年01月01日00时00分00秒为基准计算所经过时间的秒数,是一个浮点数。Python的内置模块time和datetime都可以对时间格式数据进行转换,如时间戳和时间字符串的相互转换。

报错记录:AR has been removed from statsmodels and replaced with statsmodels.tsa.ar_model.AutoReg.

statsmodels版本太新了。根据提示将sm.tsa.AutoReg换成statsmodels.tsa.ar_model.AutoReg()还是没用,提示module ‘statsmodels.tsa.api’ has no attribute ‘ar_model’。

解决方案:改成sm.tsa.AutoReg. 或者事先from statsmodels.tsa.ar_model import AutoReg

一些小使用

获取当前日期

# datetime模块date类的today()方法获取当前日期
import datetime
print(datetime.date.min)
print(datetime.date.max)
print(datetime.date.today())
print(datetime.date.today().year)
print(datetime.date.today().month)
print(datetime.date.today().day)

在这里插入图片描述


# datetime模块datetime类的today()方法获取当前日期和时间
import datetime
print(datetime.datetime.now())
print(datetime.datetime.min)
print(datetime.datetime.max)
print(datetime.datetime.today())
print(datetime.datetime.today().year)
print(datetime.datetime.today().month)
print(datetime.datetime.today().day)
print(datetime.datetime.today().hour)
print(datetime.datetime.today().hour)

在这里插入图片描述


UTC时间

import datetime
# 创建一个时间戳(以秒为单位)
timestamp = 22  
# 带UTC时区时间
dt_with_timezone = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc)
print("带UTC时区时间:", dt_with_timezone)
# 不带UTC时区时间
dt_without_timezone = datetime.datetime.fromtimestamp(timestamp)
print("不带UTC时区时间", dt_without_timezone)

在这里插入图片描述


# 时间戳
import time 
print(time.time())
print(time.localtime())  # 获取到当前时间的元组
print(time.mktime(time.localtime()))  
# 一周的第几天(周一是0,0-6)、一年的第几天(从1开始,1-366)、夏时令(是夏时令1,不是0,未知-1)。

在这里插入图片描述


字符串和时间转换

# 字符串和时间转换
#利用time模块的strftime()函数可以将时间戳转换成系统时间。
import time
time_str = time.strftime(("%Y-%m-%d %H:%M:%S"),time.localtime())
print(time_str)# 可以用strptime函数将日期字符串转换为datetime数据类型,
import datetime 
print(datetime.datetime.strptime('2022-01-15','%Y-%m-%d'))# 可以用Pandas的to_datetime()函数将日期字符串转换为datetime数据类型。
# to_datetime()函数转化后的时间是精准到时分秒精度的
import pandas as pd
print(pd.to_datetime('2022/01/15'))

时间差

# 3. 时间运算--时间差
# 利用datetime将时间类型数据进行转换,然后利用减法运算计算时间的不同之处
# 默认输出结果转换为用(“天”,“秒”)表达
import datetime
delta = datetime.datetime(2022,1,16)-datetime.datetime(2021,1,1,9,15)
print(delta)
print(delta.days)
print(delta.seconds)

自回归模型AR(Autoregressive model/AR)

定义

这里只介绍一下AR的定义,具体步骤见参考里的文章

通俗一点讲,就是用过去时间点的数据预测未来时间点的数据。
具体公式如下:
X t = a 1 X t − 1 + a 2 X t − 2 + . . . + a p X t − p = ∑ j = 1 p a j X t − j + ε t X_t = a_1X_{t-1} + a_2X_{t-2} +...+a_pX_{t-p} =\sum^{p}_{j=1}a_jX_{t-j}+\varepsilon_t Xt=a1Xt1+a2Xt2+...+apXtp=j=1pajXtj+εt
X t X_t Xt=历史数据 X t − j X_{t-j} Xtj的加权和+随机扰动 ε t \varepsilon_t εt的叠加;
p p p为自回归模型的阶数,因此成为 p p p阶自回归模型,记为 A R ( p ) AR(p) AR(p)
a 1 , a 2 . . . a p a_1,a_2...a_p a1,a2...ap A R ( p ) AR(p) AR(p)模型的自回归系数
ε t ∼ N ( 0 , 2 ) \varepsilon_t \sim N(0,^2 ) εtN(0,2)

python实现

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm  # 导入模型IndexData = pd.read_csv('./data/timeseries_data.csv')
data = IndexData['close']  # 选择关闭交易时的数据
temp = np.array(data)  # 转换成数组
model =sm.tsa.AutoReg(temp,lags = 1)  # 训练模型 
results_AR = model.fit() # 训练模型plt.figure(figsize=(20,10)) 
plt.plot(temp,'b',label='Close')
plt.plot (results_AR.fittedvalues,'r',label='AR model')  # results_AR.fittedvalues是模型拟合后的结果
plt.legend()

滑动平均模型(moving average model/MA)

滑动平均(moving average model/MA)模型也称移动平均模型,是用过去各个时期的随机干扰预测误差的线性组合来表达当前预测值。
q q q阶MA模型(MA( q q q))的公式:
X t = μ + a t − θ 1 a t − 1 − . . . − θ q a t − q = μ + a t − ∑ i = 1 p θ i a t − i X_t = \mu+a_t-\theta_1a_{t-1}-...-\theta_qa_{t-q} = \mu + a_t -\sum^{p}_{i=1}\theta_{i}a_{t-i} Xt=μ+atθ1at1...θqatq=μ+ati=1pθiati
其中 μ \mu μ为常量。
MA(1)举例: X t X_t Xt为第 t t t天股价,而 a t a_t at为第 t t t天的新闻影响。当天的股价受当天新闻影响,也受昨天新闻影响 a t − 1 a_{t-1} at1(但影响力要弱些,所以要乘上系数)。

python实现

报错记录:AttributeError: module ‘statsmodels.tsa.api’ has no attribute ‘ARMA’
从版本 0.12 开始,statsmodels 库不再具有单独的 ARMA 类。应该使用 ARIMA 类,该类可以处理自回归 (AR) 和移动平均 (MA) 分量。

import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as smIndexData = pd.read_csv('./data/timeseries_data.csv')
data = IndexData['close']
temp = np.array(data)model = sm.tsa.ARIMA(temp, order=(0, 0,10))
results_MA = model.fit()plt.figure(figsize=(20, 10))
plt.plot(temp, 'b', label='close')
plt.plot(results_MA.fittedvalues,color = 'red',label ='MA')
plt.legend(fontsize = 15)
plt.show()

自回归滑动平均(Autoregressive moving average model/ARMA)模型

定义

ARMA模型就是AR模型和MA模型混合,具体公式如下:
X t = [ ∑ i = 1 p a i X t − i ] + [ μ + a t − ∑ i = 1 q θ i a t − i ] X_t = [ \sum^{p}_{i=1}a_{i}X_{t-i} ]+ [ \mu +a_t -\sum^{q}_{i=1}\theta_{i}a_{t-i}] Xt=[i=1paiXti]+[μ+ati=1qθiati]
由此可见,ARMA( p p p,0)模型就是AR ( p p p) 模型,ARMA(0, q q q)模型就是MA( q q q)模型。 μ \mu μ?

python实现

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData= pd.read_csv('./data/timeseries_data.csv')
data =IndexData['close']
temp =np.array(data)
p = 3
q = 10
model = sm.tsa.ARIMA (temp,order=(p,0,q))
results_ARMA = model.fit()plt.figure(figsize=(20,4*5))
plt.plot(temp,'b',label='close')
plt.plot(results_ARMA.fittedvalues,'r',label='ARMA model')
plt.legend()

在这里插入图片描述

自回归差分滑动平均(Autoregressive Integrated Moving Average model/ARIMA)模型

ARIMA模型在ARMA模型基础上考虑了时间序列的差分,ARIMA模型有三个参数ARIMA(p,d,q),p为自回归AR项数,q为滑动平均MA项数,d为使序列平稳所做的差分次数(阶数)。
差分后是对序列的差分的结果建立模型而不是真正的序列:例如**ARIMA(p,1,q)**相当于对差分序列 { x t – x t − 1 } \{x_t–x_{t−1}\} {xtxt1}进行 ARMA(p,q) 回归。

# 输出ARIMA模型的拟合效果图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData = pd.read_csv('./data/timeseries_data.csv')
IndexData = IndexData.set_index(IndexData['date'])IndexData['colseDiff_1']=IndexData['close'].diff(1)#1阶差分处理
IndexData['closeDiff_2']=IndexData['colseDiff_1'].diff(1)#2阶差分处理
IndexData.plot(subplots=True,figsize=(20,15))data = IndexData['closeDiff_2']
temp = np.array (data)
p=2;d = 2;q=10
model = sm.tsa.ARIMA(temp,order = (p,d,q))
results_ARIMA = model.fit()
plt.figure (figsize=(20,10))
plt.plot (temp,'b',label='closeDiff_2')
plt.plot (results_ARIMA.fittedvalues,'r',label='ARIMA model')
plt.legend()

在这里插入图片描述
在这里插入图片描述

参考

时间序列分析—自回归(AR) - 蜡笔小xi的文章 - 知乎
时间序列(二):初识自回归模型AR、滑动平均模型MR - Big冯的文章 - 知乎
建模算法系列二十三:ARMA模型 - Lvy-呀的文章 - 知乎

相关文章:

【数据分析】时间序列

UTC时间:时间戳是以格林威治时间1970年01月01日00时00分00秒为基准计算所经过时间的秒数,是一个浮点数。Python的内置模块time和datetime都可以对时间格式数据进行转换,如时间戳和时间字符串的相互转换。 报错记录:AR has been re…...

【图像算法相关知识点】

【图像算法工程师】 什么是图像处理? 图像处理是指对数字图像进行处理和分析,以达到特定的目的。例如,调整图像的颜色、对比度、亮度等参数,进行图像增强、去噪、分割、特征提取等操作,以及应用计算机视觉算法实现目标…...

竹云筑基,量子加密| 竹云携手国盾量子构建量子身份安全防护体系

9月23日-24日,2023量子产业大会在安徽合肥举行。作为量子科技领域行业盛会,2023年量子产业大会以“协同创新 量点未来”为主题,展示了前沿的量子信息技术、产业创新成果,并举办主旨论坛、量子科普讲座等系列专项活动。量子信息作为…...

数据结构P46(2-1~2-4)

2-1编写算法查找顺序表中值最小的结点&#xff0c;并删除该结点 #include <stdio.h> #include <stdlib.h> typedef int DataType; struct List {int Max;//最大元素 int n;//实际元素个数 DataType *elem;//首地址 }; typedef struct List*SeqList;//顺序表类型定…...

基于BERT模型进行文本处理(Python)

基于BERT模型进行文本处理(Python) 所有程序都由Python使用Spyder运行。 对于BERT&#xff0c;在运行之前&#xff0c;它需要安装一些环境。 首先&#xff0c;打开Spyder。其次&#xff0c;在控制台中单独放置要安装的&#xff1a; pip install transformers pip install tor…...

妙鸭相机功能代码复现

妙鸭相机功能代码复现 妙鸭相机主要实现人脸替换与人脸高清增强修复功能。可通过两种方式实现Roop和Lora模型。 RooP笔记 基础模型:inswapper_128.onnx 人脸分析模型:insightface 高清增强模型:gfpgan 大体流程为通过insightface检测出人脸,替换人脸,使用gfpgan对人…...

使用Java Spring Boot构建高效的爬虫应用

本文将介绍如何使用Java Spring Boot框架来构建高效的爬虫应用程序。通过使用Spring Boot和相关的依赖库&#xff0c;我们可以轻松地编写爬虫代码&#xff0c;并实现对指定网站的数据抓取和处理。本文将详细介绍使用Spring Boot和Jsoup库进行爬虫开发的步骤&#xff0c;并提供一…...

归并排序与非比较排序详解

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; &#x1f354;前言&#xff1a; 上篇博客我们讲解了非常重要的快速排序&#xff0c;相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…...

第85步 时间序列建模实战:CNN回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍CNN回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome i…...

【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

1、算法描述 1. MIMO (多输入多输出)&#xff1a;这是一个无线通信系统中使用的技术&#xff0c;其中有多个发送和接收天线。通过同时发送和接收多个数据流&#xff0c;MIMO可以增加数据速率和系统容量&#xff0c;同时提高信号的可靠性。 2. BD (块对角化)&#xff1a;这是一…...

Uniapp 新手专用 抖音登录 获取用户头像、名称、openid、unionid、anonymous_openid、session_key

TC-dylogin 一定请选择 源码授权版 教程 第一步 将代码拷贝至您所需要的页面 该代码位置&#xff1a;pages/index.vue 第二步 修改appid和secret 第三步 获取appid和secret 获取appid和secret链接 注意事项 为了安全&#xff0c;我将默认的自己的appid和secret在云函数中删…...

openssl引擎开发踩坑小记

前言 在开发openssl引擎过程中&#xff0c;引擎莫名其妙的加载不上&#xff0c;错误如下图&#xff1a; 大概意思就是加载引擎动态库时失败了。 在网上一顿搜索后&#xff0c;也没找到想要的答案。 原因 许多引擎都是基于第三方动态库开发的&#xff0c;引擎本身在开发时&a…...

ubuntu 设置x11vnc服务

Ubuntu 18.04 设置x11vnc服务 自带的vino-server也可以用但是不好用&#xff0c;在ubuntu论坛上看见推荐的x11vnc&#xff08;ubuntu关于vnc的帮助页面&#xff09;&#xff0c;使用设置一下&#xff0c;结果发现有一些坑需要填&#xff0c;所以写下来方便下次使用 转载请说明…...

物理备份xtrabackup

物理备份&#xff1a; 直接复制数据库文件&#xff0c;适用于大型数据库环境&#xff0c;不受存储引擎的限制&#xff0c;但不能恢复到不同的MySQL版本。 1.完全备份-----完整备份&#xff1a; 每次都将所有数据&#xff08;不管自第一次备份以来有没有修改过&#xff09;&am…...

1.springcloudalibaba nacos2.2.3部署

前言 nacos是springcloudalibaba体系的注册中心&#xff0c;演示如何搭建最新稳定版本的linux搭建。 前置条件&#xff0c;安装好jdk1.8 一、二进制压缩包下载 1.1 下载压缩包 nacos下载 点击下载下载后得到二进制包如下 nacos-2.2.3.tar.gz二、安装步骤 2.1.解压二进制…...

Linux 查看是否安装memcached

telnet 127.0.0.1 11211这样的命令连接上memcache&#xff0c;然后直接输入stats就可以得到memcache服务器的版本 安装memcached &#xff1a; sudo apt-get install memcached...

设计模式14、命令模式 Command

解释说明&#xff1a;命令模式&#xff08;Command Pattern&#xff09;是一种数据驱动的设计模式&#xff0c;它属于行为型模式。请求以命令的形式包裹在对象中&#xff0c;并传递给调用对象。调用对象寻找可以处理该命令的合适对象&#xff0c;并把该命令传给相应的对象&…...

【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头

前言 最近在学go操作excel&#xff0c;毕竟在web开发里&#xff0c;操作excel是非常非常常见的。这里我选择用 excelize 库来实现操作excel。 为了方便和通用&#xff0c;我们需要把导入导出进行封装&#xff0c;这样以后就可以很方便的拿来用&#xff0c;或者进行扩展。 我参…...

【开发篇】二十、SpringBoot整合RocketMQ

文章目录 1、整合2、消息的生产3、消费4、发送异步消息5、补充&#xff1a;安装RocketMQ 1、整合 首先导入起步依赖&#xff0c;RocketMQ的starter不是Spring维护的&#xff0c;这一点从starter的命名可以看出来&#xff08;不是spring-boot-starter-xxx&#xff0c;而是xxx-s…...

OpenCV实现求解单目相机位姿

单目相机通过对极约束来求解相机运动的位姿。参考了ORBSLAM中单目实现的代码&#xff0c;这里用opencv来实现最简单的位姿估计. mLeftImg cv::imread(lImg, cv::IMREAD_GRAYSCALE); mRightImg cv::imread(rImg, cv::IMREAD_GRAYSCALE); cv::Ptr<ORB> OrbLeftExtractor …...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...