Sales_date Cigarette_sales
10/15/2015 2,783
11/1/2015 385
11/15/2015 536
12/1/2015 768
12/15/2015 413
1/1/2016 182
1/15/2016 529
2/1/2016 398
2/15/2016 22
3/1/2016 65
3/15/2016 603
4/1/2016 759
4/15/2016 64
5/1/2016 391
5/15/2016 669
6/1/2016 833
6/15/2016 516
7/1/2016 480
7/15/2016 260
8/1/2016 252
8/15/2016 689
9/1/2016 119
9/15/2016 812
10/1/2016 275
10/15/2016 425
11/1/2016 132
11/15/2016 26
12/1/2016 170
12/15/2016 321
1/1/2017 349
1/15/2017 102
2/1/2017 155
2/15/2017 117
3/1/2017 99
3/15/2017 812
4/1/2017 441
4/15/2017 51
5/1/2017 210
5/15/2017 625
6/1/2017 42
6/15/2017 333
7/1/2017 460
7/15/2017 1,580
8/1/2017 632
8/15/2017 441
9/1/2017 80
9/15/2017 723
10/1/2017 209
10/15/2017 377
11/1/2017 493
11/15/2017 475
12/1/2017 252
12/15/2017 735
由于要对时间序列数据进行线性回归,因此我们需要一个数字指标 时间段,因此我为DatetimeIndex创建了一个天变量,它只是我的训练数据集上从0开始的计数器
train ['days'] = range(len(train))
10/15/2015 2,783 0
11/1/2015 385 1
11/15/2015 536 2
12/1/2015 768 3
12/15/2015 413 4
1/1/2016 182 5
1/15/2016 529 6
2/1/2016 398 7
2/15/2016 22 8
3/1/2016 65 9
3/15/2016 603 10
4/1/2016 759 11
4/15/2016 64 12
5/1/2016 391 13
5/15/2016 669 14
6/1/2016 833 15
6/15/2016 516 16
7/1/2016 480 17
7/15/2016 260 18
8/1/2016 252 19
8/15/2016 689 20
9/1/2016 119 21
9/15/2016 812 22
10/1/2016 275 23
10/15/2016 425 24
11/1/2016 132 25
11/15/2016 26 26
12/1/2016 170 27
12/15/2016 321 28
1/1/2017 349 29
1/15/2017 102 30
2/1/2017 155 31
2/15/2017 117 32
3/1/2017 99 33
3/15/2017 812 34
4/1/2017 441 35
4/15/2017 51 36
5/1/2017 210 37
5/15/2017 625 38
6/1/2017 42 39
6/15/2017 333 40
7/1/2017 460 41
7/15/2017 1,580 42
8/1/2017 632 43
8/15/2017 441 44
9/1/2017 80 45
9/15/2017 723 46
10/1/2017 209 47
10/15/2017 377 48
11/1/2017 493 49
11/15/2017 475 50
12/1/2017 252 51
12/15/2017 735 52
当我尝试将OLS回归拟合为卷烟销量的天数
sales_lm4 = smf.ols(香烟销售〜天',data = salesdata).fit()
这是我的总结
部门。变量:香烟销售的R平方:0.001
型号:OLS调整。 R平方:-0.019
方法:最小二乘F统计量:0.03564
日期:2018年6月29日,星期五,概率(F统计):0.851
时间:8:51:28对数可能性:-73.31
观察值:52 AIC:150.6
Df残渣:50 BIC:154.5
DF型号:1
协方差类型:非稳健
coef std err t P> | t | [0.025 0.975]
拦截19.3901 0.284 68.187 0 18.819 19.961
天0.0018 0.009 0.189 0.851 -0.017 0.021
综合:8.573达宾·沃森:1.795
概率(总括):0.014 Jarque-Bera(JB):8.209
偏斜:-0.959概率(JB):0.0165
峰度:3.331 61.8
sales_lm4 = smf.ols(log_cigarette_sales〜days',data = salesdata).fit()
部门。变量: log_cigarette_sales R平方: 0.002
型号: 最小二乘 调整R平方: -0.017
方法: 最小二乘 F统计: 0.1134
日期: 2018年7月3日星期二 概率(F统计): 0.738
时间: 09:29:19 对数似然: -76.756
不。观察结果: 53 AIC: 157.5
Df残留: 51 BIC: 161.5
Df模型: 1
协方差类型: 不稳健
海岸
std err
t
P> | t |
[0.025
0.975]
拦截 19.5629 0.284 68.799 0.000 18.992 20.134
天 -0.0032 0.009 -0.337 0.738 -0.022 0.016
Omnibus: 6.854 杜宾·沃森: 1.701
概率(综合): 0.032 Jarque-Bera(JB): 5.975
倾斜: -0.789 概率(JB): 0.0504
峰度: 3.462 条件。没有。 59.5
答案 0 :(得分:2)
在进行任何操作之前,先作图。很明显,2015年10月15日和2017年7月15日是异常值。从训练集中删除它们。
数据仍然波动很大。您有两种消除波动的方法:(a)进行移动平均,(b)查看累积数据。首先,如果您不按整个季节周期平均,则会引入偏差(此偏差可以在以后消除,但需要一些额外的计算)。因此,对于第一遍,我更喜欢保持数据尽可能原始。
获取累积数据[y(t) = x(t)+y(t-1)
使波动消失(没有魔术,波动比趋势低一个数量级)。此处的图表几乎是线性的,表示稳定(稳定)的客户销售。线性回归告诉您,单循环是369.48,换句话说,每15天的销售额约为369.48。
然后您可以计算残差e(t)=x(t)-369.48
,并在其中查找季节性。我看不到任何东西,但是请确保进行自相关。
所以您的最佳预测是369.48。