Forecasting revenue - what and how to pass input I have a dataset with quarter wise revenue for past 3 years from Jan 2020 to Dec 2022. I have 4642 customers.
Each customer has 1 row of data which includes features based on his purchase frequency, avg revenue, total revenue, min revenue and max revenue etc for each quarter.
So, from Jan 2020 to Dec 2022, we have 12 quarters and data for all those quarters.
So, now our objective is to predict the revenue for 2023Q1.
As most of our customers have zero revenue, I use Zero Inflated regressor(ZIR).
So, I built a model with training set (2020Q1 to 2022Q3) and testing set (2022Q4).
But the training was done after some feature selection which resulted in omission certain quarter characteristics.
So, my important variables were Avg_revenue_2021_Q4, AVG_REVENUE_2022_Q2_trans_rate_2022_Q1, Total_revenue_2022Q3
So, now that model is built and validated, I get a R2 of 89% and 87% in train and test set respectively and decent MAE scores.
But my question, how do I predict the revenue for 2023Q1? 2023Q1 hasn't happened yet (and we need to predict in advance for the same).
So, should I build my final model by combining my train (2020Q1 to 2022Q3) and test (2022Q4)?
Once I build this final model, what is the input that I should pass to get predicted values for 2023Q1? there is no test set because 2023Q1 hasn't happened yet.
So, now to predict for 2023Q1 (for each of the 4642 customers), should I again pass the values of Avg_revenue_2021_Q4, AVG_REVENUE_2022_Q2, Total_revenue_2022Q3
?
Or should I shift them by one quarter (and pass values for Avg_revenue_2022_Q1 and Avg_revenue_2022Q3) because our prediction is for one quarter later? (2023Q1)?
I know we could have used techniques like ARIMA etc but now that I have used ZIR, I would like to know how can we predict for the future quarter (next quarter).
 A: Your question implies that you are forecasting for multiple customers simultaneously.   If this is the case then you actually have longitudinal data - repeated observations of the same units (customers).
There are numerous different models for longitudinal data (e.g. fixed effects, random effects, mixed effects).  Because your problem is forecasting rather that inference you should review the assumptions and data constraints, e.g. some estimators require complete data.
Finally, regarding your question of your test data: your training set should yield estimators, and you test these on your test data.  Applying these to your forecast periods then gives you your forecast.  Do not combine your test and training data - that will result in a different model.
However, you should also consider withholding a group of customers - you are  modelling across customers and not just time.
A: Quarterly revenue data often exhibits rather strong yearly seasonality, because customers tend to sign contracts near the end of a quarter to spend remaining budget in their business year (and salespeople know that, and customers know that their salesperson knows that, and all kind of fun games ensue).
It looks like your model has picked up on that: your most important predictors to predict 2022Q4 revenue are

*

*Avg_revenue_2021_Q4 (so just the average revenue from exactly one year before - using this alone would be a "seasonal naive forecast", which is an extremely common simple benchmark for seasonal forecasting)

*AVG_REVENUE_2022_Q2_trans_rate_2022_Q1 (I don't know what that one is)

*Total_revenue_2022Q3 (just total revenue from the last observed quarter, which would again be an extremely common benchmark forecast, the "naive forecast")

To forecast the next quarter 2023Q1, I would now just take the model you have and feed in predictors shifted by one quarter:

*

*Avg_revenue_2022_Q1 in place of Avg_revenue_2021_Q4 (so again, just the average revenue from exactly one year before, but of course now that is 2022Q1, since we are forecasting for 2023Q1)

*AVG_REVENUE_2022_Q3_trans_rate_2022_Q2 in place of AVG_REVENUE_2022_Q2_trans_rate_2022_Q1 (shifting the predictor by one quarter, whatever that is)

*Total_revenue_2022Q4 in place of Total_revenue_2022Q3 (again just total revenue from the last observed quarter before the one we want to forecast for)

Now, if you want to forecast out more than one quarter, e.g., for 2023Q2, you would need to feed in Total_revenue_2023Q1 in place of that last predictor. And you don't know that yet today. The most common approach would be to feed in the forecasted value which you obtained in the previous step. (Alternatively, you could build a separate model which forecasts two quarters ahead, using 2022Q4 as the training target, and only features up to 2022Q2 as training predictors.)
