|
|||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
PMML 4.2 - Time Series ModelsA Time Series is a sequence of data points, measured at points in time, usually, but not necessarily, forming equidistant intervals. Time series analysis strives to understand such time series, often with the goal of making forecasts (predictions) or of filling in missing values between known data points. Time series prediction is the use of a model to predict future events based on known past events before they are measured. Interpolation is the use of a model to complement or amend values between known data points. The model must contain information on the general trend, a description of periodic behavior and an overall fitting function that can be used for forecasting and/or interpolation. It may also contain detailed information on various aspects of the time series and the expected forecasting accuracy. In addition to the entries common to all models, a TimeSeriesModel contains results of at least one time series algorithm, for example SpectralAnalysis, ARIMA, ExponentialSmoothing or SeasonalTrendDecomposition. In PMML 4.2, only Exponential Smoothing is defined, the other algorithms are planned for later versions. There are up to three TimeSeries elements holding original or predicted time series values. <xs:element name="TimeSeriesModel"> <xs:complexType> <xs:sequence> <xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="MiningSchema"/> <xs:element ref="Output" minOccurs="0"/> <xs:element ref="ModelStats" minOccurs="0"/> <xs:element ref="ModelExplanation" minOccurs="0"/> <xs:element ref="LocalTransformations" minOccurs="0"/> <xs:element ref="TimeSeries" minOccurs="0" maxOccurs="3"/> <xs:element ref="SpectralAnalysis" minOccurs="0" maxOccurs="1"/> <xs:element ref="ARIMA" minOccurs="0" maxOccurs="1"/> <xs:element ref="ExponentialSmoothing" minOccurs="0" maxOccurs="1"/> <xs:element ref="SeasonalTrendDecomposition" minOccurs="0" maxOccurs="1"/> <xs:element ref="ModelVerification" minOccurs="0"/> <xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="modelName" type="xs:string" use="optional"/> <xs:attribute name="functionName" type="MINING-FUNCTION" use="required"/> <xs:attribute name="algorithmName" type="xs:string" use="optional"/> <xs:attribute name="bestFit" type="TIMESERIES-ALGORITHM" use="required"/> <xs:attribute name="isScorable" type="xs:boolean" default="true"/> </xs:complexType> </xs:element> <xs:simpleType name="TIMESERIES-ALGORITHM"> <xs:restriction base="xs:string"> <xs:enumeration value="ARIMA"/> <xs:enumeration value="ExponentialSmoothing"/> <xs:enumeration value="SeasonalTrendDecomposition"/> <xs:enumeration value="SpectralAnalysis"/> </xs:restriction> </xs:simpleType> <xs:element name="TimeSeries"> <xs:complexType> <xs:sequence> <xs:element ref="TimeAnchor" minOccurs="0" maxOccurs="1"/> <xs:element ref="TimeValue" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="usage" type="TIMESERIES-USAGE" default="original"/> <xs:attribute name="startTime" type="REAL-NUMBER"/> <xs:attribute name="endTime" type="REAL-NUMBER"/> <xs:attribute name="interpolationMethod" type="INTERPOLATION-METHOD" default="none"/> </xs:complexType> </xs:element> <xs:simpleType name="TIMESERIES-USAGE"> <xs:restriction base="xs:string"> <xs:enumeration value="original"/> <xs:enumeration value="logical"/> <xs:enumeration value="prediction"/> </xs:restriction> </xs:simpleType> <xs:element name="TimeValue"> <xs:complexType> <xs:sequence> <xs:element ref="Timestamp" minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attribute name="index" type="INT-NUMBER" use="optional"/> <xs:attribute name="time" type="NUMBER" use="optional"/> <xs:attribute name="value" type="REAL-NUMBER" use="required"/> <xs:attribute name="standardError" type="REAL-NUMBER" use="optional"/> </xs:complexType> </xs:element> <xs:element name="TimeAnchor"> <xs:complexType> <xs:sequence> <xs:element ref="TimeCycle" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="TimeException" minOccurs="0" maxOccurs="2"/> </xs:sequence> <xs:attribute name="type" type="TIME-ANCHOR"/> <xs:attribute name="offset" type="INT-NUMBER"/> <xs:attribute name="stepsize" type="INT-NUMBER"/> <xs:attribute name="displayName" use="optional"/> </xs:complexType> </xs:element> <xs:element name="TimeCycle"> <xs:complexType> <xs:sequence> <xs:group ref="INT-ARRAY" minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attribute name="length" type="INT-NUMBER"/> <xs:attribute name="type" type="VALID-TIME-SPEC"/> <xs:attribute name="displayName" use="optional"/> </xs:complexType> </xs:element> <xs:simpleType name="TIME-ANCHOR"> <xs:restriction base="xs:string"> <xs:enumeration value="dateTimeMillisecondsSince[0]"/> <xs:enumeration value="dateTimeMillisecondsSince[1960]"/> <xs:enumeration value="dateTimeMillisecondsSince[1970]"/> <xs:enumeration value="dateTimeMillisecondsSince[1980]"/> <xs:enumeration value="dateTimeSecondsSince[0]"/> <xs:enumeration value="dateTimeSecondsSince[1960]"/> <xs:enumeration value="dateTimeSecondsSince[1970]"/> <xs:enumeration value="dateTimeSecondsSince[1980]"/> <xs:enumeration value="dateDaysSince[0]"/> <xs:enumeration value="dateDaysSince[1960]"/> <xs:enumeration value="dateDaysSince[1970]"/> <xs:enumeration value="dateDaysSince[1980]"/> <xs:enumeration value="dateMonthsSince[0]"/> <xs:enumeration value="dateMonthsSince[1960]"/> <xs:enumeration value="dateMonthsSince[1970]"/> <xs:enumeration value="dateMonthsSince[1980]"/> <xs:enumeration value="dateYearsSince[0]"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="VALID-TIME-SPEC"> <xs:restriction base="xs:string"> <xs:enumeration value="includeAll"/> <xs:enumeration value="includeFromTo"/> <xs:enumeration value="excludeFromTo"/> <xs:enumeration value="includeSet"/> <xs:enumeration value="excludeSet"/> </xs:restriction> </xs:simpleType> <xs:element name="TimeException"> <xs:complexType> <xs:sequence> <xs:group ref="INT-ARRAY" minOccurs="1"/> </xs:sequence> <xs:attribute name="type" type="TIME-EXCEPTION-TYPE"/> <xs:attribute name="count" type="INT-NUMBER"/> </xs:complexType> </xs:element> <xs:simpleType name="TIME-EXCEPTION-TYPE"> <xs:restriction base="xs:string"> <xs:enumeration value="exclude"/> <xs:enumeration value="include"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="INTERPOLATION-METHOD"> <xs:restriction base="xs:string"> <xs:enumeration value="none"/> <xs:enumeration value="linear"/> <xs:enumeration value="exponentialSpline"/> <xs:enumeration value="cubicSpline"/> </xs:restriction> </xs:simpleType> The isScorable attribute indicates whether the model is valid for scoring. If this attribute is true or if it is missing, then the model should be processed normally. However, if the attribute is false, then the model producer has indicated that this model is intended for information purposes only and should not be used to generate results. In order to be valid PMML, all required elements and attributes must be present, even for non-scoring models. For more details, see General Structure. The element TimeSeries contains a time
series consisting of several TimeValue objects. The time series can be
an original time series as read from the input data; in this case the
attribute interpolationMethod is 'none'. Or it can be a pre-processed
and interpolated time series; pre-processing and interpolation may be
necessary to produce a logical time series, for most time series algorithms
require a sequence of logically equidistant time steps. If a logical time
series is present, it was used as input into the algorithm. Finally, the time
series (usage = 'prediction') may hold values predicted by the best-fitting
model. TimeValue contains one single point of a time series. The point can
either be a known point from the past; in this case, only the attribute
value is required. In addition, time or index must be
used. In case of a logical TimeSeries, index values must be present. Or the
time point is a predicted future value; in this case, the attribute
standardError can contain the incertitude (predicted standard error)
of the prediction standard based on the empirically determined
error. TimeAnchor optionally defines the relationship between time points in a time series and a calendar. It is not used for computing predictions, but it may be used by applications or visualization tools that want to come up with predictions based on points of time in a calendar as opposed to just a look-ahead index. Time is anchored at an offset with respect to a specified calendar point given by type. And the flow of time is defined in smallest steps of size stepsize. Both offset and stepsize are (long) integer values in the units specified in type. An optional displayName, e.g. "day" can be provided as a name for the time step. TimeCycle allows to express the situation where time steps are not
contiguous on a calendar. As an example, consider hourly revenue data of a
store that opens Mo-Sat from 7am to 9pm. One has to represent hours as being
the step size of the data, but one also wants to be able to specify that
Sundays and night-shifts should be disregarded, i.e. for the time series
prediction, the value for Monday 8am (aggregated revenue between 7am and 8am)
immediately follows that of Saturday 9pm. <TimeAnchor type="dateTimeSecondsSince[1960]" offset="1530543600" stepsize="3600" displayName="hour"> <TimeCycle length="24" type="includeFromTo" displayName="day"> <Array type="int" n="2">7 20</Array> </TimeCycle> <TimeCycle length="7" type="excludeSet" displayName="week"> <Array type="int" n="1">6</Array> </TimeCycle> </TimeAnchor> Calendar entries can now be described as a sequence of values. The 15th hour of the 6th day in the 30th week since the time anchor (1530543600 seconds after the beginning of 1960) would become <29, 5, 14>. In addition to the regular behavior, there may be exceptions to the TimeStep specification. The store may, for example, be closed on July 4th, but exceptionally open late because of an event on some other day. This is captured by up to two TimeExceptions, which contain lists of unsystematic exclusions or inclusions as arrays of index values. All index values of a certain TimeCycle can be specified by using the length value instead of a valid index; -1 is used for the regular indexes.. The following TimeExceptions specify additional shop closure and opening hours. <TimeExceptions type="exclude" count="2"%gt; <!-- closed in the 5th week on the 6th day at the 8th hour --%gt; <Array type="int"%gt;4 5 7</Array%gt; <!-- closed in the 33rd week, throughout the 1st day --%gt; <Array type="int"%gt;32 0 24</Array%gt; </TimeExceptions%gt; <TimeExceptions type="include" count="2"%gt; <!-- open in the 1st week on the 7th day at regular hours --%gt; <Array type="int"%gt;0 6 -1</Array%gt; <!-- open in the 34th week on the 6th day at the 20th hour --%gt; <Array type="int"%gt;33 5 19</Array%gt; </TimeExceptions%gt; ExponentialSmoothing contains an exponential smoothing model for the time series. It is one out of the 15 possible model type combinations (no trend N, additive trend A, damped additive trend DA, multiplicative trend M, damped multiplicative trend DM) * (no seasonality N, additive seasonality A, multiplicative seasonality M). If the model contains a seasonality, the seasonality info is captured in the Seasonality sub-element. Each TimeValue sub-element contains one predicted time point. The predicted time points are calculated from Gardner, Jr., E.S., "Exponential smoothing: The state of the art - Part II", 3 Jun. 2005 for the given Trend combined with the Seasonality type. The number of predicted time points contained in the model may be determined by the modeling kernel, for example by using the incertitude ranges of each prediction. This model also supports the multiple smoothing techniques described in the Multiple Smoothing for Higher-order Polynomials found in Brown, R.G., Smoothing, Forecasting and Prediction of Discrete Time Series, Mineola, New York: Dover Publications, Inc., 2004. <xs:element name="ExponentialSmoothing"> <xs:complexType> <xs:sequence> <xs:element ref="Level" minOccurs="1" maxOccurs="1"/> <xs:element ref="Trend_ExpoSmooth" minOccurs="0" maxOccurs="1"/> <xs:element ref="Seasonality_ExpoSmooth" minOccurs="0" maxOccurs="1"/> <xs:element ref="TimeValue" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="RMSE" type="REAL-NUMBER"/> <xs:attribute name="transformation" default="none"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="none"/> <xs:enumeration value="logarithmic"/> <xs:enumeration value="squareroot"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> RMSE is the root mean squared error of the predictions. Transformation specifies what transformation has been applied to the time series prior to executing the algorithm. Possible values are "none," "logarithmic" and "squareroot." This attribute is informational only, and does not affect scoring. Level specifies smoothedValue the smoothed value of the time series at the last known point of the history. The optional attribute alpha is the optimal smoothing parameter for the level. It can be used to continue the fitting process if more data become known, but it is not needed for scoring. However, it may be used to compute theoretical confidence intervals. <xs:element name="Level"> <xs:complexType> <xs:attribute name="alpha" type="REAL-NUMBER" use="optional"/> <xs:attribute name="smoothedValue" type="REAL-NUMBER"/> </xs:complexType> </xs:element> Trend_ExpoSmooth specifies the smoothed value or coefficients of the trend at the last known point of the history. For the Gardner models, the smoothed value can be found in the smoothedValue attribute; for Brown's polynomial models, the smoothed coefficients can be found in the array sub-element. The smoothed coefficients are required if the specified trend is "polynomial_exponential;" otherwise, the smoothed value is required. The optional attribute gamma is the optimal smoothing parameter for the trend. It can be used to continue the fitting process if more data become known, but it is not needed for scoring. The damping parameter phi is needed when scoring the damped versions of the Gardner models. <xs:element name="Trend_ExpoSmooth"> <xs:complexType> <xs:sequence> <xs:group ref="REAL-ARRAY" minOccurs="0"/> </xs:sequence> <xs:attribute name="trend" default="additive"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="additive"/> <xs:enumeration value="damped_additive"/> <xs:enumeration value="multiplicative"/> <xs:enumeration value="damped_multiplicative"/> <xs:enumeration value="polynomial_exponential"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="gamma" type="REAL-NUMBER" use="optional"/> <xs:attribute name="phi" type="REAL-NUMBER" use="optional" default="1"/> <xs:attribute name="smoothedValue" type="REAL-NUMBER" use="optional"/> </xs:complexType> </xs:element> Seasonality_ExpoSmooth describes a periodic oscillation cycle with a length of period time units, where period must be a positive integer. The phase indicates the season index of the last known data point; it defaults to period. The oscillation can be additive, that means of the form 'trend + oscillation' or multiplicative, that means of the form 'trend * oscillation'. Unit is a string used for naming the cycles, such as "week" or "year." It is optional and serves only for explanatory purposes. The sub-element RealArray (of size period) contains floating point numbers which describe the local values of the oscillation at each of the season indices. In the additive case, the sum of all these numbers may be normalized to 0. In the multiplicative case, the product of all these numbers may be normalized to 1. <xs:element name="Seasonality_ExpoSmooth"> <xs:complexType> <xs:sequence> <xs:group ref="REAL-ARRAY"/> </xs:sequence> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="additive"/> <xs:enumeration value="multiplicative"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="period" type="INT-NUMBER" use="required"/> <xs:attribute name="unit" type="xs:string" use="optional"/> <xs:attribute name="phase" type="INT-NUMBER" use="optional"/> <xs:attribute name="delta" type="REAL-NUMBER" use="optional"/> </xs:complexType> </xs:element> Scoring ProcedurePredictions of future events in a time series are based on a set of well-defined formulae. The formula used to score a particular model is based on the specified trend and seasonality. The formulae use the following notation:
The complete set of formulae are listed below. The first 15 formulae are identified by the combination of trend and seasonality specified by the model (i.e. <trend>-<seasonality>). The remaining formula is used for Brown's polynomial models. In this case, the number of values found in the Array element within the Trend_ExpoSmooth element will dictate the order of the polynomial model. A single coefficient indicates a constant model, for which predictions are calculated by applying the formula Xt(m) = a0. For a linear model (two coefficients), the formula Xt(m) = a0 + a1m is used, while a quadratic model (three coefficients) would use the formula Xt(m) = a0 + a1m + (1/2)a2m2 . N-N: Xt(m) = St N-A: Xt(m) = St + It-p+m N-M: Xt(m) = StIt-p+m A-N: Xt(m) = St + mTt A-A: Xt(m) = St + mTt + It-p+m A-M: Xt(m) = (St + mTt)It-p+m DA-N: Xt(m) = St + (Sum[i in 1..m]φiTt) DA-A: Xt(m) = St + (Sum[i in 1..m]φiTt) + It-p+m DA-M: Xt(m) = (St + (Sum[i in 1..m]φiTt))It-p+m M-N: Xt(m) = StRtm M-A: Xt(m) = StRtm + It-p+m M-M: Xt(m) = (StRtm)It-p+m DM-N: Xt(m) = StRt(Sum[i in 1..m]φi) DM-A: Xt(m) = StRt(Sum[i in 1..m]φi) + It-p+m DM-M: Xt(m) = (StRt(Sum[i in 1..m]φi))It-p+m Brown: Xt(m) = a0 + a1m + (1/2)a2m2 + ... + (1/n!)anmn The following elements are not used in this version of PMML and only serve
as placeholders for future versions. <xs:element name="SpectralAnalysis"> </xs:element> <xs:element name="ARIMA"> </xs:element> <xs:element name="SeasonalTrendDecomposition"> </xs:element> Example for a time series model: <PMML xmlns="https://www.dmg.org/PMML-4_2" version="4.2"> <Header copyright="DMG.org"> <Application name="test application"/> <Timestamp>2008-06-23 10:30:00</Timestamp> </Header> <DataDictionary numberOfFields="2"> <DataField dataType="integer" optype="continuous" name="TS" displayName="TS"/> <DataField dataType="double" optype="continuous" name="VALUE" displayName="TS-VALUE"/> </DataDictionary> <TimeSeriesModel modelName="AA2Model" functionName="timeSeries" algorithmName="exponential smoothing" bestFit="ExponentialSmoothing"> <MiningSchema> <MiningField name="TS" usageType="order"/> <MiningField name="VALUE" usageType="target"/> </MiningSchema> <TimeSeries usage="logical" startTime="1" endTime="24" interpolationMethod="none"> <TimeValue index="1" value="112"/> <TimeValue index="2" value="118"/> <TimeValue index="3" value="132"/> <TimeValue index="4" value="129"/> <TimeValue index="5" value="121"/> <TimeValue index="6" value="135"/> <TimeValue index="7" value="148"/> <TimeValue index="8" value="148"/> <TimeValue index="9" value="136"/> <TimeValue index="10" value="119"/> <TimeValue index="11" value="104"/> <TimeValue index="12" value="118"/> <TimeValue index="13" value="115"/> <TimeValue index="14" value="126"/> <TimeValue index="15" value="141"/> <TimeValue index="16" value="135"/> <TimeValue index="17" value="125"/> <TimeValue index="18" value="149"/> <TimeValue index="19" value="170"/> <TimeValue index="20" value="170"/> <TimeValue index="21" value="158"/> <TimeValue index="22" value="133"/> <TimeValue index="23" value="114"/> <TimeValue index="24" value="140"/> </TimeSeries> <TimeSeries usage="prediction" interpolationMethod="none"> <TimeValue index="25" value="145" standardError="7.3"/> <TimeValue index="26" value="150" standardError="8.3"/> <TimeValue index="27" value="178" standardError="9.3"/> <TimeValue index="28" value="163" standardError="10.3"/> <TimeValue index="29" value="172" standardError="11.3"/> <TimeValue index="30" value="178" standardError="12.3"/> <TimeValue index="31" value="199" standardError="13.3"/> <TimeValue index="32" value="199" standardError="14.3"/> <TimeValue index="33" value="184" standardError="15.3"/> <TimeValue index="34" value="162" standardError="16.3"/> <TimeValue index="35" value="146" standardError="17.3"/> <TimeValue index="36" value="166" standardError="18.3"/> </TimeSeries> <ExponentialSmoothing RMSE="7.3"> <Level alpha="0.233984" smoothedValue="139.8"/> <Trend_ExpoSmooth smoothedValue="4.139" gamma="3.910E-4" phi="1.006" trend="damped_additive"/> <Seasonality_ExpoSmooth type="multiplicative" period="12" unit="month" delta="0.8254" phase="12"> <Array n="12" type="real"> .900 .840 .924 .976 .994 1.120 0.981 1.025 1.038 1.038 0.908 1.259 </Array> </Seasonality_ExpoSmooth> </ExponentialSmoothing> </TimeSeriesModel> </PMML> This is an example of an exponential smoothing time series model using Brown's multiple smoothing technique: <PMML xmlns="https://www.dmg.org/PMML-4_2" version="4.2"> <Header copyright="DMG.org"> <Application name="test application"/> </Header> <DataDictionary numberOfFields="2"> <DataField dataType="double" name="Month_Index" optype="continuous"> <Interval closure="closedClosed" leftMargin="1" rightMargin="50"/> </DataField> <DataField dataType="double" name="QuadraticMonth" optype="continuous"/> </DataDictionary> <TimeSeriesModel bestFit="ExponentialSmoothing" functionName="timeSeries" modelName="QuadraticMonth Predictor"> <MiningSchema> <MiningField invalidValueTreatment="asIs" name="Month_Index" outliers="asIs" usageType="order"/> <MiningField name="QuadraticMonth" outliers="asIs" usageType="target"/> </MiningSchema> <Output> <OutputField dataType="double" feature="predictedValue" name="QuadraticMonth Predictor - Predicted Value" optype="continuous"/> </Output> <TimeSeries> <TimeValue index="50" value="2550"/> </TimeSeries> <ExponentialSmoothing RMSE="1.469296539064514"> <Level alpha="0.29"/> <Trend_ExpoSmooth trend="polynomial_exponential"> <Array type="real" n="3">2549.999972 100.9999732 1.999994714</Array> </Trend_ExpoSmooth> <TimeValue index="1" value="1.499999999999986"/> <TimeValue index="2" value="4.434999999999974"/> <TimeValue index="3" value="9.422699999999999"/> <TimeValue index="4" value="16.69814500000001"/> <TimeValue index="5" value="26.30456892500002"/> <TimeValue index="6" value="38.19968310645001"/> <TimeValue index="7" value="52.31215520655601"/> <TimeValue index="8" value="68.56947439659567"/> <TimeValue index="9" value="86.90993292618671"/> <TimeValue index="10" value="107.2862207849398"/> <TimeValue index="11" value="129.6649358584095"/> <TimeValue index="12" value="154.0243926888923"/> <TimeValue index="13" value="180.3519824960263"/> <TimeValue index="14" value="208.6416885111437"/> <TimeValue index="15" value="238.8920018116692"/> <TimeValue index="16" value="271.1042947305884"/> <TimeValue index="17" value="305.281618813078"/> <TimeValue index="18" value="341.4278584112037"/> <TimeValue index="19" value="379.5471635161653"/> <TimeValue index="20" value="419.6435914851766"/> <TimeValue index="21" value="461.7208987097413"/> <TimeValue index="22" value="505.7824356899514"/> <TimeValue index="23" value="551.8311103729045"/> <TimeValue index="24" value="599.8693941784766"/> <TimeValue index="25" value="649.8993527234378"/> <TimeValue index="26" value="701.9226890294883"/> <TimeValue index="27" value="755.9407912489685"/> <TimeValue index="28" value="811.9547799736052"/> <TimeValue index="29" value="869.965552291198"/> <TimeValue index="30" value="929.9738211628786"/> <TimeValue index="31" value="991.980149602085"/> <TimeValue index="32" value="1055.984979693915"/> <TimeValue index="33" value="1121.988656811033"/> <TimeValue index="34" value="1189.991449540624"/> <TimeValue index="35" value="1259.993565893434"/> <TimeValue index="36" value="1331.99516636062"/> <TimeValue index="37" value="1405.996374344018"/> <TimeValue index="38" value="1481.997284428074"/> <TimeValue index="39" value="1559.997968898639"/> <TimeValue index="40" value="1639.998482851363"/> <TimeValue index="41" value="1721.998868174932"/> <TimeValue index="42" value="1805.999156642965"/> <TimeValue index="43" value="1891.999372304384"/> <TimeValue index="44" value="1979.999533324537"/> <TimeValue index="45" value="2069.999653398587"/> <TimeValue index="46" value="2161.999742833126"/> <TimeValue index="47" value="2255.999809371593"/> <TimeValue index="48" value="2351.9998588225"/> <TimeValue index="49" value="2449.999895536411"/> <TimeValue index="50" value="2549.999922767288"/> </ExponentialSmoothing> </TimeSeriesModel> </PMML> This model can be scored using Brown's formula for multiple smoothing. For instance, to predict the next value in the series (i.e. index=51, which corresponds to m=1), we use the following calculation: Xt(m) = a0 + a1m + (1/2)a2m2 |
|||||||||||||||||||||||||||||||||
|