You are here: Symbol Reference > StatTimeSerAnalysis Namespace > Functions > StatTimeSerAnalysis.TripleExpSmooth Function
Stats Master VCL
ContentsIndex
PreviousUpNext
StatTimeSerAnalysis.TripleExpSmooth Function

Triple exponential smoothing.

Pascal
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; overload;
Parameters 
Description 
Time series data set. 
Smoothed values (see above equation). Size and complex properties of S are set automatically. 
Trend values (see above equation). Size and complex properties of b are set automatically. 
Seasonal indices (see above equation). Size and complex properties of L are set automatically. 
Alpha 
Defines initial estimate for Alpha, returns Alpha which minimizes MSE. 
Beta 
Defines initial estimate for Beta, returns Beta which minimizes MSE. 
Gamma 
Defines initial estimate for Gamma, returns Gamma which minimizes MSE. 
Period 
Period length. An exception is raised if Y.Length mod Period is not 0. 

MSE, evaluated at minimum.

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

 

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 L[0]..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.htmpage. For initial estimate for S and b, the following equations are being used: 

 

 

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.

Generate 24 random values representing 4 quarters x 6 years = 24, perform smoothing and read Alpha,Beta,Gamma + MSE.

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;
#include "MtxExpr.hpp"
#include "Math387.hpp"
#include "StatTimeSerAnalysis.hpp"
void __fastcall Example();
{
  sVector Data,S,b,L;
  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 = TripleExpSmooth(Data,S, b, L, alpha,beta,gamma,4);
  // results: MSE and MLE estimate for Alpha,Beta,Gamma
}
Examples on GitHub
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!