看看怎么样天气预报?

祖淑萍祖淑萍最佳答案最佳答案

最近知乎上怎么老是有怎么进行预测的问题,难道都是某站水军? 先说我的结论 目前的天气预测理论还很不完善,不可能达到精确要求。而且随着时间的推演和试验的验证,现有的模型还会有所改进甚至大幅度提高。 但你可以把这个问题理解成如何在已知误差的情况下,尽量减小误差。这个在统计分析里叫做方差最小化,是个求解优化问题的数学问题。如果给出更严格的误差范围和要求,就可以用一个优化算法去求解,得到一组最优的参数来拟合实际数据(当然,这些最优参数是建立在误差存在的前提下)。

举个例子,比如你有一堆测量海拔的数据点,想要用曲线拟合的方法求出一个表达式来表示海拔和温度的关系,但由于测量本身存在误差,你用公式计算出的温度其实只是一个估计值,而不能确切地表示真实值(即,不能消除误差)。那么如何让你的估计值更加接近真实值呢?一个办法就是找一堆新的数据点,重新用数学方法进行拟合,直到你新加入的数据点对你原来的估计值改变不大的时候(方差最小了),你就达到了目的。这就是个求解优化的问题。

现在回到正题,如何对现有模型进行调整以达到最好的预报效果。这本质上就是求解一个最优化问题。 先给出我使用的气象数据集(只有40个数据点,好像有点少啊),其中每一个数值代表某一天某个地方的气温。

然后使用Arima(自回归移动平均)模型进行预测。

from scipy.signal import arima_fit

result = arima_fit(temp, order=(2, 1, 1)) # order是自回归和移动平均的阶数

最后用result.predict()函数输入一个新的日期,它就自动根据模型给出行和日的温度预测。

但是结果我并不满意(红色是我使用模型后的实际值与预测值的差,绿色是我使用新数据对原有模型修正后的差),因为虽然差值已经很小了,但显然存在一定程度的错误。

为了进一步减小误差,我可以加入更多的数据点并重新建立模型。但问题是,这样的过程是没有尽头的,因为我可以无限期地搜集数据并添加到我的模型中。另外我补充一句,由于气候的复杂性和数据的有限性,没有一个模型能够绝对准确模拟实际的气候变化,即便是同一种气候现象,不同的模型可能也会有不同的输出结果。这是由样本容量不足导致的无法消除误差的原因所在——无论我加多少新数据和任何新模型,最终的输出来讲总是有偏差的。不过,偏差会越来越少。

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