工具系列:TimeGPT_(4)预测区间数据

news2025/1/20 15:47:10

文章目录

    • 预测区间
    • 历史预测

预测区间

预测区间提供了对预测值的不确定性的度量。在时间序列预测中,预测区间根据您设置的置信水平或不确定性,给出了一个估计的范围,未来观测值将在其中。这种不确定性水平对于做出明智决策、风险评估和规划至关重要。

例如,95%的预测区间意味着在100次中,有95次实际未来值将落在估计范围内。因此,较宽的区间表示对预测的不确定性更大,而较窄的区间则表示更高的置信度。

在使用TimeGPT进行时间序列预测时,您可以根据需求设置预测区间的水平。TimeGPT使用符合性预测来校准这些区间。


# Importing the necessary module
from nixtlats.utils import colab_badge
colab_badge('docs/tutorials/4_prediction_intervals')

#| hide
from itertools import product

from fastcore.test import test_eq, test_fail, test_warns
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
True

import pandas as pd
from nixtlats import TimeGPT

/home/ubuntu/miniconda/envs/nixtlats/lib/python3.11/site-packages/statsforecast/core.py:25: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from tqdm.autonotebook import tqdm

# 定义TimeGPT对象,并传入token参数,该参数默认为os.environ.get("TIMEGPT_TOKEN"),也可以手动提供一个token
timegpt = TimeGPT(
    token = 'my_token_provided_by_nixtla'
)
# 创建一个TimeGPT对象,用于生成时间相关的文本
timegpt = TimeGPT()

使用TimeGPT进行时间序列预测时,您可以根据您的需求设置预测区间的级别(或级别)。以下是您可以执行此操作的方法:

# 从指定的URL读取CSV文件,并将其存储在DataFrame中
df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/air_passengers.csv')

# 显示DataFrame的前几行数据
df.head()
timestampvalue
01949-01-01112
11949-02-01118
21949-03-01132
31949-04-01129
41949-05-01121
# 导入所需模块和函数

# 使用timegpt模型对数据进行预测
# 参数说明:
# - df: 输入的数据框,包含时间戳和目标值
# - h: 预测的时间步长,这里设置为12
# - level: 预测的置信水平,这里设置为[80, 90, 99.7]
# - time_col: 时间戳列的名称,这里设置为'timestamp'
# - target_col: 目标值列的名称,这里设置为'value'
# 返回值为预测结果的数据框
timegpt_fcst_pred_int_df = timegpt.forecast(
    df=df, h=12, level=[80, 90, 99.7], 
    time_col='timestamp', target_col='value',
)

# 打印预测结果的前几行
timegpt_fcst_pred_int_df.head()
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: MS
INFO:nixtlats.timegpt:Restricting input...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
timestampTimeGPTTimeGPT-lo-99.7TimeGPT-lo-90TimeGPT-lo-80TimeGPT-hi-80TimeGPT-hi-90TimeGPT-hi-99.7
01961-01-01437.837921415.826453423.783707431.987061443.688782451.892136459.849389
11961-02-01426.062714402.833523407.694061412.704926439.420502444.431366449.291904
21961-03-01463.116547423.434062430.316862437.412534488.820560495.916231502.799032
31961-04-01478.244507444.885193446.776764448.726837507.762177509.712250511.603821
41961-05-01505.646484465.736694471.976787478.409872532.883096539.316182545.556275
# 使用timegpt模型对数据进行预测
# 预测6个时间步长的数据
# 预测置信度分别为80%, 90%, 99.7%
# 时间列为'timestamp',目标列为'value'
level_short_horizon_df = timegpt.forecast(
    df=df, h=6, level=[80, 90, 99.7], 
    time_col='timestamp', target_col='value',
)

# 检查预测结果的形状是否为(6, 8)
test_eq(
    level_short_horizon_df.shape,
    (6, 8)
)
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: MS
INFO:nixtlats.timegpt:Restricting input...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
# 定义一个列表test_level,包含两个元素80和90.5
test_level = [80, 90.5]

# 调用timegpt模块的forecast函数,对数据框df进行预测
# 预测的时间步长为12,置信水平为80和90.5
# 时间列为'timestamp',目标列为'value'
cols_fcst_df = timegpt.forecast(
    df=df, h=12, level=[80, 90.5], 
    time_col='timestamp', target_col='value',
).columns

# 使用assert语句进行断言,判断是否满足条件
# 条件为所有的字符串'TimeGPT-{pos}-{lv}'都在cols_fcst_df中
# pos取值为'lo'和'hi',lv取值为test_level中的元素
assert all(f'TimeGPT-{pos}-{lv}' for pos, lv in product(test_level, ['lo', 'hi']) )
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: MS
INFO:nixtlats.timegpt:Restricting input...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
# 导入timegpt模块中的plot函数

