2
$\begingroup$

I have 10 day temperature forecast data that is hourly initially and then every 3 hours. I would like to predict the hourly values for the full 10 days. Linear interpolation fails as sunrise and other factors (cloud cover, precipitation, etc.) significantly affect the temperature within that three hour period. For example if the temperature is 40 degrees at 5am and 50 degrees at 8am, the temperature at 6am may be 41 degrees and the temperature at 7am 49 degrees.

There are several methods available to forecast the temperature beyond the end of the period (such as SARIMAX and NeuralProphet), however these also don't work for the "missing" hourly data because they do not take into account the following temperature data point.

A spline is the best solution we have determined so far, but this does not account for things like cloud cover, where the temperature rise over a sunrise may in fact be more linear. PyPOTS and specifically the SAITS algorithm (https://github.com/WenjieDu/SAITS) is promising but I do not see a way to include exogenous variables.

$\endgroup$

1 Answer 1

0
$\begingroup$

I think this could be tackled in two stages. The first stage would be to train a model that forecasts the next 2 hours of data given the current hour's data.

You can then supply the 3-hourly data to that trained model, and it will forecast the 'missing' hours because that's what it has been trained to do.

The first stage relies on the hourly data; you use it to create a sliding-window training set where the features are the current temperature, cloud cover, precipitation, etc. The targets are the next two hours'-worth of data (which could be just the temperature, or multiple variables).

When it comes to the choice of model to use, I think traditional ML algorithms targeting tabular data might work just as well as neural nets. With neural nets you'd have the option of various recurrent architectures, which are worth trying, but they won't necessarily be superior for short forecasting windows and small datasets.

$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.