1
$\begingroup$

I have the following data:

        Date Accumulated
1 2016-10-01     6902000
2 2016-11-01     9033000
3 2017-06-01    15033000
4 2017-11-01    24033000
5 2019-05-01    24533000
6 2019-08-01    25033000
7 2019-11-01    27533000
8 2020-06-01    29033000

After reading some papers and other information, I managed to fill in the missing months with a linear interpolation in R. To produce these final data with a total of 45 observations, I used the following code:

for(i in 1:length(df$Date)) {
  df[i,1] <- paste(as.character(year(df[i,1])),as.character(month(df[i,1])),"01", sep="-")
}
f <- approxfun(df$Date, df$Accumulated)
d <- seq(min(df$Date), max(df$Date), by = "month")

df <- data.frame(Date = d, Accumulated = f(d))

My main interest is forecasting. I tried using ARIMA models with auto.arima() but it seems this is not the most appropriate choice, since the observations do not follow a stochastic process (actually, the observations correspond to an already-established business schedule, but it almost always presents delays), and ARIMA makes assumptions about the underlying population distribution and the sample size, as most parametric models. Because of this, I'm trying to find a nonparametric model instead that could be useful in this situation. I was thinking about Exponential Smoothing (specifically Holt-Winters) since it is considered nonparametric, but I cannot find any information on the internet/literature on whether this is appropriate or not.

Probably the best alternatives would be something like decision tree regressions, support vector regressions, or other machine learning nonparametric models. But there are two problems here: 1) I'm technically dealing with time series, and 2) I have a really, really small sample. From what I've seen, for most nonparametric models to work properly, they require lots of observations, when I only have 45. What do you think I could do?

I must note that I'm not interested in just fitting a curve. I would like to use a rigorous nonparametric time series model if possible. Also, it needs to be a naive forecasting method/model, since I'm only interested in using the lagged values of my "dependent" variable to explain future values in "Accumulated". Maybe I could transform the data and use "Date" in other formats as the independent variable... What do you guys think?

Thank you so much.

$\endgroup$
2
  • 1
    $\begingroup$ If your main interest is forecasting, then filling in missing data (for over 70% of the final dataset!) using a line with an endpoint in the future will induce a look-ahead bias. Also, how does ARIMA assume the population distribution? Most parametric models only assume stationarity and a finite variance, not a distribution. $\endgroup$
    – kurtosis
    Aug 7, 2020 at 21:00
  • 1
    $\begingroup$ I think Arima assumes normality for its tests of coefficients including those that are MA and AR but also regular regressors if you are doing ARIMA with input variables, aka regression with ARIMA error. $\endgroup$
    – user54285
    Aug 7, 2020 at 21:20

2 Answers 2

3
$\begingroup$

More of an extended comment than an answer:

The bad news:

  • "Non parametric" + "Small data sets" = "very bad idea" - non parametric assumes enough data that you would have a very high signal to noise ratio, and you won't have that with 8 data points. If your data is that small, go with some domain based assumptions and use them to come up with as simple a parametric model as you can get.
  • Run away from ML models like tree based methods or SVM as far as you can. "ML" + "8 data points" = "disaster".
  • Interpolating from 8 data points to 45 data points is very dangerous. You are effectively introducing a strong assumption into your model to cover for the large gaps in you measurements. As long as you know what you are doing (see the first bullet point w/r domain knowledge) you're fine, but if you're just assuming that linear interpolation can fill the gaps based on the data alone, that is not a good idea.
  • You can't use lagged values since your data is so irregular/filled with gaps.
  • Where did you get the idea that Holt-Winters is non parametric? I disagree with that. It very much assumes a fixed "Trend + Seasonality + Level" structure, and models them with $\alpha$, $\beta$, and $\gamma$, ergo it is as parametric as it gets.
  • Holt-Winters assumes a seasonal component, but you don't have enough data for any seasonality to be captured, and it is also irregularly spaced. Even Holts method (for modeling trend only) won't work, because with only 8 data points, you won't be able to tell the level from the trend.

The good news:

You do seem to have a very clear upward trend in your data, just fit a growth model against time, most likely logistic growth. This allows to leverage the dates in your data.

I say logistic growth and not linear growth, because your data jumps from 9033000 to 24033000 between 11/2016 and 11/2017, but then seems to slow down, and goes from 24033000 to 27533000 between 11/2017 and 11/2019.

$\endgroup$
1
  • 1
    $\begingroup$ Thank you so much for all the information! $\endgroup$
    – caproki
    Aug 17, 2020 at 5:24
2
$\begingroup$

ESM has a good reputation for being robust and accurate, for example the M contests. I have never heard it called non-parametric, in its classical form that it was originally developed in during the fifties it made no distributional assumptions at all of course. In later years it was realized it was a specialized form of state space models so CI can be created around it. In that form I am not sure it would be considered non-parametric. You can not have any missing data in it. If you decide to do it I recommend running all the ESM (there are six I work with) finding out which predicts a hold out data set best (by a MAPE or whatever) and averaging the best models. I think generating data the way you are is going to create problems regardless of what method you use.

$\endgroup$
1
  • $\begingroup$ Thanks for the information. I think ESM would be good indeed $\endgroup$
    – caproki
    Aug 17, 2020 at 5:25

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.