estMaxLik {dse}R Documentation

Maximum Likelihood Estimation


Maximum likelihood estimation.


    estMaxLik(obj1, obj2=NULL, ...) 
    ## S3 method for class 'TSmodel'
estMaxLik(obj1, obj2, algorithm="optim",
	algorithm.args=list(method="BFGS", upper=Inf, lower=-Inf, hessian=TRUE),
    ## S3 method for class 'TSestModel'
estMaxLik(obj1, obj2=TSdata(obj1), ...)
    ## S3 method for class 'TSdata'
estMaxLik(obj1, obj2, ...) 



an object of class TSmodel, TSdata or TSestModel


TSdata or a TSmodel to be fitted with obj1.


the algorithm ('optim', or 'nlm' ) to use for maximization.


arguments for the optimization algorithm.


arguments passed on to other methods.


One of obj1 or obj2 should specify a TSmodel and the other TSdata. If obj1 is a TSestModel and obj2 is NULL, then the data is extracted from obj1. The TSmodel object is used to specify both the initial parameter values and the model structure (the placement of the parameters in the various arrays of the TSmodel). Estimation attempts to minimimize the negative log likelihood (as returned by l ) of the given model structure by adjusting the parameter values. A TSmodel can also have constant values in some array elements, and these are not changed. (See SS, ARMA and fixConstants regarding setting of constants.)

With the number of parameter typically used in multivariate time series models, the default maximum number of iterations may not be enough. Be sure to check for convergence (a warning is printed at the end, or use summary on the result). The maximum iterations is passed to the estimation algorithm with algorithm.args, but the elements of that list will depend on the specified optimization algorithm (so see the help for the alogrithm). The example below is for the default optim algorithm.


The value returned is an object of class TSestModel with additional elements est$converged, which is TRUE or FALSE indicating convergence, est$converceCode, which is the code returned by the estimation algorithm, and est$results, which are detailed results returned by the estimation algorithm. The hessian and gradient in results could potentially be used for restarting in the case of non-convergence, but that has not yet been implemented.


Maximum likelihood estimation of multivariate time series models tends to be problematic, even when a good structure and good starting parameter values are known. This is especially true for state space models. Also, it seems that in-sample fit is often obtained at the expense of out-of-sample forecasting ability. If a prior model structure is not important then the bft estimation method may be preferable.

See Also

optim, nlm, estVARXls, bft, TSmodel, l, SS, ARMA, fixConstants


  true.model <- ARMA(A=c(1, 0.5), B=1)
  est.model <-  estMaxLik(true.model,  simulate(true.model))
  est.model <-  estMaxLik(true.model,  simulate(true.model),
    algorithm.args=list(method="BFGS", upper=Inf, lower=-Inf, hessian=TRUE,

[Package dse version 2020.2-1 Index]