dxzmpk

endless hard working

0%

Predict_Future_Scales-Time_series_Basics

data: https://www.kaggle.com/c/competitive-data-science-predict-future-sales/data

notebook: https://www.kaggle.com/jagangupta/time-series-basics-exploring-traditional-ts

难点

提供的是每天的销量,但要求计算出每个月的销量

特征提取

月销量

首先对”date_block_num”,”shop_id”,”item_id”三个量进行聚合,这样能得出某月某个商店每个产品的月销量。然后对值进行累计运算,其中月份取最大最小值,价格取平均值,销量取总和。

每个类别的产品数量

取前10名进行可视化操作,得到

img

模型

单时间序列预测

目标要求我们以商店与商品的组合层次来预测下个月的销量。这里面有商店、商品、月份三个量。

在深入讨论所有组合之前,首先让我们了解如何预测单个的序列。

我选择预测整个公司每月的销量。

首先,让我们计算每月的总收入并取代该数据。

sales.groupby([“date_block_num”])[“item_cnt_day”].sum()

对[“date_block_num”])[“item_cnt_day”]两个量进行聚合,然后求和,得出每个月的总销量。

img

观察得出,销量存在一定的季节性,在一年中的某个时段,销量会剧增。

然后利用大小为12的窗口求窗口的均值和方差,绘制图像。

img

假设序列是加法模型

yt=St+Tt+Et

where yt is the data at period t, St is the seasonal component季节组件 at period t, Tt is the trend-cycle循环组件 component at period t and Et is the remainder (or irregular or error) component补充组件 at period t
Similarly for Multiplicative model,

yt=St x Tt x Et

稳定性检测:

q

Stationarity refers to time-invariance of a series. (ie) Two points in a time series are related to each other by only how far apart they are, and not by the direction(forward/backward)

When a time series is stationary, it can be easier to model. Statistical modeling methods assume or require the time series to be stationary.

There are multiple tests that can be used to check stationarity.

  • ADF( Augmented Dicky Fuller Test)
  • KPSS
  • PP (Phillips-Perron test)

Let’s just perform the ADF which is the most commonly used one.

Note: Step by step guide to perform dicky fuller test in Excel

Another Useful guide

good reference%20STA.ipynb)

实践

使用ADF(Augmented Dicky Fuller Test)进行稳定性检测。

1
2
3
4
5
6
7
8
9
Results of Dickey-Fuller Test:
Test Statistic -2.395704
p-value 0.142953
#Lags Used 0.000000
Number of Observations Used 33.000000
Critical Value (1%) -3.646135
Critical Value (5%) -2.954127
Critical Value (10%) -2.615968
dtype: float64

P值并没有显著小于关键值

接下来通过两步变换,首先一阶差去掉趋势性,然后跨度为12去掉季节性,得到新的时间序列。

1
2
3
4
5
6
7
8
9
Results of Dickey-Fuller Test:
Test Statistic -3.270101
p-value 0.016269
#Lags Used 0.000000
Number of Observations Used 21.000000
Critical Value (1%) -3.788386
Critical Value (5%) -3.013098
Critical Value (10%) -2.646397
dtype: float64

Now after the transformations, our p-value for the DF test is well within 5 %. Hence we can assume Stationarity of the series

We can easily get back the original series using the inverse transform function that we have defined above.

Now let’s dive into making the forecasts!

AR, MA and ARMA models:

TL: DR version of the models:

MA - Next value in the series is a function of the average of the previous n number of values AR - The errors(difference in mean) of the next value is a function of the errors in the previous n number of values ARMA - a mixture of both.

Now, How do we find out, if our time-series in AR process or MA process?

Let’s find out!

Stochastic proess

infinite number of random variables

A time series

Mean function:

随机过程由多个随机变量

当每个变量都取一定值的时候,随机过程就拥有了一个实现,成为时间序列。通过时间序列可以估计随机过程的某些特性。例如,若时间序列中的某一段或者某一点向后移动一段距离,得到的分布和之前的一致,则可以认为随机过程是有强稳定性的。

白噪声分析

constant variance

当时间间隔为0时,autocovariance是方差,否则为0。所以白噪声是稳定的。

白噪声的方差是常数,且独立于时间

autocorrelation自相关系数,不论lag有多少,都是0

当建立线性回归模型或者时间序列模型时,可以测试残差是不是白噪声,也就是错误。因为线性回归的假设之一就是错误是独立的,如果可以使用一个测试来检测残差是不是白噪声,就可以据此得知线性回归模型拟合得好不好。

random walk分析

平均值随着时间增长,极少情况下可能为0。

方差也不是常量。所以random work不是稳定过程。

moving average Process

Q=9 邻居间将增加更远的依赖,同时整体曲线将更加平缓。

Ljung-Box Test

  1. 测试时间序列中的序列自方差系数
  2. 测试预测模型的残差中是否还有需要建模的结构

卡方分布:k个独立的标准正态分布之和遵循的分布。