位置: IT常识 - 正文

【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose(时序21-21-21-47)

编辑:rootadmin
【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 理解python sm.tsa.seasonal_decompose

推荐整理分享【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose(时序21-21-21-47),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:时序17,时序还是时序,时序gan,时序gan,时序 序时,时序17,时序 序时,时序 序时,内容如对您有帮助,希望把文章链接给更多的朋友!

在做时序列分析的时候,好多教程都告诉你要把时序列分解成趋势,季节性,残差,然后画图看一下有没有趋势变化,有没有季节性。像这样:

import statsmodels.api as smdecomposition = sm.tsa.seasonal_decompose(train['Count'] ,model='addictive', period=7)decomposition.plot()

相信大家都很熟悉python的这个包和命令,但是具体是如何分解的却不是特别清楚。今天就来详细理解一下一个时序列是如何一步一步被分解的。

举个例子理解概念

首先我们默认每个时序列在某个时间点i的数值,都可以分解成三部分,分别是趋势,季节性和残差,以此来解释时序列的变化。

比如,某列车2021年2月的总乘客人数1000人,这1000人如何理解,为什么是1000人? 2018年2月还是100人,2021年1月还是300人,为啥到2021年2月就1000人了?

首先,可能因为列车开通后乘车人数有逐年上升的趋势,每年增加100人,2018年到2021年的3年之间增加了300人,只考虑趋势原因的话2021年2月应该是:100+300=400人

然后,和2021年1月分相比,2021年2月是春节,每年的2月乘客都1月多200人,只考虑春节这个季节性原因的话2021年2月应该是:300+200=500人

把季节性和趋势原因都考虑进去应该是:400+500=900人,但2021年2月是1000人,剩下的100人如何解释呢?暂时解释不了, 我们就把它作为残差(误差)

理解了例子公式就简单了

就是下面这个公式: y_i = t_i + s_i + n_i

【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose(时序21-21-21-47)

y_i :在i时间点的数值(乘客人数,销量等等) t_i :在i时间点的趋势 s_i :在i时间点的季节性 n_i:在i时间点的残差

当然在上面这个例子里,我们假设这个y(乘客人数),是线性增长的,所以我们用加法把每个要素加起来,来解释y的变化。 如果y不是线性增长,而是比如指数增长的,那就不能用加法,需要用乘法,即: y_i = t_i * s_i * n_i

decomposition = sm.tsa.seasonal_decompose(train[‘Count’], model=‘addictive’, period=7)

那么,上面这句代码里的model就应该从‘addictive’, 改成‘multiplicative’

一步步分解趋势,季节性,残差

所以趋势,季节性,残差都是咋分出来的呢。计算方法貌似有很多,我们理解一个最基本的。 五步走: 1: 确定季节性变化的期间 2: 分离 趋势 3: 分离 季节性+残差 4: 分离 季节性 5: 分离 残差

1: 确定季节变化的期间

这个期间就是decompose命令里面的period。看一下你的数据图。我手头的数据是日次的,看起来以周为单位有一个先升高再下降的循环。所以我把period定为7(7天的意思)

2: 分离 趋势

7这个期间定好之后,我们用移动平均的方法分离趋势。为了方便解释,我都用excel做示例。

计算的时候,以7的中心为开始计算移动平均。所以时序列最开始的3个三个数和最后的3个数是没有值的。 个人理解,如果季节性以周次出现,那么以7为单位计算的时候,比如每周六日数值都很高,这个因素就每个cycle(周)里面都有,平均下来的数值,就可以看作是摒弃了季节性的趋势的影响。 可以看到计算结果和python的decompose是一样的

3: 分离 季节性+残差

分离好趋势之后,如果你选的是model=‘addictive’,根据公式y_i = t_i + s_i + n_i, 我们只要用数值减去趋势那部分,就能得到季节性+残差的部分了。如果是multiplicative,那就是除以趋势。 结果如下,季节性+残差

4,5: 分离 季节性 残差

接下来就从季节性+残差里面把季节性分出来。比如,如果时序列是周次季节性,那么周一的数值,就减去所有周一的数值的平均,周二的数值就减去所有周二的平均,以此类推,剩下的就是残差了。当然这只举了一个分离季节性的超简单逻辑。python里面decompose貌似用了更复杂的计算方法来计算季节性,由于篇幅过大暂且省略。

