Python统计实战:时间序列分析之Winters指数平滑法预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。

(以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。


练习题

下表是某地区2018-2023年各月份的社会消费品零售总额(单位:亿元)。

(1)绘制观测值图和按年折叠图,观察数据的变化特征和变化模式。

(2)使用Winters指数平滑法预测2024年各月份的社会消费品零售总额,并绘制预测图和预测的残差图,分析预测的效果。


绘图与分析

本期我们完成(2)题。

(1)题中的零售总额的折线图显示,各月份零售总额的走势有明显的季节成分和线性趋势,适合用Winters指数平滑模型进行预测。

Holt指数平滑模型适用于含有趋势成分但不含季节成分的时间序列的预测。如果时间序列中既含有趋势成分又含有季节成分,则可以使用Winters指数平滑模型进行预测。

构建Winters指数平滑模型

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.tsa.holtwinters import SimpleExpSmoothing, ExponentialSmoothing, Holt
plt.rcParams['font.sans-serif'] = ['Songti SC']
plt.rcParams['axes.unicode_minus'] = Falseexercise11_2 = pd.read_csv('exercise11_2.csv')df = pd.melt(exercise11_2, id_vars=['月份'], var_name='年份', value_name='零售总额')  # 融合数据
df['日期'] = df['年份'].astype(str) + '-' + df['月份'].astype(str)  # 添加带有年份和月份的日期列
df['日期'] = pd.to_datetime(df['日期'].map(lambda x: x.replace("年", "-").replace("月", "-01")))  # 创建时间序列# 拟合Winters模型(model_w),并确定模型参数α,β,γ以及模型系数a,b和s
model_w = ExponentialSmoothing(df['零售总额'], trend = 'add', seasonal = 'add', seasonal_periods = 12,initialization_method = 'estimated',).fit()

绘制Winters模型拟合图

# 绘制Winters模型拟合图
df['零售总额_hw'] = model_w.fittedvalues
plt.figure(figsize = (7, 4.5))
l1, = plt.plot(df['日期'], df['零售总额'], linestyle = '-', marker = 'o', linewidth = 1, markersize = 4)
l2, = plt.plot(df['日期'], df['零售总额_hw'], linestyle = '--', marker = '*', linewidth = 1, markersize = 4)
plt.legend(handles = [l1, l2], labels = ['零售总额', '拟合值'], loc = 'best', prop = {'size':10})
plt.xlabel('时间', size = 12)
plt.ylabel('零售总额', size = 12)

上图展示了Winters指数平滑拟合效果,从拟合值与实际值的接近程度来看,预测模型比较理想。

Winters模型2024年零售总额的预测

# Winters模型2024年零售总额的预测
model_w1 = model_w.forecast(12)
round(model_w1, 4)

以上数据为2024年12个月的零售总额的预测值。

绘制预测图和残差图

# 绘制预测图和残差图
import scipy# 图(a)预测图
plt.subplots(1, 2, figsize = (11, 4))
plt.subplot(121)ax = df['零售总额'].plot(marker = 'o', markersize = 4, linewidth = 1, color = 'black') # 绘制实际值
ax.set_ylabel('零售总额', size =12)
ax.set_xlabel('时间', size = 12)
# 绘制2024年12个月的预测值
model_w.forecast(12).plot(ax = ax, style = '--', marker = 'o', markersize = 4, color = 'red')
plt.xticks(range(0, 72, 12), df['年份'][::12])
plt.axvline(72, ls = '--', c = 'grey', linewidth = 1)
plt.title('(a)零售总额的Winters指数平滑预测', size = 13)# 图(b)残差图
plt.subplot(122)
res = model_w.resid
plt.scatter(range(len(res)), res, marker = '^')
plt.hlines(0, 0, 72, linestyle = '--', linewidth = 1, color = 'red')
plt.ylabel('时间', size = 12)
plt.xlabel('残差', size = 12)
plt.xticks(range(0, 72, 12), df['年份'][::12])
plt.title('(b)Winters指数平滑预测残差', size = 13)

左图中虚线右侧的圆点是2024年各月份的预测值。右图显示,残差基本上围绕0轴随机波动,表明说选择的Winters指数平滑预测模型基本上是合适的。但后期的残差明显大于前期的残差,存在异方差现象,因此可考虑选择其他模型。


都读到这里了,不妨关注、点赞一下吧!

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

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

相关文章

C到C嘎嘎的衔接篇

本篇文章,是帮助大家从C向C嘎嘎的过渡,那么我们直接开始吧 不知道大家是否有这样一个问题,学完C的时候感觉还能听懂,但是听C嘎嘎感觉就有点难度或者说很难听懂,那么本篇文章就是帮助大家从C过渡到C嘎嘎。 C嘎嘎与C的区…

企业级移动门户平台是什么?

企业级移动门户平台是为企业提供移动应用和服务的一站式平台。它将企业内部的应用程序和数据集成在一个统一的界面中,方便员工使用,提高工作效率和增强企业的数字化转型能力。WorkPlus作为一种企业级移动门户平台,为企业提供了全面的移动应用…

网络流问题

文章目录 1. 网络流问题基础1.1 概述1.2 常规算法1.3 总结 2. Ford-Fulkerson Algorithm 链接: B站学习视频 1. 网络流问题基础 1.1 概述 最大流问题主要是关于有向图问题。有向图中有m个边, n个节点,其中有一个节点为s[source],还有一个终点 t [sink]…

2A高效率18V输入同步降压稳压器SY8120

前言 SOT23-6封装SY8120外观和丝印:qG 某创批量价格4毛多 概述 SY8120I是一款高效率、同步降压型 DC/DC 转换器,能够提供 2A 负载电流。该SY8120I可在 4.2V 至 18V 的宽输入电压范围内工作,并集成了主开关和同步开关,具有非常低的…

前端JS特效第34波:jQuery支持拖拽图片上传的图片批量上传插件

jQuery支持拖拽图片上传的图片批量上传插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>jQuery支持拖拽图片上传的图片批…

freertos源码分析DAY3(二值/计数信号量)

目录 1. 二值信号量 1.1. 二值信号量的创建 1.2 任务中二值信号操作函数 1.2.1 二值信号量的释放 1.2.2 等待二值信号量资源函数 1.3 中断中二值信号量操作函数 1.3.1 中断中释放二值信号量 1.3.2 中断中接收信号量 2. 计数信号量 2.1 计数信号量的创建 信号量&#xff08;Sem…

Backpropagation

在使用gradient descent的时候&#xff0c;神经网络参数θ有很多参数&#xff08;w&#xff0c;b&#xff09;。那gradient就会是一个有成千上万维的vector。所以&#xff0c;Backpropagation在做的事情就是有效的把它&#xff08;上图左侧的向量&#xff09;计算出来。 复习一…

C++初学者指南-5.标准库(第一部分)--标准算法介绍

C初学者指南-5.标准库(第一部分)–标准算法介绍 文章目录 C初学者指南-5.标准库(第一部分)--标准算法介绍C的标准算法是&#xff1a;第一个示例组织输入范围自定义可调用参数并行执行(C17)迭代器和范围的类别错误消息命名空间std::ranges中的算法 (C20)算法参数图标相关内容 C的…

TS真的比JS更好吗?

前言 在讨论TypeScript&#xff08;TS&#xff09;是否比JavaScript&#xff08;JS&#xff09;更好时&#xff0c;我们需要明确“更好”这一概念的上下文和衡量标准。TypeScript和JavaScript在多个方面有着明显的区别&#xff0c;但它们并不是简单的“好”与“不好”的关系&a…

国产数据库VastBase与C/C++程序适配

背景 2022年底的项目&#xff0c;记录一下。 某项目后台使用C程序开发&#xff0c;使用的是OCI连接Oracle数据库。现需要做去O国产化适配改造。 本文聊聊C/C应用程序如何使用VastBase替换Oracle。 编译适配 开发包获取 从VastBase官方或接口人处获取OCI开发包&#xff0c;包含…

线程池笔记

笔记梳理 前言.PHONYC标准库头文件C/C通用或C特有头文件mkdirc_str()snprintfvsnprintfumaskopen函数可变参数列表va_startva_endfunctionalstatic_castpthread_cond_init_threads.emplace_backstd::bindstd::placeholdersThreadPool(const ThreadPool<T> &tp) dele…

博客前端项目学习day01

这里写自定义目录标题 登录创建项目配置环境变量&#xff0c;方便使用登录页面验证码登陆表单 在VScode上写前端&#xff0c;采用vue3。 登录 创建项目 检查node版本 node -v 创建一个新的项目 npm init vitelatest blog-front-admin 中间会弹出询问是否要安装包&#xff0c…

前端Vue组件化实践:打造自定义等宽tabs标签组件

在前端开发的世界里&#xff0c;随着业务复杂度的提升和需求的多样化&#xff0c;传统的整体式开发方式已经难以满足快速迭代和高效维护的需求。组件化开发作为一种重要的解决方案&#xff0c;正逐渐受到广大开发者的青睐。本文将结合Vue框架&#xff0c;探讨如何通过组件化开发…

标签-镜像拉取策略-重启策略-pod优雅终止-pod中容器资源限制-容器类型-容器守护进程-日志排错-容器命令exec-cp

一.标签 1.概述&#xff1a; 标签是附加到kubernets对象&#xff08;比如pod&#xff09;上的键值对&#xff0c;标签可以在创建时附加到对象&#xff0c;随后也可以随时添加修改&#xff1b;标签不支持唯一性。 在k8s中大多数资源都是通过标签进行关联的&#xff08;如pod与s…

DP(3) | 0-1背包 | Java | LeetCode 1049, 494, 474 做题总结

1049. 最后一块石头的重量 II 和 LC 416.分割等和子集 类似 思路&#xff08;我没有思路&#xff09;&#xff1a; 两块石头相撞&#xff0c;这里没有想到的一个点是&#xff0c;相撞的两个石头要几乎相似 以示例1为例&#xff0c;stones [2,7,4,1,8,1]&#xff0c;如果从左到…

【数组、特殊矩阵的压缩存储】

目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组 概述&#xff1a;数…

HyperSD - 会画草图就能玩AI绘画,AI一键手绘,实时同步 本地一键整合包下载

字节跳动的Lightning团队发布的新图像模型蒸馏算法Hyper-SD&#xff0c;是一项在图像处理和机器学习领域的重要进展。这项技术通过创新的方法提升了模型在不同推理步骤下的性能&#xff0c;同时保持了模型大小的精简。 基于这个算法模型&#xff0c;一个很实用的功能出现了&am…

绝区零 双闪 双闪-三轴 工具

绝区零 双闪 双闪-三轴 工具 0. 演示视频 绝区零&#xff1a;≈100%的极致双闪和双闪-三轴 绝区零&#xff1a;手残党也能打双闪-三轴 1. 基本信息 作者: GMCY系列: 工具系列仓库: GitHub | Gitee话题(GitHub): Tools \ ZenlessZoneZero创建时间: 2024/07/14 2. 声明 !!! 使…

【Linux】重定向 | 为什么说”一切皆文件?“

目录 前言 1.文件描述符分配规则 2.dup2 重定向接口 3.重定向 3.1>输出重定向 3.2>>追加重定向 3.3<输入重定向 3.4 shell 模拟实现< > 3.5 理解> 4. 理解“Linux 下一切皆文件” 前言 问&#xff1a;fd 为什么默认从 3 开始&#xff0c;而不是…

LeetCode热题100刷题15:200. 岛屿数量、所有可达路径、118. 杨辉三角、287. 寻找重复数、84. 柱状图中最大的矩形

200. 岛屿数量 借助DFS寻找整个图的连通分量数&#xff0c;DFS将一个连通分量中的节点标记为visited&#xff0c;res记录连通分量数&#xff0c;最后返回res class Solution { public:const int dir[4][2] {1,0,0,1,-1,0,0,-1};void dfs(vector<vector<char>>&a…