季节性分解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  • 季节性因素的时间序列

存在季节性因素的时间序列(如月度数据、季度数据)可被分解为趋势因子、季节性因子、随机性因子

趋势因子(trend componnet):能捕捉到长期变化;

季节性因子(seasonal componnet):能捕捉到一年内的周期性变化;

随机(误差)因子:(irregular/error component):捕捉到哪些不能被趋势或季节效应解释的变化

  • 加法模型

07085740_tgDE.png

 其中 时刻 t 的观测值即这一时刻的趋势值、季节效应以及随机影响之和

  • 乘法模型

07085741_gF1y.png

 即趋势项、季节项和随机影响相乘

  • 将时序做分解

将时序分解为趋势项、季节项和随机项常用的方法用LOESS光滑做季节性分解,可以通过R中的 stl() 函数

stl(ts, s.window = , t.window = ,)

ts(必填):将要分解的时序

s.window(必填) :控制季节效应变化的速度,较小的值意味着更快的变化速度, 令 s.window = "periodic"可使得季节效应在各年间都一样

t.window:控制趋势项变化的速度

更多的细节查看help(stl)

虽然stl()函数只能处理相加模型,相乘模型总可以通过对数变换转换成相加模型:

07085741_tx9N.png

  用经过对数变换的序列拟合出的相加模型也总可以再转化回原始尺度

#使用R中自带的 AirPssengers序列描述1949-1960每个月国际航班的乘客
> plot(AirPassengers) #画出序列
> lAirPassengers <- log(AirPassengers)  #对其进行对数变换
> plot(lAirPassengers,ylab="log(AirPassengers)")
> fit <- stl(lAirPassengers,s.window = "period")#进行分解 ,如下图1
> plot(fit)  #绘制分解后的图
> fit$time.series  #time.series,它包括每个观测值中的趋势、季节以及随机效应,直接使用fit$time.series返回对数变换后的时序,通过exp(fit$time.series)可将结果转化为原始尺度
            seasonal    trend     remainder
