使用Pastas时间序列模型进行预测

时间:2020-04-23 12:33:37

标签: python time-series forecasting

对于我的论文项目,我试图通过使用一个使用天气预报数据(特别是毫米数的降雨和蒸发量)的粒子过滤器来预测地下水位。作为粒子过滤过程的一部分,我需要根据天气预报数据对地下水位进行预测,我想使用Pastas模型进行预测。

此刻,我已经按照以下方法训练了Pastas模型:

import pastas as ps

# set up model
model = ps.Model(gwml_train.gws)

# add stresses information
rain = ps.StressModel(wm_train.RH, ps.Gamma, name='rain', settings="prec")
evap = ps.StressModel(wm_train.EV, ps.Gamma, name='evap', settings="evap")
model.add_stressmodel(rain)
model.add_stressmodel(evap)

# solve model
model.solve()

其中gwml_train是2018年1月1日至2019年1月1日期间的地下水位数据,而wm_train是同一数据的天气预报。 Rh是降雨,EV是蒸发。

此模型说明了结合天气测量结果给出的地下水位测量结果。我要做的是对没有给出地下水位测量值但有天气测量值的时期进行预测。

具体来说,我使用一个for循环,该循环对1-1-2019至1-3-2019期间的每一天进行30天的预测。每天我都会获得一个数据集,其中包含当天的30天天气预报。我想做的就是将这个天气预报数据添加到模型中,并用它来预测那30天期间的地下水位。有办法吗?

无法将数据添加到solve(),并且方法simulate()不会获取任何数据。

这个问题是由用户通过邮件发送给我的。我将其发布在此处以在SO上添加面食问题。

编辑:更新了带有用户说明的问题。

1 个答案:

答案 0 :(得分:1)

假设我们创建了一个面食模型ml,以降水和蒸发为压力。通过在ml.solve()中指定时间段,可以在特定时间段上优化时间序列模型:

ml.solve(tmin="2010", tmax="2020")

要模拟特定期间,请使用ml.simulate()中相同的tmin / tmax选项。因此,对于2020年1月的地下水位预测:

sim  = ml.simulate(tmin="2020-01-01", tmax="2020-01-31")

sim是包含模拟地下水位的pandas.Series。请注意,降水和蒸发时间序列确实需要具有您要模拟的时间段的数据,否则模型将使用时间序列的平均值来计算地下水位。