基于2G,3G,4G的时间序列做5G的预测
华为财务精英挑战赛初赛商赛赛题
为保密性不提供数据和具体描述
仅是个人主观答题
Outline
预测方法:
- SPSS的回归分析->拟合【曲线/直线】
- 因子分析法/BP神经网络等建立模型都暂不可行。[虚拟数据无法根据已有信息提取出因子]
- 分别预测2G、3G、4G和total,相见得5G.
- 时间序列分析
观察维度:
- 重要时间点:3G出现时间点与4G出现时间点
- 地区内:3G出现对2G的影响,4G出现对3G的影响。两者应用曲线拟合。
- 地区间:地区间2G的互相影响,地区间3G的互相影响,地区间4G的互相影响。
预测目标:
Pre:根据基站设备的历史数据:
- 处理数据
- 构建模型
- 分季度预测
- 各区域5G市场规模、各区域无线整体市场规模。
- 市场规模v.s.市场份额
- 存量/增量
本文的特殊符号记录/建模过程演示说明
地区别称:
北美地区:NorAmer
地区总体规模:District_total
亚太地区:AisaPac
数据表格结构调整说明
整体规模=2G+3G+4G+5G,故在各地区之间新增加5G列,同时设置5G/total的百分比列,以检查数据的合理性。
显然,在较早时间段出现的5G数据,均为数据异常情况,转为异常值处理。
建模过程演示和说明文档
因为本次建模采用”时间序列”的分析方法,即意指从时间序列来看,这样对于无论是变量2G NorAmer还是变量2G AisaPac,总计变量间的相互影响的体现均以时间序列的最后结果变化所包括。
所以,在观察维度条目中所提到的地区间影响和地区内2G/3G/4G间相互影响均被(Date,Variable)所描述。
故以一个维度做示例进行建模。
当然,对于不同的变量,其数据预处理时采用的异常值/缺失值处理方法会根据变量实际情况有所不同,但是整体的建模方法相同。
利用python可视化的数据分析初步感知
数据处理
处理缺失值
本数据的缺失值均为规模为0时,为了后续处理方便以补0操作。
对于规数据,对于记录为0数据进行缺失值处理:
如何判断数据是否为缺失值:
现在根据历史现实来看,对于已有的2G/3G/4G,各地区基站建设规模若为0,则为缺失值。
- 2G数据,根据现实来看不能为0.
- 3G数据,因为数据均为实点值,以2008年为例,各地区数据出现第一个不为0时,后续数据若有为0,均判定为缺失值。
常见缺失值处理方法:
直接使用含有缺失值的特征
因为总规模为0时,对于时间序列的处理会造成影响。
删除含有缺失值的特征
为了保证时间序列的连贯性,此处采用需要对缺失值进行填补,故不可采用这个方法。
缺失值填补
均值插补:因为整体数据规模呈上升趋势,故不能采用均值插补或与之类似的众数插补。
多重插补[使用数据分析工具SPSS进行多重插补]
极大似然估计[使用数据分析工具SPSS进行多重插补]:
原理:
在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(or expectation maximization)。
对于极大似然的参数估计在实际中常采用EM方法。
在利用EM方法前,首先要对数据进行多元正态性检验:
- 在一般的回归分析中,进行多元正态检验时,当样本量较大且单个变量为正态性时,多元正态检验即可完成。
- 这里的单变量的正态检验即可以使用kstest的方法,[在python 库函数中即可提供],可以采用SPSS 直接进入正态性检验。
- 正态性检验是t检验等统计分析的前提。
- P-P图与Q-Q图拟合的判断
- 当变量不符合正态分布时,此处不采用极大似然估计进行缺失值填补。
成对缺失值估算
回归估算统计:
- 使用回归的方法来填补缺失值(随机选择的个案的残差将添加到每项估算中)【残差选项】
- 从输出文档中读取结果为:
- 回归平均值
- 回归协方差
- 回归相关性
我这里使用SPSS自带的缺失值检测,SPSS自动把上文中所提到的0的情况略过,认为其不算缺失值,故这里选择其他数据工具对为0的情况进行删除。【即将其标记为缺失值】,然后再进行缺失值处理。
最终方案选择
- 如果数据的正态性检验的结果,即柯尔莫戈洛夫-斯米诺夫(V)测试和夏皮洛-威尔克的显著性均大于5%时,才用EM方法进行缺失值填充。
- 让数据的正态性检验结果没有通过时,采用回归平均值进行填充。
探测与检验异常值
利用SPSS探测和检验异常值
初步筛查:
利用数据的描述统计信息,对均值/标准差和最大最小值进行描述统计的初步判断
利用SPSS的箱形图:
直观的展示异常数据:离群值/异常值
原理:利用”无数概括法”:
以50%左右两个百分位数(即四分位数25和75下方的加权平均值)
Upper=$Q_3+(2.2\times (Q_3-Q_1))$
Lower=$Q_1-(2.2\times (Q_3-Q_1))$
变量值超过第75%分位点和25%分位点上变量之差的1.5倍(箱体上方)
变量值小于第75%分位点和25%分位点上变量值之差1.5倍(箱体下方)
查看“极值”表格:大于Upper或小于Lower的即为Outlier,这也是箱线图中的相关异常值点的说明。
异常值处理:
因为现有数据一共只有86条记录,不算较大的数据量;常用的删除异常值和结尾或缩尾处理均无法使用。
异常值处理方法:
1-数据变换:
- 即符合正态分布的异常值可以采用对数变换的方法。
- 不符合正态分布的异常值可以将其视为缺失值,利用现有的统计信息应用统计模型进行填补。
2- 用描述统计信息进行替代。
这里将异常数据,假设为数据记录等不可测原因使数据缺失,故这里将异常数据删除为缺失值,转为缺失值处理。
冗余数据清洗
因为1999与2000年两年的数据市场规模各地区均为0[缺失原因应该为历史还未出现历史],故将这两年的数据删除。
如果不清洗,两年的0权重会对整体建模走向有较大影响。
这里以最早的2G为起始建模时间点。
时间变量分割提取
使用python的groupby/map_date方法【函数定义详见代码】对数据做分类分割提取,以1,4,7,10为季度的分割点。
1 | #分割季度 |
处理整体规模与单纯加总的偏差
对于整体和2G/3G/4G/5G加总数值之间的距离
5G数据的提取
因为所给数据中没有明确对
利用spss进行时间序列的建模
时间序列简介
横截面数据与时间序列数据
横截面数据
横截面数据(cross section)时和时间无关的不同对象的观测值组成的数据。
时间序列数据
同一对象在不同时间的观测值形成的数据
最大特点
观测值并不独立,即可以使用变量过去的观测值对同一变量的未来值进行预测。
成分的分离
- trend 趋势
- 周期性变化的季节成分(seasonal component)
- 无法用趋势和季节模式解释的随机干扰
变量的时间序列图
采用年/季度的格式进行时间序列图的绘制,同时辅以python可视化进行时间序列的初步感知。
时间序列的常用模型
移动平均:指数平滑模型
原理
利用过去观测值的加权平均来预测未来的观测值【此过程被称为平滑】,且离现在越近的观测值越要给予月中的权。
若记时刻$t$的观测值为$X_t$,时刻$t$的指数平滑记为$Y_t$
指数平滑的数学模型为:
$Y_t=\sum_{i=1}^t\alpha( 1-\alpha)^{t-i}X_i$,其中$\alpha$为权重系数。
成分分解
变量的成分分解可以利用SPSS对时间序列做成分分解的结果:
- 误差:原序列的随机扰动$ER_t$
- 季节调整后的序列$SA_t$
- 季节因素$SF_t$
- 去掉季节及随机扰动后的趋势及循环因素(trend-cycle series)$TC_t$
序列分解以后与原有时间序列有 和差关系:
- $X_t=SF_t+SA_t$
- $X_t=SF_t+TC_t+ER_t$
带季节趋势的指数平滑
即先计算扰动序列的指数平滑,再加上预测的季节和趋势成分作为最终的指数平滑数据。
这可以在季节性分析中选择利用温斯特加性。
拟合法:ARIMA模型
与指数平滑的比较
拥有移动平均本质的指数平滑,能够提取确定性因素,而对于非确定性因素的提取,使用更多的是ARIMA模型。
模型拟合结果评价
残差
$R^2$
当$R^2>0.4$时,默认时间序列的拟合结果较好
对于指数平滑模型,关注R^2$作为模型拟合度的评价。
平稳$R^2$
对于ARIMA模型,关注平稳$R^2$作为模型拟合度的评价。
显著性
可通过ACF/偏ACF判断数据的显著性。
应用时间预测的最终总结
无论使用何种模型进行预测,随着预测步长的增加,预测误差也会随之增大。
纯粹时间序列的基本概念
定义
不带有季节成分和 确定性趋势的时间序列或扰动序列,对于每一个固定的时间t,不同的$X_t$之间还存在着协方差和相关系数。
$X_t$的自协方差函数
$X_t$的自相关函数
时间序列的平稳性
- $X_t$的均值和方差为常数
- $X_t$的相关性也关于时间平移不变。
通过序列图对时间序列的平稳性进行初步感知
最终建模结果评估
建模结果调整
将某些不符合实际意义的值,如出现负值的情况,在波动的情况下进行调整,更换建模方法和策略最终得出统计结果。
建模结果测试
这里选择选取从2001年起15年(2015年Q4)的数据作为训练数据,2016Q1-2019Q4位测试数据,对所选取的模型进行评估。