Jan 1949 -0.09164042 4.829389 -0.0192493585
Feb 1949 -0.11402828 4.830368  0.0543447685
Mar 1949  0.01586585 4.831348  0.0355884457
Apr 1949 -0.01402759 4.833377  0.0404632511
May 1949 -0.01502478 4.835406 -0.0245905300
Jun 1949  0.10978976 4.838166 -0.0426814256
Jul 1949  0.21640041 4.840927 -0.0601151688
Aug 1949  0.20960587 4.843469 -0.0558624690
Sep 1949  0.06747156 4.846011 -0.0008273977
Oct 1949 -0.07024836 4.850883 -0.0015112948
Nov 1949 -0.21352774 4.855756  0.0021630667
Dec 1949 -0.10063625 4.864586  0.0067346600
Jan 1950 -0.09164042 4.873417 -0.0368443057
Feb 1950 -0.11402828 4.883282  0.0670284530
Mar 1950  0.01586585 4.893147  0.0397474219
Apr 1950 -0.01402759 4.903156  0.0161459950
May 1950 -0.01502478 4.913166 -0.0698276070
Jun 1950  0.10978976 4.925404 -0.0312477713
Jul 1950  0.21640041 4.937643 -0.0182444833
Aug 1950  0.20960587 4.954420 -0.0282273969
Sep 1950  0.06747156 4.971197  0.0239260449
Oct 1950 -0.07024836 4.991662 -0.0310647612
Nov 1950 -0.21352774 5.012127 -0.0624008823
Dec 1950 -0.10063625 5.031094  0.0111846224
Jan 1951 -0.09164042 5.050061  0.0183131352
Feb 1951 -0.11402828 5.065044  0.0596196836
Mar 1951  0.01586585 5.080027  0.0858909418
Apr 1951 -0.01402759 5.093932  0.0138460280
May 1951 -0.01502478 5.107837  0.0546824937
Jun 1951  0.10978976 5.121064 -0.0490698826
Jul 1951  0.21640041 5.134291 -0.0573861680
Aug 1951  0.20960587 5.146131 -0.0624323009
Sep 1951  0.06747156 5.157972 -0.0105077415
Oct 1951 -0.07024836 5.169854 -0.0120089320
Nov 1951 -0.21352774 5.181735  0.0153990463
Dec 1951 -0.10063625 5.194803  0.0178207135
Jan 1952 -0.09164042 5.207871  0.0254326447
Feb 1952 -0.11402828 5.220493  0.0864920261
Mar 1952  0.01586585 5.233115  0.0137094563
Apr 1952 -0.01402759 5.244400 -0.0318757882
May 1952 -0.01502478 5.255686 -0.0311749995
Jun 1952  0.10978976 5.266916  0.0077889001
Jul 1952  0.21640041 5.278147 -0.0564679741
Aug 1952  0.20960587 5.291899 -0.0125671875
Sep 1952  0.06747156 5.305651 -0.0307885329
Oct 1952 -0.07024836 5.323035 -0.0005129219
Nov 1952 -0.21352774 5.340418  0.0206040218
Dec 1952 -0.10063625 5.355790  0.0127045234
Jan 1953 -0.09164042 5.371162 -0.0014064946
Feb 1953 -0.11402828 5.381701  0.0104415885
Mar 1953  0.01586585 5.392241  0.0557248228
Apr 1953 -0.01402759 5.398479  0.0751345805
May 1953 -0.01502478 5.404716  0.0440308724
Jun 1953  0.10978976 5.406792 -0.0235205660
Jul 1953  0.21640041 5.408869 -0.0493198945
Aug 1953  0.20960587 5.407808 -0.0116118099
Sep 1953  0.06747156 5.406747 -0.0061588541
Oct 1953 -0.07024836 5.407020  0.0150868577
Nov 1953 -0.21352774 5.407292 -0.0008072455
Dec 1953 -0.10063625 5.412628 -0.0086865700
Jan 1954 -0.09164042 5.417964 -0.0082032035
Feb 1954 -0.11402828 5.425823 -0.0753528534
Mar 1954  0.01586585 5.433683  0.0100370842
Apr 1954 -0.01402759 5.442676 -0.0036988730
May 1954 -0.01502478 5.451670  0.0186755182
Jun 1954  0.10978976 5.463574  0.0025856037
Jul 1954  0.21640041 5.475477  0.0185495056
Aug 1954  0.20960587 5.488954 -0.0183873611
Sep 1954  0.06747156 5.502431 -0.0130746073
Oct 1954 -0.07024836 5.515678 -0.0117077856
Nov 1954 -0.21352774 5.528925 -0.0021914704
Dec 1954 -0.10063625 5.543178 -0.0088199260
Jan 1955 -0.09164042 5.557431  0.0231469788
Feb 1955 -0.11402828 5.572621 -0.0075538774
Mar 1955  0.01586585 5.587810 -0.0164272509
Apr 1955 -0.01402759 5.602576  0.0061625730
May 1955 -0.01502478 5.617343 -0.0038959909
Jun 1955  0.10978976 5.631685  0.0110981305
Jul 1955  0.21640041 5.646027  0.0347266908
Aug 1955  0.20960587 5.660026 -0.0203074185
Sep 1955  0.06747156 5.674026  0.0015057273
Oct 1955 -0.07024836 5.687411 -0.0040342159
Nov 1955 -0.21352774 5.700795 -0.0192075831
Dec 1955 -0.10063625 5.713683  0.0145740752
Jan 1956 -0.09164042 5.726571  0.0140435478
Feb 1956 -0.11402828 5.738688 -0.0006422520
Mar 1956  0.01586585 5.750805 -0.0077690470
Apr 1956 -0.01402759 5.761271 -0.0010403672
May 1956 -0.01502478 5.771737  0.0053388421
Jun 1956  0.10978976 5.780581  0.0338845974
Jul 1956  0.21640041 5.789426  0.0176216235
Aug 1956  0.20960587 5.797448 -0.0031667752
Sep 1956  0.06747156 5.805470 -0.0008241663
Oct 1956 -0.07024836 5.813734 -0.0199006689
Nov 1956 -0.21352774 5.821998 -0.0063513051
Dec 1956 -0.10063625 5.831654 -0.0074325201
Jan 1957 -0.09164042 5.841310  0.0029031831
Feb 1957 -0.11402828 5.852625 -0.0314869189
Mar 1957  0.01586585 5.863941 -0.0048761755
Apr 1957 -0.01402759 5.875005 -0.0087747176
May 1957 -0.01502478 5.886069  0.0010740550
Jun 1957  0.10978976 5.894711  0.0405045167
Jul 1957  0.21640041 5.903354  0.0222834352
Aug 1957  0.20960587 5.907786  0.0289376116
Sep 1957  0.06747156 5.912218  0.0217253156
Oct 1957 -0.07024836 5.912909  0.0066639927
Nov 1957 -0.21352774 5.913600  0.0202392244
Dec 1957 -0.10063625 5.914570  0.0031777723
Jan 1958 -0.09164042 5.915539  0.0050470568
Feb 1958 -0.11402828 5.918512 -0.0424324225
Mar 1958  0.01586585 5.921485 -0.0457068326
Apr 1958 -0.01402759 5.924977 -0.0587474166
May 1958 -0.01502478 5.928470 -0.0190421600
Jun 1958  0.10978976 5.932704  0.0328523706
Jul 1958  0.21640041 5.936938  0.0431056910
Aug 1958  0.20960587 5.943328  0.0716243517
Sep 1958  0.06747156 5.949718 -0.0157750808
Oct 1958 -0.07024836 5.957409 -0.0038387222
Nov 1958 -0.21352774 5.965101 -0.0150005051
Dec 1958 -0.10063625 5.973333 -0.0526139823
Jan 1959 -0.09164042 5.981566 -0.0038213288
Feb 1959 -0.11402828 5.992040 -0.0432006658
Mar 1959  0.01586585 6.002514 -0.0120262807
Apr 1959 -0.01402759 6.015640 -0.0201986959
May 1959 -0.01502478 6.028767  0.0265120912
Jun 1959  0.10978976 6.042198  0.0049914005
Jul 1959  0.21640041 6.055628  0.0342466268
Aug 1959  0.20960587 6.065881  0.0506625860
Sep 1959  0.06747156 6.076134 -0.0058783006
Oct 1959 -0.07024836 6.084145 -0.0050832771
Nov 1959 -0.21352774 6.092156  0.0130161013
Dec 1959 -0.10063625 6.100500  0.0040231864
Jan 1960 -0.09164042 6.108844  0.0158822334
Feb 1960 -0.11402828 6.117934 -0.0351985510
Mar 1960  0.01586585 6.127024 -0.1050193083
Apr 1960 -0.01402759 6.135814  0.0116112609
May 1960 -0.01502478 6.144604  0.0273994037
Jun 1960  0.10978976 6.152986  0.0194908174
Jul 1960  0.21640041 6.161368  0.0551717057
Aug 1960  0.20960587 6.170124  0.0271500533
Sep 1960  0.06747156 6.178880 -0.0158702714
Oct 1960 -0.07024836 6.187594  0.0160525773
Nov 1960 -0.21352774 6.196307 -0.0166330133
Dec 1960 -0.10063625 6.204752 -0.0356905175

