在我的论文项目中,我试图通过使用天气预报数据(特别是降雨量和蒸发量的毫米)的粒子过滤器来预测地下水位。作为粒子过滤过程的一部分,我需要根据这些天气预报数据对地下水位进行预测,我想使用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-loop,对1-1-2019年至1-3-2019年期间的每一天进行30天的预测。 在每一天,我都会得到一个数据集,里面有当天的30天天气预报。我想做的,是把这个天气预报数据添加到模型中,用它来预测这30天的地下水位。有什么方法可以做到这一点吗?
将数据添加到 solve()
不起作用,该方法 simulate()
不采集任何数据。
这个问题是一个用户通过邮件发给我的。我把它贴在这里,是为了在SO上增加一个面食问题。
EDIT:更新了问题,有了用户的解释。
比方说,我们已经建立了一个帕斯模型 ml
以降水和蒸发为应力。优化特定时期的时序模型,通过指定时期来实现。ml.solve()
:
ml.solve(tmin="2010", tmax="2020")
要模拟一个特定的时期,使用相同的tmintmax选项。ml.simulate()
. 所以对于2020年1月地下水位的预测。
sim = ml.simulate(tmin="2020-01-01", tmax="2020-01-31")
sim
是一个 pandas.Series
含有模拟的地下水水头。请注意,降水和蒸发时间序列必须有您要模拟的时期的数据,否则模型将使用时间序列的平均值来计算地下水位。