CronoSeries  0.1.*
A fork of Cronos with a focus on being a Time Series class library.
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Properties | List of all members
CronoSeries.TimeSeries.Models.ARMAXModel Class Reference

This is just an ARMA model with exogenous inputs. The model is Phi(B) X_t = Theta(B) Z_t + Gamma U_{t-1} where Phi and Theta are standard autoregressive and moving average polynomials {U_t} is an exogenous time series. Much of the analysis is the same, we just have extra coefficients for the exogenous inputs, and to compute likelihoods, we have to adjust the observations appropriately. For now, we only allow a simple one-lag dependency on the exogenous series. Later I'll generalize this. More...

Inheritance diagram for CronoSeries.TimeSeries.Models.ARMAXModel:
CronoSeries.TimeSeries.Models.ARMAModel CronoSeries.TimeSeries.Models.UnivariateTimeSeriesModel CronoSeries.TimeSeries.Models.IRealTimePredictable CronoSeries.TimeSeries.Models.IMLEEstimable CronoSeries.TimeSeries.Models.TimeSeriesModel CronoSeries.TimeSeries.Models.Model CronoSeries.TimeSeries.Data.IConnectable

Public Member Functions

 ARMAXModel (int arOrder, int maOrder, int exOrder, Data.TimeSeries data)
 basic constructor More...
 
 ARMAXModel (int arOrder, int maOrder, int exOrder, int tailDoF, Data.TimeSeries data)
 constructor for heavy-tailed ARMAX model More...
 
void SetGamma (int idx, double value)
 sets gamma for the model More...
 
double GetGamma (int idx)
 returns the specified gamma value More...
 
override string GetParameterName (int index)
 
override int NumInputs ()
 
override string GetInputName (int index)
 
override string GetShortDescription ()
 
override bool SetInput (int socket, object item, StringBuilder failMsg)
 
Data.TimeSeries GetExogenousTS (int idx)
 
override double LogLikelihood (Vector< double > parameter, double penaltyFactor, bool fillOutputs)
 Returns the (possibly penalized) log-likelihood of the model with specified parameters and the current object theData. If parameter==null, it will use CURRENT parameters. If fillOutputs is true, then the residuals and any other outputs will be filled in. More...
 
override Vector< double > ParameterToCube (Vector< double > param)
 
override Vector< double > CubeToParameter (Vector< double > cube)
 
override Data.TimeSeries SimulateData (List< DateTime > inputs, int randomSeed)
 This function must simulate from the current model. More...
 
override void ResetRealTimePrediction ()
 
override double Register (DateTime timeStamp, double value)
 
override double Register (DateTime timeStamp, double value, double[] auxValues)
 
override DistributionSummary GetCurrentPredictor (DateTime futureTime)
 
override List< Type > GetAllowedInputTypesFor (int socket)
 
- Public Member Functions inherited from CronoSeries.TimeSeries.Models.ARMAModel
 ARMAModel (int arOrder, int maOrder)
 
 ARMAModel (int arOrder, int maOrder, Data.TimeSeries data)
 Basic constructor for an ARMA(p,q) model with Gaussian innovations More...
 
 ARMAModel (int arOrder, int maOrder, Data.TimeSeries data, int tailDOF)
 basic constructor for an ARMA(p,q) model with Students T innovations More...
 
void CarryOutPreMLEComputations ()
 
virtual MathNet.Numerics.LinearAlgebra.Vector< double > ParameterToCube (MathNet.Numerics.LinearAlgebra.Vector< double > param)
 
virtual MathNet.Numerics.LinearAlgebra.Vector< double > CubeToParameter (MathNet.Numerics.LinearAlgebra.Vector< double > cube)
 
virtual void Register (Data.TimeSeries series)
 
override int NumOutputs ()
 
override object GetOutput (int socket)
 
override string GetOutputName (int index)
 
override string GetParameterDescription (int index)
 
