StatTimeSerAnalysis.TripleExpSmooth Method

Overload List

#SignatureDescription
1void TripleExpSmooth(TVec Y, TVec S, TVec B, TVec L, Double Alpha, Double Beta, Double Gamma, ref Double MSE, Int32 Period)In this case a fixed smoothing constants Alpha, Beta and Gamma are used in smoothing equations (no minimization is performed).
2Double TripleExpSmooth(TVec Y, TVec S, TVec B, TVec L, ref Double Alpha, ref Double Beta, ref Double Gamma, Int32 Period)Triple exponential smoothing.

Overload 1: void TripleExpSmooth(TVec Y, TVec S, TVec B, TVec L, Double Alpha, Double Beta, Double Gamma, ref Double MSE, Int32 Period)

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: Double TripleExpSmooth(TVec Y, TVec S, TVec B, TVec L, ref Double Alpha, ref Double Beta, ref Double Gamma, Int32 Period)

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
using Dew.Math;
using Dew.Stats;
using Dew.Stats.Units;
namespace Dew.Examples
{
    private void Example()
    {
        Vector Data = new Vector(0);
        Vector S = new Vector(0);
        Vector b = new Vector(0);
        Vector L = new Vector(0);
        Data.Size(24,false);
        Data.RandGauss();
        // smooth data, initial alpha = 0.1, beta=0.1, gamma = 0.3
        double alpha = 0.1;
        double beta = 0.1;
        double gamma = 0.3;
        // Period = 4
        double MSE = StatTimeSerAnalysis.TripleExpSmooth(Data,S, b, L, ref alpha,ref beta, ref gamma,4);
        // results: MSE and MLE estimate for Alpha,Beta,Gamma
    }
}
See Also: StatTimeSerAnalysis.TripleExpForecast