Создание прогноза с помощью модели временных рядов пасты - PullRequest
1 голос
/ 23 апреля 2020

Для моего дипломного проекта я пытаюсь прогнозировать уровень грунтовых вод, применяя фильтр частиц, который использует данные прогноза погоды (в частности, мм осадков и испарения). В рамках процесса фильтрации частиц мне нужно сделать прогноз уровня грунтовых вод на основе этих данных прогноза погоды, что я хочу сделать, используя модель 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 - данные об уровне грунтовых вод за период с 1-1-2018 до 1-1-2019 и wm_train измерения погоды для тех же данных. Rh - это количество осадков, а EV - испарение.

Эта модель объясняет измерения уровня подземных вод, которые даются в сочетании с измерениями погоды. Что я хочу сделать, так это сделать прогноз на период, в который измерения уровня подземных вод не проводятся, но есть измерения погоды.

В частности, я использую for-l oop, который составляет 30 дней прогноз на каждый день в период с 1-1-2019 по 1-3-2019. Каждый день я получаю набор данных с прогнозом погоды на этот день на 30 дней. Что я хотел бы сделать, так это добавить данные прогноза погоды в модель и использовать их для прогнозирования уровня подземных вод на этот 30-дневный период. Есть ли способ сделать это?

Добавление данных в solve() не работает, а метод simulate() не принимает никаких данных.

Этот вопрос был отправлен я пользователем по почте. Я публикую его здесь, чтобы добавить вопрос о пастах в SO.

РЕДАКТИРОВАТЬ: обновленный вопрос с объяснением пользователя.

1 Ответ

1 голос
/ 23 апреля 2020

Допустим, мы создали пасту Модель ml с осадками и испарением в качестве напряжений. Оптимизация модели временных рядов для определенного периода c выполняется путем указания периода в ml.solve():

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

Для имитации определенного периода c используйте те же параметры tmin / tmax в ml.simulate() , Таким образом, для прогноза уровня подземных вод в январе 2020 года:

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

sim - это pandas.Series, содержащий моделируемый напор подземных вод. Обратите внимание, что временные ряды осадков и испарения должны иметь данные за период, который вы хотите смоделировать, в противном случае модель будет использовать среднее значение временных рядов для расчета уровня подземных вод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...