位置: 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(元素鼠标失灵了怎么办)

  • excel怎么选中自己想选范围(excel怎么选中自己想选范围打印)

    excel怎么选中自己想选范围(excel怎么选中自己想选范围打印)

  • iwatch丢失怎么看最后的定位

    iwatch丢失怎么看最后的定位

  • steam怎么改手机号(steam怎么改手机号原来手机号用不了了)

    steam怎么改手机号(steam怎么改手机号原来手机号用不了了)

  • 华为给苹果充电怎么弄(华为给苹果充电有害吗)

    华为给苹果充电怎么弄(华为给苹果充电有害吗)

  • 华为荣耀v20可以用电信4g卡吗(华为荣耀v20可以开空调吗)

    华为荣耀v20可以用电信4g卡吗(华为荣耀v20可以开空调吗)

  • 没有互关怎么看好友圈(没有互关怎么看对方直播)

    没有互关怎么看好友圈(没有互关怎么看对方直播)

  • 抖音怎么看对方多久前在线(抖音怎么看对方收藏)

    抖音怎么看对方多久前在线(抖音怎么看对方收藏)

  • 恢复回收站清空的照片(恢复回收站清空的文件怎么恢复)

    恢复回收站清空的照片(恢复回收站清空的文件怎么恢复)

  • 质量更新和功能更新卸载哪个(质量更新和功能更新 驱动)

    质量更新和功能更新卸载哪个(质量更新和功能更新 驱动)

  • 电话卡不用了不注销会有影响吗(电话卡不用了不注销可以吗)

    电话卡不用了不注销会有影响吗(电话卡不用了不注销可以吗)

  • 荣耀v30pro耳机孔在哪里(荣耀v30pro耳机插孔)

    荣耀v30pro耳机孔在哪里(荣耀v30pro耳机插孔)

  • 网速快慢看上传还是下载(mi pay支付失败怎么办)

    网速快慢看上传还是下载(mi pay支付失败怎么办)

  • 苹果线不支持此配件怎么解决(苹果线显示不支持此配件)

    苹果线不支持此配件怎么解决(苹果线显示不支持此配件)

  • 三星s8十怎么截屏(三星s8十怎么截图)

    三星s8十怎么截屏(三星s8十怎么截图)

  • qq录屏会提醒对方吗(qq录屏会提醒对方嘛)

    qq录屏会提醒对方吗(qq录屏会提醒对方嘛)

  • 照片大小怎么改到20kb(照片大小怎么改到1m)

    照片大小怎么改到20kb(照片大小怎么改到1m)

  • 淘宝换货后还能退货吗(淘宝换货后还能申请退款吗)

    淘宝换货后还能退货吗(淘宝换货后还能申请退款吗)

  • 图像编码属于多媒体中的(图像编码属于多态编码吗)

    图像编码属于多媒体中的(图像编码属于多态编码吗)

  • 芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

    芒果tv怎么停止自动续费(芒果tv怎么停止续费vip微信)

  • 华为手机美颜怎么设置(华为手机美颜怎么样)

    华为手机美颜怎么设置(华为手机美颜怎么样)

  • 手机流量1兆是多少(流量1兆是1g吗)

    手机流量1兆是多少(流量1兆是1g吗)

  • 华为mate30pro有呼吸灯吗(华为mate 30 pro怎么设置呼叫转移)

    华为mate30pro有呼吸灯吗(华为mate 30 pro怎么设置呼叫转移)

  • vivo实况模式怎么打开(vivos9实况模式)

    vivo实况模式怎么打开(vivos9实况模式)

  • 互联网四项原则是哪四项(互联网四种能力是什么)

    互联网四项原则是哪四项(互联网四种能力是什么)

  • 如何修改微信昵称(如何修改微信昵称名字)

    如何修改微信昵称(如何修改微信昵称名字)

  • 苹果可以滚动截屏吗(苹果可以滚动截长图吗)

    苹果可以滚动截屏吗(苹果可以滚动截长图吗)

  • 华为mate9双卡双待怎么用(华为mate9双卡双待怎么设置)

    华为mate9双卡双待怎么用(华为mate9双卡双待怎么设置)

  • 抖音里怎么把视频和照片合在一起(抖音里怎么把视频剪短)

    抖音里怎么把视频和照片合在一起(抖音里怎么把视频剪短)

  • 水电费进项税转出填在哪一栏位
  • 内账收入按实际收到确认吗
  • 社保基数在哪里调整
  • 一般纳税人留底税额抵减欠缴税额
  • 用票据付款怎么做账
  • 预计所有者权益怎么计算
  • 租赁财产的残值处理
  • 发票二维码只有一半可以收吗
  • 按月按季申报
  • 无形资产使用费计入什么科目
  • 公司投资控股其他公司如何做账务处理
  • 咨询服务费要交税吗
  • 或有负债记入哪个科目?
  • 抵税更正申报需要多久
  • 保证金算费用吗
  • 不适用研究开发费用税前加计扣除政策的有
  • 固定资产折旧会计做账
  • 领用库存商品的消费税
  • 发票已认证但是没申报跨年度了怎么办
  • 银行手续费会开发票吗
  • 预征率3%
  • svchost进程很多怎么办
  • win11 pin失效
  • 微软 windows11
  • 担保公司计提的费用
  • 无限极分类mysql
  • php 可变变量
  • php请求接口数据
  • 个人房屋出租税票怎么开
  • symfony2.4的twig中date用法分析
  • 合并财务报表抵消原理
  • 实际出资大于注册资金
  • thinkphp6.0完全开发手册
  • timit数据集
  • python如何设置窗口背景色
  • 底薪和提成分开发合法吗
  • 个体工商户该如何开发票
  • 蔬菜免征增值税优惠
  • 公司记账可以不开发票吗
  • 付款后发票的扩张怎么开
  • mysql分片sql
  • 一般纳税人适用3%税率情况
  • 费用多报销了,但已经给了,怎么办
  • 预付房租如何做分录
  • 交易性金融资产的账务处理
  • 以前年度损益调整借贷方向
  • 计提增值税如何计算
  • 发票红冲重开是退个税吗
  • 待抵扣进项税额和待认证进项税额的区别
  • 注册资金没显示
  • 托盘费用怎么核算
  • 公允价值变动损益是什么意思
  • 长期借款的利息费用计入什么科目
  • 行政性罚款有哪些
  • 防御sql注入的方法有哪几种
  • win7系统一键还原方法
  • winadm.exe - winadm是什么进程
  • windows 8.1更新
  • win7共享设置(详细图文步骤)
  • win10怎么添加蓝牙驱动
  • win 7关闭睡眠
  • Win10 Mobile 10586.312提前体验
  • linux不小心删除目录怎么恢复
  • android xui
  • 微信小程序商品列表代码
  • js获取秒数
  • js定义数字
  • dos命令中运行文件的命令
  • shell脚本运行linux命令
  • vue router详解
  • 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rathe
  • shell字符串比较相等
  • unity3d android 插件
  • jquery修改表格数据
  • javascript面向对象 第三方类库
  • Android网络通讯哪个最简单
  • 企业所得税国家和地方分配比例
  • 购电脑折旧的会计分录
  • 山东发票认证勾选平台网址
  • 今年烟草税多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设