Double Exponential Smoothing is a model used to forecast time series data with a trend but without seasonality. It involves two types of smoothed quantities: smoothed signal and smoothed trend. There are two methods of double exponential smoothing: Holt's linear exponential smoothing and additive damped trend Holt's linear exponential smoothing. Holt's linear method tends to over-forecast, but this can be improved by using a parameter to dampen the trend. The model can be understood as two coupled Single Exponential Smoothing models, and forecasts can be made using a specific equation. The additive damped trend Holt's linear exponential smoothing also includes a damping parameter and has a different equation for making forecasts.
------

SET SCHEMA DM_PAL;

DROP TABLE #PAL_PARAMETER_TBL;
CREATE LOCAL TEMPORARY COLUMN TABLE #PAL_PARAMETER_TBL (
	"PARAM_NAME " VARCHAR(100),
	"INT_VALUE" INTEGER, 
	"DOUBLE_VALUE" DOUBLE, 
	"STRING_VALUE" VARCHAR (100)
);

INSERT INTO #PAL_PARAMETER_TBL VALUES ('ALPHA', NULL,0.501, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('BETA', NULL,0.072, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('FORECAST_NUM',6, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('EXPOST_FLAG',1, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('MEASURE_NAME', NULL, NULL, 'MSE');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('PREDICTION_CONFIDENCE_1', NULL, 0.8, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('PREDICTION_CONFIDENCE_2', NULL, 0.95, NULL);

DROP TABLE PAL_DOUBLESMOOTH_DATA_TBL;
CREATE COLUMN TABLE PAL_DOUBLESMOOTH_DATA_TBL ("ID" INT, "RAWDATA" DOUBLE);

INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (1,143.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (2,152.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (3,161.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (4,139.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (5,137.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (6,174.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (7,142.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (8,141.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (9,162.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (10,180.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (11,164.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (12,171.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (13,206.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (14,193.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (15,207.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (16,218.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (17,229.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (18,225.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (19,204.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (20,227.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (21,223.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (22,242.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (23,239.0);
INSERT INTO PAL_DOUBLESMOOTH_DATA_TBL VALUES (24,266.0);

CALL _SYS_AFL.PAL_DOUBLE_EXPSMOOTH(PAL_DOUBLESMOOTH_DATA_TBL, #PAL_PARAMETER_TBL, ?,?);

