I am pretty new into data science and I had some issues with my project.

I am trying to build a forecasting model for a time series data. It is about yearly CO2 emissions from agriculture.

The issue is that there is a really limited dataset (30 values corresponding to 30 years, i.e. one value per year) and from this series I haven't found any trend and there is 0 seasonality.

The df is from a csv file with the following format:

"Year" column with values from 1990 - 2020 "CO2" column with values for each year (115-47)

All values are integers, there are no missing values or extremes

I am trying to work in Python, and so far I have tried ETS, Holt Winters, Prophet and ARIMA but they all output a straight line corresponding to the mean of the total values, as a forecast, with a really broad ci.

My question is, what models could I use to try and build a somewhat-qualitative forecast for the upcoming 10-20 time steps (years)?

Thank you in advance!


2 Answers 2


Assuming your inference is correct that there is no trend or seasonality, or any other non-stationarity you can think of, then it sounds like you might benefit from an attempt at modelling this as a sequence of IID random variables.

If however there is not trend or seasonality but there is heteroschedasticity then you will want to pick something non-IID where you can model how the variance is changing.


There is no reason for yearly data to be seasonal (for monthly data, one would expect seasonality), so this part makes sense.

ETS and Holt-Winters (which is just a special case of ETS), and probably Prophet, and many ARIMA models, do output a flat line. Without trend, seasonality, autoregressive or moving average dynamics or predictors, that is exactly what should happen, because by definition no signal was detected that would change the forecast for one time point compared to another one. We have many threads on this.

However, note that the forecast from ETS and Holt-Winters (and probably Prophet) is not just the overall average. Rather, it is a weighted average, with more recent data points weighted more heavily. See here.

And all of these, plus the simple historical average, are usually the best you can do for short time series. Anything more complex, e.g., forcing a non-trivial ARIMA model because its forecasts are more "wobbly" and look more sophisticated, is almost guaranteed to yield worse forecasts: Best method for short time-series and Kolassa (2023).

There is really little else to do than to try to collect much more data (and even then it may well be that an almost trivial model yields the best forecast). Or to accept the fact that with little data, there is little forecasting one can do.

  • 1
    $\begingroup$ Sometimes yearly data is seasonal. It depends on the problem. For example, Milankovitch cycles have periods longer than a year. $\endgroup$
    – Galen
    Dec 15, 2023 at 8:06

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.