时间就是一条线。数据点排在这条线上。一个点接着一个点。昨天今天明天。温度股价销售额。这些都是时间序列。我们想看懂这些数据。我们想找到里面的规律。我们想用昨天的数据猜明天的事情。这就是建模。这就是时间序列分析。
数据不会安安静静。数据总是变来变去。一部分变化有规律。一部分变化没道理。季节会让温度变化。夏天热冬天冷。这是季节规律。节日会让销售额变多。这也是规律。还有一些变化是趋势。东西慢慢变贵。销量慢慢增长。这是长期的向上或向下。规律之外是噪音。噪音没有原因。噪音无法预测。今天突然降温。也许只是刮了一阵风。
建模的第一步是看。看数据的样子。画一张图。横轴是时间。纵轴是数据值。点连成线。线在图上走。看它是否平稳。平稳的意思是线的位置稳定。没有一直向上跑。没有一直向下跑。波动的幅度也差不多。如果线一直向上。那就不平稳。要把向上的部分去掉。只看波动。这叫平稳化处理。差分是一种方法。用今天的数据减去昨天的数据。得到新的数据线。新的线可能就平稳了。
模型是数学公式。公式描述数据怎么来。一个简单模型叫自回归模型。它的思想很简单。明天的数据和今天有关。也和昨天有关。可能还和前天有关。用过去的数据猜未来的数据。今天下雨。明天很可能也下雨。这就是自回归。过去的自己影响现在的自己。模型的关键是找关系。找今天和昨天前天的关系有多强。数学上叫系数。系数告诉我们影响有多大。
移动平均模型是另一个想法。它认为数据受意外影响。今天的意外影响明天。昨天的意外影响今天。意外就是预测的误差。昨天的预测错了。这个错误会影响今天的值。模型要估计错误的影响有多大。把自回归和移动平均合起来。就是自回归移动平均模型。这个模型很常用。它的名字是ARMA模型。它处理平稳的数据线。
数据有季节怎么办。夏天总比冬天热。每年重复。这就是季节。模型要处理季节。自回归移动平均模型可以扩展。加入季节的部分。变成季节性模型。名字是SARIMA模型。这个模型复杂一些。但它能同时处理趋势和季节。先要看出季节有多长。是一年十二个月。还是一周七天。确定长度。模型就能学习季节规律。模型也能学习趋势。趋势和季节都去掉。剩下的就是随机波动。
模型怎么学。模型需要参数。参数是模型的设置。自回归用过去几个点。移动平均考虑几个意外。季节部分也一样。这些数量要定下来。定数量的方法有很多。看数据的图有帮助。看一种叫自相关图的工具。它显示数据和过去数据的关联强度。关联强的点。就可能是需要的参数。也有自动的方法。计算机尝试不同的数量。看哪个结果好。结果好的标准是预测误差小。预测误差是猜的值和真实值的差距。差距小。模型就好。
得到模型后要检验。模型是否合格。看它剩下的部分。模型解释规律。剩下的应该是噪音。噪音应该是随机的。没有规律。检验方法很多。看剩余数据的自相关图。应该没有明显的关联。做统计检验。如果检验通过。模型就可以用。通不过就要改。改模型结构。改参数。直到剩余部分像噪音。
模型用来预测。输入过去的数据。模型计算未来的值。预测有不确定性。所以给出一个范围。比如明天的温度。模型说二十度到二十五度。这个范围是置信区间。真实的温度落在这个区间里。可能性很高。预测越远。范围越大。因为不确定越多。下个月的销售额很难猜。下一天的销售额好猜一些。
现实数据很混乱。模型不一定完美。有时数据突然变化。疫情来了。销售图直线下降。这不是季节。这不是趋势。这是一个特殊事件。模型可能失败。这时需要加入外部信息。告诉模型什么时候发生了特别的事。模型可以调整。有时数据很多。成千上万个点。计算机可以处理。有时数据很少。只有几十个点。模型选择就要小心。简单的模型更可靠。
时间序列模型用在很多地方。天气预报。股票分析。商店库存管理。工厂生产计划。电力负荷预测。医院病人数量预估。这些地方都用时间数据。都有规律可寻。找到规律。就能提前准备。商店知道下个月什么好卖。可以多进货。电厂知道明天用电多。可以多发电。这就是建模的价值。
模型是工具。工具帮助我们理解世界。世界在时间中展开。数据记录这个过程。我们分析数据。我们寻找模式。模式帮助我们预见未来。预见减少盲目。让我们更好地决定。时间序列分析就是这样一件事。从过去的数据里。学习。提炼。然后看向前方。虽然前方总有迷雾。但模型可以点亮一盏灯。照亮不远的一段路。这就很有用。