StatTimeSerAnalysis.TripleExpSmooth Method

Overload List

#SignatureDescription
1procedure TripleExpSmooth(const Y: TVec; const S: TVec; const B: TVec; const L: TVec; const Alpha: Double; const Beta: Double; const Gamma: Double; out MSE: Double; const Period: Integer);In this case a fixed smoothing constants Alpha, Beta and Gamma are used in smoothing equations (no minimization is performed).
2function TripleExpSmooth(const Y: TVec; const S: TVec; const B: TVec; const L: TVec; var Alpha: Double; var Beta: Double; var Gamma: Double; const Period: Integer): Double;Triple exponential smoothing.

Overload 1: procedure TripleExpSmooth(const Y: TVec; const S: TVec; const B: TVec; const L: TVec; const Alpha: Double; const Beta: Double; const Gamma: Double; out MSE: Double; const Period: Integer);

In this case a fixed smoothing constants Alpha, Beta and Gamma are used in smoothing equations (no minimization is performed).

#NameDescription
1MSEReturns MSE, evaluated for constant Alpha, Beta and Gamma.
2YTime series data set.
3SSmoothed values (see above equation). Size and complex properties of S are set automatically.
4BTrend values (see above equation). Size and complex properties of b are set automatically.
5LSeasonal indices (see above equation). Size and complex properties of L are set automatically.
6AlphaDefines initial estimate for Alpha, returns Alpha which minimizes MSE.
7BetaDefines initial estimate for Beta, returns Beta which minimizes MSE.
8GammaDefines initial estimate for Gamma, returns Gamma which minimizes MSE.
9PeriodPeriod length. An exception is raised if Y.Length mod Period is not 0.

Result: stored in self (calling object)

Overload 2: function TripleExpSmooth(const Y: TVec; const S: TVec; const B: TVec; const L: TVec; var Alpha: Double; var Beta: Double; var Gamma: Double; const Period: Integer): Double;

Triple exponential smoothing.

#NameDescription
1YTime series data set.
2SSmoothed values (see above equation). Size and complex properties of S are set automatically.
3BTrend values (see above equation). Size and complex properties of b are set automatically.
4LSeasonal indices (see above equation). Size and complex properties of L are set automatically.
5AlphaDefines initial estimate for Alpha, returns Alpha which minimizes MSE.
6BetaDefines initial estimate for Beta, returns Beta which minimizes MSE.
7GammaDefines initial estimate for Gamma, returns Gamma which minimizes MSE.
8PeriodPeriod length. An exception is raised if Y.Length mod Period is not 0.

Returns: Double - MSE, evaluated at minimum.

Remarks:

Performs triple exponential smoothing (also known as Holt-Winters smoothing) using the following equations:

S[i]=αY[i]L[iP]+(1α)(S[i1]+b[i1]),overral smoothingb[i]=γ(S[i]S[i1])+(1γ)b[i1],trend smoothingL[i]=βY[i]S[i]+(1β)L[iP],seasonal smoothing\begin{aligned} S[i] &= \alpha \cfrac{Y[i]}{L[i-P]} + (1-\alpha)\left(S[i-1]+b[i-1]\right) \quad , \quad \text {overral smoothing} \\ b[i] &= \gamma \left( S[i]-S[i-1]\right) + (1-\gamma)b[i-1] \quad , \quad \text{trend smoothing} \\ L[i] &= \beta \cfrac{Y[i]}{S[i]} + (1-\beta)L[i-P] \quad , \quad \quad \text{seasonal smoothing} \end{aligned}

where Y are the observations, S are the smoothed observations, b trend factors, L the seasonal indices and P is the period length. To initialize triple exponential smoothing method we need at least one complete season's data to determine initial estimates of the seasonal indices L0]..L[P-1]. Again, there are several ways to initialize L values. The algorithm uses approach, described at [www.itl.nist.gov/div898/handbook/pmc/section4/pmc435.htm page. For initial estimate for S and b, the following equations are being used:

S[P1]=1Pi=0P1Y[i],b[P1]=1P2((Y[P]Y[0])+(Y[P+1]Y[1])++(Y[2P1]Y[P1])).\begin{aligned} S[P-1] &= \cfrac{1}{P}\sum _{i=0} ^{P-1} Y[i] \quad , \\ b[P-1] &= \cfrac{1}{P^2} \left((Y[P]-Y[0]) + (Y[P+1]-Y[1]) + \cdots + (Y[2P-1]-Y[P-1])\right) \quad . \end{aligned}

Note
There are no S[0]..S[P-2] values; the smoothed series starts with the smoothed version of the Y[P] observation. Also note that the internal algorithm automatically accounts for this by resizing S,b vector to Y.Length-Period.

Examples
Uses MtxExpr,StatTimeSerAnalysis, Math387;
procedure Example;
var Data,S,b,L: Vector;
Alpha,Beta,Gamma,MSE: double;
begin
    Data.Size(24,false);
    Data.RandGauss;
    // smooth data, initial alpha = 0.1, beta=0.1, gamma = 0.3
    Alpha := 0.1;
    Beta := 0.1;
    Gamma := 0.3;
    // Period = 4
    MSE := TripleExpSmooth(Data,S,b,L,Alpha,Beta,Gamma,4);
    // results: MSE and MLE estimate for Alpha,Beta,Gamma
end;
See Also: StatTimeSerAnalysis.TripleExpForecast