公司的收益受很多因素的影响,一般的回归模型在预测公司收益方面并不容易奏效,因为回归模型需要的解释变量(自变量)很多,而在现实中,这些自变量也难以预测。
但时间序列模型可以在仅知道历史收益一个变量的情况下,实现较高准确度的预测。
时间序列模型有多种,如:
单指数平滑模型(simple/single exponential model)
双指数平滑模型(double exponential model,也叫Holt指数平滑模型,Holt exponential model)
三指数平滑模型(triple exponential model,也叫Holt-Winters指数平滑模型,Holt-Winters exponential model)
自回归模型(AutoRegressive Model,AR)
移动平均模型(moving average model,MA)
移动平均自回归模型(ARMA)
带差分项的移动平均自回归模型(AutoRegressive Integration Moving Average model,ARIMA)。
我们先从应用较广泛的单指数平滑模型说起:用简单指数平滑模型预测强生(Johnson & Johnson)公司的季度收益(Quarterly Earnings)。
1. decompose()函数分解数据成分
(1)观察强生公司历史季度收益数据。
注:*强生公司的季度收益JohnsonJohnson为R中自带的数据。
*很多处于成长期公司的收益(或者用户规模)都是呈指数型变化的,线性规模增长的公司称不上是成长型公司。
从上面绘制的图形中可以看出强生历史季度收益整体呈指数型增长,但有波动。强生公司的收益波动可能是由于业务性质天然受季节因素影响(这是不可避免的,如洗护用品夏季用的多,冬季用的少),但这种波动会影响强生公司季度收益的整体走势吗?
下面我们将数据本身的趋势、季节性波动和其他影响因素分离出来。
(2)用decompose()函数分解强生季度收益数据中的季度、趋势和随机成分。
用names()函数查看components数据框中各变量:可以看到有x值(数据本身)和分解出的季节(seasonal)、趋势(trend)等成分。
可以查看各成分的数据,如查看季节性成分,结果如下:
(3)从数据的角度看各成分不够直观,我们将各成分数据在图形中绘制出来。
上图中:
第1个图形是历史观测值;
第2个图形是数据的趋势成分,可以看出是呈指数型增长的;
第3个图形是季节性成分,可以看出季节性波动很明显;
第4个图形是随机成分,可以看出前期随机波动幅度较小,在1978~1980年随机波动幅度较大。
从上面图形可以得出初步结论:强生公司的季度收益整体呈指数增长趋势,且有季节性成分。但仅从图形观察是不够的,我们需要精确拟合模型参数。
2.用ets()函数拟合指数模型
要使用ets()函数,需要先安装forecast程辑包。
用library()函数加载forecast函数(warning的出现不影响后续的使用)。
用ets()函数拟合模型:
从上面结果中可以看出,水平成分参数alpha = 0.2776,趋势性成分参数beta=0.0636,季节性成分参数= 0.5867。
在有了参数模型以后,就可以对未来值进行预测了。需要注意的是:指数时间序列模型较适用于短期预测。我们预测未来8个季度的收益(如果省去参数8,仍然预测的是8个季度的收益)
模型给出了各个季度收益的点估计(Point Forecast)、80%置信区间和95%置信区间的上界和下界值。
下面我们用图形直观地展示预测结果:
上图中,蓝色虚线为点估计值,深灰色阴影部分为95%置信区间范围,浅灰色阴影部分是80%置信区间范围。
时间序列模型不仅适用于公司收益的预测,也可用于上市公司股价的预测,但多用ARIMA模型,感兴趣的朋友可以自行尝试。
“数学算法的世界”后期也会推出ARIMA模型的相关文章,敬请关注。