怎么查既往天气预报?

匡华平匡华平最佳答案最佳答案

这个问题问得真是时候,昨天正好研究了下这个问题并写了篇博客: 研究的问题是怎么通过天气数据来预测股票市场的走势(这是之前研究过的另一个问题)。

由于历史天气数据免费,公开且容易获取,所以先研究了一下用天气数据来做预测的问题。 既然要预测未来的天气,现在最靠谱的方法肯定是用机器学习方法了。于是从开源网站上下了美国2500多个气象站点的气温和降水数据,准备用来训练模型。 但是问题来了,这些数据都是连续的日历天气数据,一个站点每天记录有无数个特征值(气温、气压等等),而我们需要的是每一天是温度或者降水的数值,也就是要把每个日期所有特征值连成一条线,再对这条线进行预测。这就带来一个问题,因为气候的变化是有周期性的(比如最近频繁出现的极热/极冷天气),如果有一个周期在数据范围内出现了,而我们还在这个周期内的话,那么显然这个时候的气温/降水量应该比正常情况要大/小很多,不然的话就不会出现在这个周期里了。

如果我们直接对这种带有周期性的数据进行时间序列分析的话,那肯定是不对的! 所以必须先对这样的数据做处理,把其中包含的周期特征给滤除掉再做预测。

我实验了很多方法,最后发现用R语言的fourier包来做傅里叶变换效果最好。先用傅里叶变换算出各个频率的系数,再用逆傅里叶变换还原出没有周期的数据。至于如何设定傅里叶变换的参数使得还原后的数据尽可能接近原始数据,这就需要对周期特征有一个比较深入的认识才行(这就是所谓的“磨光滑”的过程)。 我使用了美国1979年到现在的气温数据做了验证,对于一年内的气温变化(波动范围大约-60℃到+60℃)能用这个方法有效去除周期特征。

当然这种方法也有缺点,就是不适合于数据集中包含过多异常值的数据集。不过,一般情况下,好的算法早就把异常值过滤掉了。 用傅里叶变换做处理还有一个不足之处在于只能处理离散的数据。好在天气数据是按日记录的,可以很好地用傅里叶变换的处理流程来做处理。

我来回答
请发表正能量的言论,文明评论!