# VoseTimeEmpiricalFit

VoseTimeEmpiricalFit({data}, Multiply, Initial Value, Uncertainty)

Example model

This function returns random samples from a time series empirically fit to a set of data.

{data} – is a single column (or row) array of consecutive observations from some variable;

Multiply – is a Boolean parameter (TRUE or FALSE). If TRUE each value in the series is assumed to be related to its previous value by some multiplicative random factor. If FALSE each value in the series is assumed to be related to its previous value by some additive random factor;

Initial Value – starting value (at time zero). The generated time series values will continue on from this value. Should only be provided if the Log Return parameter is set to FALSE or omitted;

Uncertainty – is an optional Boolean parameter. If TRUE, the function will use non-parametric Bootstrapping to incorporate statistical uncertainty into the fitted projection. The parameter is FALSE if omitted.

The main advantage of this forecasting function is that it makes only very weak assumptions about the behavior of the variable being modeled, namely (1) that there is no ‘memory’, meaning that the variable does not behave in a way that is connected to its previous history; and (2) that the random variations from one period to the next are either a multiplicative or additive factor on the previous value. The distribution of this factor is determined by the data set, not by fitting a theoretical distribution.

Explanation of the mathematics

Assume the data array contains k values. VoseTimeEmpiricalFit operates in two modes, depending on the setting of the Multiply parameter:

Case 1: Multiply = TRUE

The function calculates ratio[i] = data[i]/data[i-1] for i = 2 to k. It then makes a forecast for the required number of periods T by using:

S[0]  = InitialValue (not in forecast)

S[t] = S[t-1] * RandomSample[{ratio}] for t = 1 to T

In other words, in this mode the function is assuming that the underlying variable causing the random behavior is dictating a proportional change in the modeled variable S. This is most appropriate for things like prices (of commodities, stocks, currency – i.e. exchange rates). This mode has the added advantage that if {data} are all positive, then the function will produce a forecast that is always positive.

Case 2: Multiply = FALSE

The function calculates change[i] = data[i]-data[i-1] for i = 2 to k. It then makes a forecast for the required number of periods T by using:

S[0]  = InitialValue (not in forecast)

S[t] = S[t-1] + RandomSample[{change}] for t = 1 to T

In other words, in this mode the function is assuming that the underlying variable causing the random behavior is dictating an additive change in the modeled variable S. This is most appropriate for things like changes in water levels in a lake or any reservoir/storage-type of problem, and sales volumes and other fairly linearly growing variables where the level of randomness is relatively small so that one has little risk of producing negative values. This mode has the advantage that it will continue a historic straight line well, but has the disadvantage that it can produce negative values if {change} are not all positive.