void SetARPolynomial (MathNet.Numerics.LinearAlgebra.Vector< double > p)
 
void SetMAPolynomial (MathNet.Numerics.LinearAlgebra.Vector< double > p)
 
MathNet.Numerics.LinearAlgebra.Vector< double > GetMAPolynomial ()
 
override double LogLikelihood (MathNet.Numerics.LinearAlgebra.Vector< double > parameter, double penaltyFactor, bool fillOutputs)
 
override object BuildForecasts (object otherData, object inputs)
 This function generates forecasts (or fitted values) for the specified inputs, based on the existing data object and current model parameters. Results are returned in a form that depends on the model, for example, as a TimeSeries of DistributionSummary objects More...
 
double ARCoeff (int i)
 returns the i'th autoregressive coefficient: 0 = Phi_1, 1 = Phi_2, etc. More...
 
double MACoeff (int i)
 
override MathNet.Numerics.LinearAlgebra.Vector< double > ComputeACF (int maxLag, bool normalize)
 
void EstimateByYuleWalker (double sampleMean, MathNet.Numerics.LinearAlgebra.Vector< double > acvf)
 This method fits the model by using Yule-Walker estimation. It can only handle a few particular orders for the ARMA model now. In other cases it throws an exception. More...
 
- Public Member Functions inherited from CronoSeries.TimeSeries.Models.UnivariateTimeSeriesModel
override List< Type > GetAllowedInputTypesFor (int socket)
 
override List< Type > GetOutputTypesFor (int socket)
 
- Public Member Functions inherited from CronoSeries.TimeSeries.Models.TimeSeriesModel
override int NumInputs ()
 
override string GetInputName (int socket)
 
override bool InputIsFree (int socket)
 
override bool SetInput (int socket, object item, StringBuilder failMsg)
 
override int NumOutputs ()
 
override object GetOutput (int socket)
 
override string GetOutputName (int socket)
 
- Public Member Functions inherited from CronoSeries.TimeSeries.Models.Model
string GetDescription ()
 
bool CanUseMLE ()
 
bool CanUseMoM ()
 
bool CanHandleNaNs ()
 
virtual void FitByMLE (int numIterationsLDS, int numIterationsOpt, double consistencyPenalty, Optimizer.OptimizationCallback optCallback)
 
virtual void FitByMoM ()
 Fits model by method of moments. This is the default method used of CanUseMLE is false. More...
 
bool InputToOutputIsValid ()
 
bool SetParameters (Vector< double > v)
 
- Public Member Functions inherited from CronoSeries.TimeSeries.Models.IRealTimePredictable
void Register (Data.TimeSeries series)
 

Public Attributes

int NumExogenous => numExogenous
 
- Public Attributes inherited from CronoSeries.TimeSeries.Models.ARMAModel
bool IsShortMemory => Math.Abs(FracDiff) < 1e-10
 
- Public Attributes inherited from CronoSeries.TimeSeries.Models.Model
object theData
 

Protected Member Functions

new void LocalInitializeParameters ()
 
override void InitializeParameters ()
 This function is called after OnDataConnection. It can assume valid data is available, and it must fill in valid default parameter values. It typically also sets default parameter states, for purposes of estimation. More...
 
Data.TimeSeries ComputeAdjustedValues ()
 performs adjustment to the original data based on exogenous time series, so that we can use the original likelihood function More...
 
override Vector< double > ComputeConsequentialParameters (Vector< double > parameter)
 This function must fill in values of consequential parameters. These parameters are determined by the current ParameterState[] settings in ParameterStates. These can depend on the non-consequential parameters and the data set. The function should throw an exception if it is not possible. The parameter vector with parameters filled in should be returned. More...
 
- Protected Member Functions inherited from CronoSeries.TimeSeries.Models.ARMAModel
 ARMAModel (int arOrder, int maOrder, int tailDOF)
 
override bool CheckParameterValidity (MathNet.Numerics.LinearAlgebra.Vector< double > param)
 