# 调用plot函数,传入以下参数:
# - df: 数据框,包含时间戳和值的列
# - timegpt_fcst_pred_int_df: 数据框,包含时间戳、预测值和置信区间的列
# - time_col: 时间戳列的名称
# - target_col: 值列的名称
# - level: 置信区间的水平,以列表形式提供,例如[80, 90]表示80%和90%的置信区间
timegpt.plot(
    df, timegpt_fcst_pred_int_df, 
    time_col='timestamp', target_col='value',
    level=[80, 90],
)

请注意,预测区间水平的选择取决于您的具体用例。对于高风险预测,您可能希望选择更宽的区间以考虑更多的不确定性。对于不太关键的预测,较窄的区间可能是可以接受的。

历史预测

您还可以通过添加add_history=True参数来计算历史预测的预测区间。

# 使用TimeGPT进行预测
# df: 输入的数据框,包含时间戳和目标值
# h: 预测的时间步长
# level: 置信水平,用于计算预测区间
# time_col: 时间戳列的名称
# target_col: 目标值列的名称
# add_history: 是否在预测结果中添加历史数据
timegpt_fcst_pred_int_historical_df = timegpt.forecast(
    df=df, h=12, level=[80, 90], 
    time_col='timestamp', target_col='value',
    add_history=True,
)

# 显示预测结果的前几行
timegpt_fcst_pred_int_historical_df.head()
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: MS
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
INFO:nixtlats.timegpt:Calling Historical Forecast Endpoint...
timestampTimeGPTTimeGPT-lo-80TimeGPT-lo-90TimeGPT-hi-80TimeGPT-hi-90
01951-01-01135.483673111.937767105.262830159.029579165.704516
11951-02-01144.442413120.896508114.221571167.988319174.663256
21951-03-01157.191910133.646004126.971067180.737815187.412752
31951-04-01148.769379125.223473118.548536172.315284178.990221
41951-05-01140.472946116.927041110.252104164.018852170.693789
# 绘制时间序列图
# 参数:
# df:原始数据集
# timegpt_fcst_pred_int_historical_df:时间序列预测结果的置信区间数据集
# time_col:时间列的列名
# target_col:目标列的列名
# level:置信区间的水平,可以是单个值或列表形式,表示置信区间的百分比
timegpt.plot(
    df, timegpt_fcst_pred_int_historical_df, 
    time_col='timestamp', target_col='value',
    level=[80, 90],
)

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

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

相关文章

牛客网SQL训练4—SQL进阶挑战

文章目录 一、增删改操作1. 插入记录2. 更新记录3. 删除记录 二、表与索引操作1. 表的创建、修改与删除2. 索引的创建、删除 三、聚合分组查询1. 聚合函数2. 分组查询 四、多表查询1. 嵌套子查询2. 合并查询3. 连接查询 五、窗口函数1. 专用窗口函数2. 聚合窗口函数 六、其他常…

国产芯片ACL16_S 系列 ,低成本物联网安全,可应用物联网认证、 SIM、防抄板和设备认证等产品上

ACL16_S 芯片是针对物联网认证、 SIM、防抄板和设备认证需求推出的高安全芯片。芯片采用 32 位 ARMCortex™-M0 系列内核,片内集成多种安全密码模块,包括 RSA/ECC DES/TDES、 SHA-1/-256、 AES-128/-192/-256 等国际安全算法,支持真随机数发…

检索增强生成(RAG)旨在解决大模型幻觉、知识更新缓慢和答案透明度不足等问题。

检索增强生成(RAG)旨在解决大模型幻觉、知识更新缓慢和答案透明度不足等问题。 据 Arxiv 页面显示,同济大学近日联手复旦大学研究团队,提出了一种名为“检索增强生成(RAG)”的方法,旨在解决大模…

基于ssm流浪动物救助及领养管理系统

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 项目介绍 随着信息化时代…

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预…

HTML+CSS制作动漫绿巨人

🎀效果展示 🎀代码展示 <!DOCTYPE html> <html lang="en" > <head>

NAS上使用Docker搭建Wiki.js构建云知识库

文章目录 NAS上使用Docker搭建Wiki.js、PostgreSQL和Nginx云知识库前置条件步骤1&#xff1a;获取wikijs的镜像步骤2&#xff1a;配置容器参数2.1 端口设置2.2 挂载设置2.3 环境变量设置&#xff08;配置数据库&#xff09; 步骤3. 启动界面3.1 切换语言3.2 GIT 配置3.3 用户和…

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…