验证以下python的结果

看一下用python的seasonal_decompose算完,季节性,趋势,残差,加起来是不是真的等于原来的数值。 代码如下

decomposition = sm.tsa.seasonal_decompose(train['Count'],model='addictive', period=7) #Additivetrend = decomposition.trendseasonal = decomposition.seasonal residual = decomposition.residtrain['trend']=trendtrain['seasonal']= seasonaltrain['residual']= residualtrain['add'] = train['trend']+train['seasonal'+*train['residual']

结果如下,Count果然和三个加起来的数值是一样的。 前三行的trend是没有值的。这是因为以7为中心算移动平均的时候,中心点位置是第四行,前3行没有值也就可以理解了。 就写到这里。欢迎大家指导讨论!

【参考文献】 https://timeseriesreasoning.com/contents/time-series-decomposition/

本文链接地址:https://www.jiuchutong.com/zhishi/295152.html 转载请保留说明!

上一篇:在暴风雪中畅游的鸬鹚,德国黑森州 (© Wilfried Martin/Getty Images)(在暴风雪中求生)

下一篇:元素点击报错:element click intercepted(元素鼠标失灵了怎么办)

  • 华为b2手环怎么调时间和日期(华为b2手环怎么连接手机蓝牙)

    华为b2手环怎么调时间和日期(华为b2手环怎么连接手机蓝牙)

  • 华为电子秤怎么连手机(华为电子秤怎么开机)

    华为电子秤怎么连手机(华为电子秤怎么开机)

  • 手机竖屏变横屏怎么弄(手机竖屏变横屏怎么设置)

    手机竖屏变横屏怎么弄(手机竖屏变横屏怎么设置)

  • 小米10开发者选项在哪(小米10开发者选项最佳设置)

    小米10开发者选项在哪(小米10开发者选项最佳设置)

  • 抖音3分钟视频怎么发呢(抖音3分钟视频怎么发朋友圈)

    抖音3分钟视频怎么发呢(抖音3分钟视频怎么发朋友圈)

  • 华为nova4e相机放大多少倍(华为nova4照相)

    华为nova4e相机放大多少倍(华为nova4照相)

  • qq群打卡点赞怎么取消(qq打卡点赞别人能看到吗)

    qq群打卡点赞怎么取消(qq打卡点赞别人能看到吗)

  • 京东会员最长最多可以开几年(京东会员有效期上限)

    京东会员最长最多可以开几年(京东会员有效期上限)

  • 四个摄像头有什么用(4个摄像头都干嘛用的)

    四个摄像头有什么用(4个摄像头都干嘛用的)

  • oppoa52指纹在哪里(oppoa52手机指纹消失了怎么办)

    oppoa52指纹在哪里(oppoa52手机指纹消失了怎么办)

  • 电脑版钉钉可以打卡吗(电脑版钉钉可以签到吗)

    电脑版钉钉可以打卡吗(电脑版钉钉可以签到吗)

  • qq在线状态怎么显示电量(qq在线状态怎么设置手机型号)

    qq在线状态怎么显示电量(qq在线状态怎么设置手机型号)

  • qq手机2g在线什么意思(qq手机2g在线可以收到消息吗)

    qq手机2g在线什么意思(qq手机2g在线可以收到消息吗)

  • 京东如何更改实名认证(怎么修改京东实名)

    京东如何更改实名认证(怎么修改京东实名)

  • 苹果手机的存储空间在哪里可以看见(苹果手机的存储文件夹在哪里)

    苹果手机的存储空间在哪里可以看见(苹果手机的存储文件夹在哪里)

  • 苹果手机怎么关闭wifi自动更新(苹果手机怎么关闭5g开关)

    苹果手机怎么关闭wifi自动更新(苹果手机怎么关闭5g开关)

  • win10第二次才能开机(win10第一次开机死机第二次开机才能运行)

    win10第二次才能开机(win10第一次开机死机第二次开机才能运行)

  • iphone11pro max双卡还是单卡(iphone11pro max双卡都可以接电话吗)

    iphone11pro max双卡还是单卡(iphone11pro max双卡都可以接电话吗)

  • 手机京东取消退款在哪(如何取消退款京东)

    手机京东取消退款在哪(如何取消退款京东)

  • 手机红外遥控功能,重要吗(手机红外遥控功能是什么意思)

    手机红外遥控功能,重要吗(手机红外遥控功能是什么意思)

  • 高德地图没有语音播报怎么回事(高德地图没有语音助手)

    高德地图没有语音播报怎么回事(高德地图没有语音助手)

  • 预约滴滴快车怎么预约怎么预约(滴滴出行怎样预约快车)

    预约滴滴快车怎么预约怎么预约(滴滴出行怎样预约快车)

  • 怎么用手机开电视(怎么用手机开电动车)

    怎么用手机开电视(怎么用手机开电动车)

  • elementUI中的el-table表头和内容全部一行显示完整(elementui中的el-tab-pane为什么内容会为0)

    elementUI中的el-table表头和内容全部一行显示完整(elementui中的el-tab-pane为什么内容会为0)

  • pytorch初学笔记(六):DataLoader的使用(pytorch入门教程(非常详细))

    pytorch初学笔记(六):DataLoader的使用(pytorch入门教程(非常详细))

  • 什么是所得税税负
  • 个人所得税代扣代缴手续费返还政策
  • 出租房屋转为投资房屋
  • 资产负债表的货币资金根据什么填
  • 注销实收资本账务处理
  • 小公司可以不交五险一金吗
  • 应收票据周转率多少合适
  • 营业以后再次装修进什么会计科目?
  • 产品管理不足
  • 购入包装物
  • 公司迁移注册地税务问题
  • 增值税发票没有地址和开户行有效吗
  • 计提工资会计科目怎么写
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 脚手架出租生意
  • 一般纳税人上个月没有申报这个月申报不了
  • 小微企业每年可以开多少发票北京
  • 无租房合同可以取住房公积金吗
  • 有子公司一定要交社保吗
  • 企业销售产品的会计分录
  • 代收代缴水电费能开发票吗
  • 公司接受承兑汇票的风险
  • 购进产品样品怎么做分录
  • 原材料和加工费能分着开票么
  • 母公司投资子公司怎么做账
  • 驾校收入与成本的关系
  • win11开机后无法操作
  • php-ml
  • 关闭非系统进程
  • 公司转让股权交不交增值税
  • 购买用友财务软件
  • 没有以前年度损益调整属于哪类科目
  • 上月未开发票的销项税,已经申报缴税,在本月开了票,应该如何填报?
  • vscode插件大全
  • smarty模板数学运算示例
  • 详解16型人格
  • opencv图像识别特定形状
  • php源码 数据库
  • 天然气零售企业
  • 进项税额转出会计分录
  • 劳务支出和应付职工薪酬
  • 回购股票并注销影响所有者权益吗
  • springsecurity有什么用
  • 进项税额已经抵扣
  • 以前年度损益调整账务处理分录
  • 固定资产以什么资金形态存在
  • 存货跌价准备是谁的备抵账户
  • 可以单独设置一个人三天可见吗
  • 固定资产未登记入账
  • 增值税专票什么用处
  • 外币支付账户
  • 小规模纳税人销售自己使用过固定资产
  • 销售包装物计入其他应收款吗
  • 预收账款计入应收账款怎么弄
  • 客户以个人名义打对公户现在要求开专票可以吗
  • 金税盘初始化密码
  • 报销如果没有发票怎么补救
  • 如何设置银行存款日记账
  • mac所有窗口最小化
  • solaris 11.4
  • assoc.exe=exefile什么意思
  • centos5.6
  • 电脑找不到关机选项了怎么关机
  • awk 筛选有特定字符
  • .mcp是什么文件
  • win7设置宽带拨号
  • bootstrap designer
  • 合并多个js文件
  • unity自带的代码编辑器
  • require jquery
  • 用javascript写简单网页
  • js实现登录功能
  • js判断pc还是移动
  • shell 比较大小
  • java arraysort
  • javascript基础入门教程
  • 爱山东怎样查询医保余额
  • 临沂学生医疗保险多少钱
  • 税务局的人为什么那么拽
  • 重庆税务总局重庆电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设