I am forecasting from multivariate, geographical, timeseries data.
My data includes historical prices and production quantities per product, and different places produce and sell different sets of products. For example:
Sussex, UK | Month 1 | Month 2 | Month 3 |
---|---|---|---|
Wheat | |||
Price USD | 3 | 4 | 3 |
Qty Produced T | 200 | 100 | 150 |
Apples | |||
Price USD | 1 | 2 | 0.8 |
Qty Produced T | 20 | 10 | 50 |
Brisbane, Aus | Month 1 | Month 2 | Month 3 |
---|---|---|---|
Rice | |||
Price USD | 3 | 4 | 3 |
Qty Produced T | 200 | 100 | 150 |
Banana | |||
Price USD | 5 | 4 | 3 |
Qty Produced T | 200 | 300 | 450 |
The product lists are different for each location. I’m looking to forecast a (coarse) consumption indicator across all. How should I structure this for training and forecasting?
My Guesses, probably of little interest as I’m pretty inexperienced
One approach I could use would be to normalize and average all prices. (Prices are collected for the most important products in each area.) This would remove a lot of detail though. I could guess how important each product is by the quantity grown, but this could often be misleading. The relationships and tensions between price and production are useful.
I guess the brute force approach would be to have every product in every example, with an empty token for any products’ timeseries not traded in an area. That would be a very sparse and large dataset though.
Could I have say product1="rice w2v embedding", product2="banana w2v embedding", price_timeseries1=[rice prices], price_timeseries2=[banana prices]
(then in another example, same for wheat and apples)? Is any model going to make sense of that complexity?
My best guess is categorizing products, eg, into ‘carbohydrate’ for rice and wheat, and normalize then mean average the products of each category. (Is there a way I can derive or learn the categorization?) I can’t find anyone else doing anything like this, and I’m so new to the field I’ll inevitably have overlooked important statistical detail.
The source geographical data is in admin units (town boundaries). I’m thinking either option (a) convert everything into a 100km2 grid, or (b) cos(lat).cos(lon), cos(lat).sin(lon), sin(lat)
of shape centroid lon/lat, to get (scaled) coordinates in 3D, plus area and population.
Option (b) is easier, but admin units change over time.
Any recommendations/hunches?
I am (perhaps naively) considering ARIMA, XGBoost, LSTM, a timeseries transformer, maybe Mamba, if relevant. Given my utter inexperience, I suspect XGBoost is probably the sweet spot of complexity/capability and minimal tuning skills, although I’ll try more complex architectures, as I understand trees will miss relationships between production and price.
Huge thanks for any tips at all.
Martin Home is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.