> exp(fit$time.series)#将结果转化为原始尺度
          seasonal    trend remainder
Jan 1949 0.9124332 125.1344 0.9809347
Feb 1949 0.8922327 125.2571 1.0558486
Mar 1949 1.0159924 125.3798 1.0362293
Apr 1949 0.9860703 125.6345 1.0412930
May 1949 0.9850875 125.8897 0.9757094
Jun 1949 1.1160434 126.2377 0.9582166
Jul 1949 1.2415994 126.5866 0.9416561
Aug 1949 1.2331919 126.9088 0.9456692
Sep 1949 1.0697998 127.2318 0.9991729
Oct 1949 0.9321623 127.8533 0.9984898
Nov 1949 0.8077298 128.4777 1.0021654
Dec 1949 0.9042619 129.6173 1.0067574
Jan 1950 0.9124332 130.7670 0.9638262
Feb 1950 0.8922327 132.0634 1.0693259
Mar 1950 1.0159924 133.3726 1.0405479
Apr 1950 0.9860703 134.7143 1.0162770
May 1950 0.9850875 136.0695 0.9325546
Jun 1950 1.1160434 137.7450 0.9692354
Jul 1950 1.2415994 139.4411 0.9819209
Aug 1950 1.2331919 141.8003 0.9721673
Sep 1950 1.0697998 144.1995 1.0242146
Oct 1950 0.9321623 147.1809 0.9694128
Nov 1950 0.8077298 150.2239 0.9395062
Dec 1950 0.9042619 153.1004 1.0112474
Jan 1951 0.9124332 156.0320 1.0184818
Feb 1951 0.8922327 158.3874 1.0614328
Mar 1951 1.0159924 160.7784 1.0896875
Apr 1951 0.9860703 163.0296 1.0139423
May 1951 0.9850875 165.3124 1.0562052
Jun 1951 1.1160434 167.5135 0.9521146
Jul 1951 1.2415994 169.7439 0.9442294
Aug 1951 1.2331919 171.7657 0.9394767
Sep 1951 1.0697998 173.8116 0.9895473
Oct 1951 0.9321623 175.8891 0.9880629
Nov 1951 0.8077298 177.9914 1.0155182
Dec 1951 0.9042619 180.3327 1.0179804
Jan 1952 0.9124332 182.7047 1.0257588
Feb 1952 0.8922327 185.0254 1.0903427
Mar 1952 1.0159924 187.3755 1.0138039
Apr 1952 0.9860703 189.5022 0.9686269
May 1952 0.9850875 191.6529 0.9693059
Jun 1952 1.1160434 193.8174 1.0078193
Jul 1952 1.2415994 196.0063 0.9450968
Aug 1952 1.2331919 198.7204 0.9875114
Sep 1952 1.0697998 201.4722 0.9696806
Oct 1952 0.9321623 205.0051 0.9994872
Nov 1952 0.8077298 208.5999 1.0208178
Dec 1952 0.9042619 211.8312 1.0127856
Jan 1953 0.9124332 215.1126 0.9985945
Feb 1953 0.8922327 217.3918 1.0104963
Mar 1953 1.0159924 219.6952 1.0573067
Apr 1953 0.9860703 221.0698 1.0780292
May 1953 0.9850875 222.4530 1.0450146
Jun 1953 1.1160434 222.9154 0.9767539
Jul 1953 1.2415994 223.3787 0.9518766
Aug 1953 1.2331919 223.1419 0.9884553
Sep 1953 1.0697998 222.9054 0.9938601
Oct 1953 0.9321623 222.9661 1.0152012
Nov 1953 0.8077298 223.0268 0.9991931
Dec 1953 0.9042619 224.2200 0.9913510
Jan 1954 0.9124332 225.4196 0.9918304
Feb 1954 0.8922327 227.1983 0.9274162
Mar 1954 1.0159924 228.9910 1.0100876
Apr 1954 0.9860703 231.0598 0.9963080
May 1954 0.9850875 233.1473 1.0188510
Jun 1954 1.1160434 235.9391 1.0025889
Jul 1954 1.2415994 238.7644 1.0187226
Aug 1954 1.2331919 242.0040 0.9817807
Sep 1954 1.0697998 245.2875 0.9870105
Oct 1954 0.9321623 248.5585 0.9883605
Nov 1954 0.8077298 251.8730 0.9978109
Dec 1954 0.9042619 255.4887 0.9912189
Jan 1955 0.9124332 259.1563 1.0234169
Feb 1955 0.8922327 263.1227 0.9924746
Mar 1955 1.0159924 267.1499 0.9837069
Apr 1955 0.9860703 271.1240 1.0061816
May 1955 0.9850875 275.1572 0.9961116
Jun 1955 1.1160434 279.1320 1.0111599
Jul 1955 1.2415994 283.1642 1.0353367
Aug 1955 1.2331919 287.1562 0.9798974
Sep 1955 1.0697998 291.2045 1.0015069
Oct 1955 0.9321623 295.1284 0.9959739
Nov 1955 0.8077298 299.1052 0.9809757
Dec 1955 0.9042619 302.9850 1.0146808
Jan 1956 0.9124332 306.9151 1.0141426
Feb 1956 0.8922327 310.6566 0.9993580
Mar 1956 1.0159924 314.4437 0.9922611
Apr 1956 0.9860703 317.7520 0.9989602
May 1956 0.9850875 321.0951 1.0053531
Jun 1956 1.1160434 323.9475 1.0344652
Jul 1956 1.2415994 326.8252 1.0177778
Aug 1956 1.2331919 329.4577 0.9968382
Sep 1956 1.0697998 332.1114 0.9991762
Oct 1956 0.9321623 334.8672 0.9802960
Nov 1956 0.8077298 337.6460 0.9936688
Dec 1956 0.9042619 340.9221 0.9925950
Jan 1957 0.9124332 344.2299 1.0029074
Feb 1957 0.8922327 348.1472 0.9690036
Mar 1957 1.0159924 352.1091 0.9951357
Apr 1957 0.9860703 356.0264 0.9912637
May 1957 0.9850875 359.9872 1.0010746
Jun 1957 1.1160434 363.1119 1.0413360
Jul 1957 1.2415994 366.2637 1.0225336
Aug 1957 1.2331919 367.8907 1.0293604
Sep 1957 1.0697998 369.5249 1.0219630
Oct 1957 0.9321623 369.7803 1.0066862
Nov 1957 0.8077298 370.0360 1.0204454
Dec 1957 0.9042619 370.3949 1.0031828
Jan 1958 0.9124332 370.7541 1.0050598
Feb 1958 0.8922327 371.8580 0.9584552
Mar 1958 1.0159924 372.9652 0.9553220
Apr 1958 0.9860703 374.2700 0.9429449
May 1958 0.9850875 375.5794 0.9811380
Jun 1958 1.1160434 377.1730 1.0333980
Jul 1958 1.2415994 378.7734 1.0440482
Aug 1958 1.2331919 381.2015 1.0742517
Sep 1958 1.0697998 383.6453 0.9843487
Oct 1958 0.9321623 386.6073 0.9961686
Nov 1958 0.8077298 389.5922 0.9851114
Dec 1958 0.9042619 392.8128 0.9487462
Jan 1959 0.9124332 396.0600 0.9961860
Feb 1959 0.8922327 400.2301 0.9577192
Mar 1959 1.0159924 404.4441 0.9880457
Apr 1959 0.9860703 409.7882 0.9800039
May 1959 0.9850875 415.2029 1.0268667
Jun 1959 1.1160434 420.8169 1.0050039
Jul 1959 1.2415994 426.5068 1.0348398 #7月乘客增长了24%(即乘子为1.24)
Aug 1959 1.2331919 430.9021 1.0519679
Sep 1959 1.0697998 435.3428 0.9941389
Oct 1959 0.9321623 438.8444 0.9949296
Nov 1959 0.8077298 442.3741 1.0131012
Dec 1959 0.9042619 446.0808 1.0040313
Jan 1960 0.9124332 449.8186 1.0160090
Feb 1960 0.8922327 453.9261 0.9654137
Mar 1960 1.0159924 458.0711 0.9003071
Apr 1960 0.9860703 462.1153 1.0116789
May 1960 0.9850875 466.1952 1.0277782
Jun 1960 1.1160434 470.1191 1.0196820
Jul 1960 1.2415994 474.0762 1.0567220
Aug 1960 1.2331919 478.2454 1.0275220
Sep 1960 1.0697998 482.4514 0.9842550
Oct 1960 0.9321623 486.6737 1.0161821
Nov 1960 0.8077298 490.9329 0.9835046
Dec 1960 0.9042619 495.0963 0.9649389

季节性分解_第1张图片

                                                                 图1

  • 对季节分解进行可视化

R中自带的monthplot()函数和forecast包中的seasonplot()函数来画图

#如下图2
par(mfrow = c(2,1))
library(forecast)
monthplot(AirPassengers,xlab="",ylab = "")
seasonplot(AirPassengers,year.labels = "TRUE",main = "")

季节性分解_第2张图片

 从图中可以看到两幅图总体的增长趋势以及相似的季节模式

 

 

转载于:https://my.oschina.net/u/1785519/blog/1563579

你可能感兴趣的:(季节性分解)