MathNet.Numerics.LinearAlgebra.Vector< double > GetLikelihoodsFromResiduals (double[] res, double[] pvars)
 
override MathNet.Numerics.LinearAlgebra.Vector< double > ComputeConsequentialParameters (MathNet.Numerics.LinearAlgebra.Vector< double > parameter)
 
void LocalInitializeParameters ()
 
double[] ComputeSpecialResiduals (Data.TimeSeries startData, out double[] rs, int forecastHorizon, out double[] forecasts)
 This function uses the approach described in Section 8.7 of B&D if fracdiff parm==0 to get one-step predictors and residuals. More...
 
- Protected Member Functions inherited from CronoSeries.TimeSeries.Models.UnivariateTimeSeriesModel
bool DataIsLongitudinal ()
 
override bool CheckDataValidity (object data, StringBuilder failMessage)
 This function checks to see if the object can be cast into the appropriate form for the model. More...
 
override void OnDataConnection ()
 This function is called immediately after a data object is connected to the model. Any initial processing (e.g. determining dimension of parameter vector, etc.) should be done here. More...
 
- Protected Member Functions inherited from CronoSeries.TimeSeries.Models.Model
double NegativeLogLikelihood (Vector< double > partialCube)
 This function is a wrapper for another function, to be passed to a minimizer. More...
 
abstract bool CheckParameterValidity (Vector< double > param)
 Checks for validity of parameters. More...
 

Protected Attributes

Data.TimeSeries[] exogenous
 
int numExogenous
 
- Protected Attributes inherited from CronoSeries.TimeSeries.Models.ARMAModel
MathNet.Numerics.LinearAlgebra.Vector< double > autocovariance
 
Data.TimeSeries oneStepPredictors
 
Data.TimeSeries oneStepPredictorsAtAvailability
 
Data.TimeSeries oneStepPredStd
 
Data.TimeSeries unstandardizedResiduals
 
- Protected Attributes inherited from CronoSeries.TimeSeries.Models.UnivariateTimeSeriesModel
Longitudinal longitudinalValues
 
Data.TimeSeries values
 

Properties

override Vector< double > Parameters [get, set]
 
override string??? Description [get]
 
- Properties inherited from CronoSeries.TimeSeries.Models.ARMAModel
override string?? Description [get]
 
double FracDiff [get, set]
 
double Mu [get, set]
 
double Sigma [get, set]
 
int AROrder [get]
 
int MAOrder [get]
 
int TailDegreesOfFreedom [get]
 
- Properties inherited from CronoSeries.TimeSeries.Models.TimeSeriesModel
override Vector< double > Parameters [get, set]
 
- Properties inherited from CronoSeries.TimeSeries.Models.Model
abstract string Description [get]
 Should return a description of the model, including current parameter values if desired. More...
 
object Residuals [get, protected set]
 
object TheData [get, set]
 
double GoodnessOfFit [get, protected set]
 
abstract Vector< double > Parameters [get, set]
 
ParameterState[] ParameterStates [get, set]
 
string ToolTipText [get, set]
 
- Properties inherited from CronoSeries.TimeSeries.Data.IConnectable
string ToolTipText [get, set]
 

Additional Inherited Members

- Public Types inherited from CronoSeries.TimeSeries.Models.Model
enum  ParameterState { Free, Locked, Consequential }
 
- Static Protected Member Functions inherited from CronoSeries.TimeSeries.Models.ARMAModel
static double GammaFunction (double x)
 
static Complex ComplexPower (Complex c, double pow)
 
- Static Protected Member Functions inherited from CronoSeries.TimeSeries.Models.Model
static Vector< double > CubeFix (Vector< double > cube)
 This function makes sure that its vector argument really does contain an element of the unit hypercube. If not, it is mapped back to an element on the hypercube (the mapping is continuous). More...
 

Detailed Description

