数据分析-时间序列分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/afujin/article/details/50220865

时间序列分析和预测,举几个栗子:用优衣K在天猫的连续n年的销售数据,对双12的销售量进行预测。用阿里妈妈的站内站外媒体投放的监测数据,预估宝J在双12广告投放的效果。这些问题中数据的共同特点是序列中的数据有很强的依赖关系,又表现一定的随机性。

参考Holt-Winter模型:一个时间序列由三部分叠加组成:趋势部分,周期部分和随机部分。还是举个栗子:优衣K的周周销售数据有三个部分,年度的增长趋势部分,季节促销波动的周期部分,三里屯试衣间的随机事件和其它的随机噪音。那么时间序列分析就是把这几个部分分解出来的过程。


原始数据

用纽约46年到59年的月出生人口数据为例。这个比优衣K和宝J的数据要简单很多。



提取趋势因素

用n=12的移动平均数据平滑随机因素和季节因素,也就是将1年的数据平均到了6月。然后用n=2的移动平均平滑一下偶数因素,也就是将12个月平均到6月和7月。就可以看到趋势数据。



提取季节因素

用原始数据-趋势数据得到月份的系数,对相同月份求平均然后减去平均的均值做中心化后,就是月份的季节系数。很明显看出,二月的出生率最低,夏天出生率比较高。假设生育季节因素是不随趋势数据变化的常季节型,用加法分解,也可以假设是随趋势数据变化的变季节型,所以采用乘法分解。



提取随机因素

用原始数据-趋势数据-月份数据得到随机数据。观察偶然的多出生比较集中发生在5月和4月,偶然的少出生比较集中在4月5月6月。为什么呢?



R的decompose函数

在R中提供decompose函数分解时间序列的3个部分:

> births <- scan("/data/nybirths.dat") // 读取原始数据

> birthstimeseries <- ts(births, frequency=12, start=c(1946,1)) // 创建时间序列

> birthcomponents <- decompose(birthstimeseries) //分解时间序列

> ts.plot(birthcomponents) // 显示分解图示



线性预测

对趋势部分做模型预测,可选的模型有:LINEST线性函数,FORCAST回归函数, LOGEST指数函数, TREND趋势函数, GROWTH增长函数等。这里用TREND函数预测下一年60年的出生量,用然后叠加季节部分就完成了一个简单的预测模型。



阅读更多

没有更多推荐了,返回首页