【ARMv8M Cortex-M33 系列 2.3 -- SEGGER JFlash 烧写命令介绍】

文章目录 SEGGER JFlash 烧写命令介绍JFlash 配置文件 固件烧写地址介绍确定烧写地址 SEGGER JFlash 烧写命令介绍 本文以介绍烧写 Renesas RA4M2 为例&#xff0c;对 JFlash 进行简单介绍。它是 ARM Cortex-M33 微控制器的型号之一。烧写前你需要先确保你有正确的 .hex 或 .b…

前缀和——OJ题(二)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、和为 k 的子数组1、题目讲解2、思路讲解3、代码实现 二、和可被 K 整除的⼦数组1、题目讲…

【辐射场】3D Gaussian Splatting

三维高斯…喷喷 \, 3D Gaussian Splatting&#xff0c;下文简称3DGS&#xff0c;是好一段时间以来在三维内容创作和三维重建领域比较有热度的一项技术。 它属于基于图像的三维重建方法&#xff0c;意思就是你对现实物体或者场景拍照片&#xff0c;就能给你训练成一个场景模型&a…

ASP.Net实现新闻添加查询(三层架构,含照片)

目录 演示功能&#xff1a; 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 ​编辑 点击Button添加 步骤&#xff1a; 1、建文件 ​编辑 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper&#xff08;对数据库进行操作…

基于 AForge.Net 框架的扑克牌计算机视觉识别

© Conmajia 2012, Nazmi Altun 2011 Init. 24 May 2012 SN: 125.1 本文为翻译文章&#xff0c;已获原作者 Nazmi Altun 授权。 下载资源&#xff1a; 源代码&#xff08;148.6 KB&#xff09;、Demo&#xff08;3.1 MB&#xff09; 简介 &#xff08;图片上的字&#xf…

为什么要运营海外社媒?海外云手机能发挥什么作用?

基于海外社媒在全球范围内拥有的大量流量&#xff0c;海外社媒运营成为了品牌推广、内容创作和用户互动的重要途径。本文将探讨海外社媒运营的重要性&#xff0c;并介绍海外云手机在这一过程中的卓越帮助。 海外社媒运营的重要性 首先&#xff0c;海外社媒运营有助于企业扩大品…

OpenAI 2024年展望:Sam Altman愿望清单的深度解析

引言 Sam Altman 2023年11月22日 重回OpenAI 任CEO。 Sam Altman 2023年12月24日 发布新年需求统计。 OpenAI是一个美国人工智能研究实验室&#xff0c;由非营利组织OpenAI Inc&#xff0c;和其营利组织子公司OpenAI LP所组成。OpenAI 进行 AI 研究的目的是促进和发展友好的人…

Spring Boot程序输出远程访问IP

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringBoot开发》。&#x1f3af;&#x1f3af;…

HarmonyOS4.0系统性深入开发07创建一个ArkTS卡片

创建一个ArkTS卡片 在已有的应用工程中&#xff0c;创建ArkTS卡片&#xff0c;具体操作方式如下。 创建卡片。 根据实际业务场景&#xff0c;选择一个卡片模板。 在选择卡片的开发语言类型&#xff08;Language&#xff09;时&#xff0c;选择ArkTS选项&#xff0c;然后单…

动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本

涉及知识点 动态规划 多源最短路径 字典树 题目 给你两个下标从 0 开始的字符串 source 和 target &#xff0c;它们的长度均为 n 并且由 小写 英文字母组成。 另给你两个下标从 0 开始的字符串数组 original 和 changed &#xff0c;以及一个整数数组 cost &#xff0c;其中…

FreeRTOS基础知识(一)任务调度

1任务调度器简介&#xff08;熟悉&#xff09; 1.1抢占式调度 特点&#xff1a; 1、 高优先级抢占低优先级 2、高优先级任务不停止&#xff0c;低优先级无法运行 3、被抢占的任务会进入就绪态 举例 阐述一下啊Task1 2 3 任务优先级分别为1 2 3 &#xff08;freertos中数值越…

C1189#error: WinSock.h has already been included解决方案

最近在做项目移植过程中遇到这个报错&#xff0c;解决了半天。简单记录下解决方案&#xff0c;以供给大家提供一个思路。 原因&#xff1a; 在工程中使用了Boot库之后&#xff0c;使用了socket、tcp相关的头文件&#xff0c;在其他地方还是包括了头文件<windows.h>&…