This is just an ARMA model with exogenous inputs. The model is Phi(B) X_t = Theta(B) Z_t + Gamma U_{t-1} where Phi and Theta are standard autoregressive and moving average polynomials {U_t} is an exogenous time series. Much of the analysis is the same, we just have extra coefficients for the exogenous inputs, and to compute likelihoods, we have to adjust the observations appropriately. For now, we only allow a simple one-lag dependency on the exogenous series. Later I'll generalize this.

Constructor & Destructor Documentation

◆ ARMAXModel() [1/2]

CronoSeries.TimeSeries.Models.ARMAXModel.ARMAXModel ( int  arOrder,
int  maOrder,
int  exOrder,
Data.TimeSeries  data 
)
inline

basic constructor

Parameters
arOrderautoregressive order
maOrdermoving average order
exOrdernumber of exogenous inputs
datadata to perform analysis on

◆ ARMAXModel() [2/2]

CronoSeries.TimeSeries.Models.ARMAXModel.ARMAXModel ( int  arOrder,
int  maOrder,
int  exOrder,
int  tailDoF,
Data.TimeSeries  data 
)
inline

constructor for heavy-tailed ARMAX model

Parameters
arOrderautoregressive order
maOrdermoving average order
exOrdernumber of exogenous inputs
tailDoFdegrees of freedom for t-distributed innovations
datadata to perform analysis on

Member Function Documentation

◆ ComputeAdjustedValues()

Data.TimeSeries CronoSeries.TimeSeries.Models.ARMAXModel.ComputeAdjustedValues ( )
inlineprotected

performs adjustment to the original data based on exogenous time series, so that we can use the original likelihood function

Returns

◆ ComputeConsequentialParameters()

override Vector<double> CronoSeries.TimeSeries.Models.ARMAXModel.ComputeConsequentialParameters ( Vector< double >  parameter)
inlineprotectedvirtual

This function must fill in values of consequential parameters. These parameters are determined by the current ParameterState[] settings in ParameterStates. These can depend on the non-consequential parameters and the data set. The function should throw an exception if it is not possible. The parameter vector with parameters filled in should be returned.

Implements CronoSeries.TimeSeries.Models.Model.

◆ GetGamma()

double CronoSeries.TimeSeries.Models.ARMAXModel.GetGamma ( int  idx)
inline

returns the specified gamma value

Parameters
idx
Returns

◆ InitializeParameters()

override void CronoSeries.TimeSeries.Models.ARMAXModel.InitializeParameters ( )
inlineprotectedvirtual

This function is called after OnDataConnection. It can assume valid data is available, and it must fill in valid default parameter values. It typically also sets default parameter states, for purposes of estimation.

Reimplemented from CronoSeries.TimeSeries.Models.ARMAModel.

◆ LogLikelihood()

override double CronoSeries.TimeSeries.Models.ARMAXModel.LogLikelihood ( Vector< double >  parameter,
double  penaltyFactor,
bool  fillOutputs 
)
inlinevirtual

Returns the (possibly penalized) log-likelihood of the model with specified parameters and the current object theData. If parameter==null, it will use CURRENT parameters. If fillOutputs is true, then the residuals and any other outputs will be filled in.

Returns

Implements CronoSeries.TimeSeries.Models.Model.

◆ SetGamma()

void CronoSeries.TimeSeries.Models.ARMAXModel.SetGamma ( int  idx,
double  value 
)
inline

sets gamma for the model

Parameters
idxindex value, starting at 0
valuevalue to set

◆ SimulateData()

override Data.TimeSeries CronoSeries.TimeSeries.Models.ARMAXModel.SimulateData ( List< DateTime >  dateTimes,
int  randomSeed 
)
inlinevirtual

This function must simulate from the current model.

Parameters
dateTimesthese may have different interpretations, but for time series, is typically an IList of DateTime objects
randomSeedrandom number seed
Returns

Reimplemented from CronoSeries.TimeSeries.Models.ARMAModel.


The documentation for this class was generated from the following file: