<< Factor Analysis Factor Analysis fac_pca >>

Grocer >> Factor Analysis > fac_kalman

fac_kalman

dynamic factor analysis with the Kalman filter

CALLING SEQUENCE

res=fac_kalman(listy,ARF,MAF,listar,arg1,...,argn)

PARAMETERS

Input

* listy = a string (ny x 1) vector of names or a list of ny names, ts or vectors

* ARF = either

   - a (narf x 1) or (1 x narf) string vector of parameters corresponding to the AR part of the factor process

     . if the user does not give in the list of variable arguments the option 'init=own', then the user can give any value to grocer_ARF; only it size matters for the estimation process

     . if the user gives in the list of variable arguments the option 'init=own', then the values given by the user are used as starting values for the optimisation process

     . the user must enter the empty matrix [] if she wants to impose that the AR part is empty

  - or a list of p elements, each element of the preceding type, and p is the # of factors to estimate

* MAF = a (nmaf x 1) or (1 x nmaf) string vector of parameters corresponding to the MA part of the factor process or a list or p elements of this type (with the same conventions as with grocer_ARF and the same number of elements as for the AR part)

* listar = a list of n vectors with:

  - n: # of y variables

* argi = optional arguments that can be:

  - the string 'noprint' if the user doesn't want to print the results of the regression

  - the string 'Q=x' where x is a (ny+1 x ny+1) matrix of starting values for the var-cov matrix of residuals (first the residual of the factor ARMA process, then the ny residuals of the endogenous variables); note that for identification sake (see manual for details) the variance of residual of the factor ARMA process is fixed to the value given by the user in Q or to 0.25 if the user does not give starting values to Q

  - the string 'loadings=x' where x is a (ny x 1)vector of starting values for the loadings of the factor

  - the string 'nap=x' with x = maximum # of calls to the function to optimize (Scilab optim option; default=1000)

  - the string 'niter=x' with x = maximum # of iterations (Scilab optim option; default=1000)

  -  'optfunc=optim' if the user wants to use the optim optimisation function (default: optimg)

  -  'opt_nelmead=crit,nitermax' with crit the value of the convergence criterion in the Nelder-Meade optimisation function and nitermax the maximum number of iterations (default = 'opt_nelmead=2*%eps,1000')

  -  'opt_optim=opts' where opts are options for optim that can be entered after the starting value of the parameters (default = 'opt_optim=,''ar'',1e6,1e6'')

  -  'opt_convg=val' where val is the threshold on gradient norm (default = 'opt_convg=1e-5')

 

Output

* res = the results typed list of the dynamic factor estimation provided by the Kalman filter with:

  - res('meth')= 'fac_kalman'

  - res('y')= a (nobs x ny) matrix of observations

  - res('nobs')= the # of observations

  - res('ny')= the # of endogenous variables

  - res('namey')= the (ny x 1) vector of names of the endogenous variables

  - res('fac')= the estimated commun factor

  - res('stud fac')= the studentized estimated commun factor

  - res('ARF')= the (1 x narf) vector corresponding to the AR part of the factor process

  - res('MAF')= the (1 x nmaf) vector corresponding to the MA part of the factor process

  - res('ary')= the list of ny vectors corresponding to the AR processes of the residuals of the endogenous variables

  - res('Phi')= the estimated Phi matrix of corresponding state-measure Kalman problem

  - res('H')= the estimated H matrix of corresponding state-measure Kalman problem

  - res('Q')= the estimated Q matrix of corresponding state-measure Kalman problem

  - res('coeff')= the (nparam x 1) vector of estimaredparameters (exploded in the Phi, Q and H matrices)

  - res('std')= the (nparam x 1) vector of standard errors of the estimared parameters

  - res('tstat')= the (nparam x 1) vector of t-stat of the estimared parameters

  - res('llike') = log-likelihood of the model

  - res('grad') = gradient of the log-likelihood of the model at the estimated parameters

  - res('AIC')= the Akaike information criterium

  - res('BIC')= the Schwarz information criterium

  - res('E4OPTION')= the tlist of options needed to feed the "e4" Kalman estimation

  - res('prests') = a boolean indicating whether there are ts in the regression

  - res('bounds') = bounds of the estimation (if there are ts in the regression)

DESCRIPTION

Performs the estimation of a dynamic factor model provided by the Kalman filter. The model is: yi_t = lambda_1(i)*F_1t+...+lambda_k(i)*F_kt+ui_t ARF(L)*F_jt = MAF(L)*e_jt ARi(L)*ui_t=vi_t

REFERENCE: Doz C. and Lenglart F. (1999): "Analyse factorielle dynamique : test du nombre de facteurs, estimation et application l'enquete de conjoncture dans l'industrie", Annales d'Economie et de Statistique, n. 54.

EXAMPLE

load(GROCERDIR+'/data/BusinessSurvey.dat');
bounds('1976m3','1997m3')
[r]=fac_kalman(['pp';'fp';'gob';'fob';'in';'gpp'],string([0.9;0]),'0',list('0.1','0.1','0.1','0.1','0.1','0.1'))
// Example taken from fac_kalman_d(): it provides the estimation of the original Doz and Lenglart estimation.
 
[r]=fac_kalman(['pp';'fp';'gob';'fob';'in';'gpp'],string([-1.83;0.85]),'-0.48',list('0.33','0.81','0.88','0.87',...
'0.82','0.89'),'init=own','Q=diag([0.5;2.55;3.23;2.55;3.94;2.83;5.95].^2)','loadings=[2.76;1.96;3.17;3.25;-1.61;3.69]',...
'noprint','nap=100','niter=100')
// Performs the same estimation, except that the user gives her own starting values,
// taken here from Doz and Lenglart paper ([-1.83;0.85] for the AR part of the factor process,
//  -0.48 for its MA part, 0.33,0.81,0.88,0.87,0.82,0.89 for the AR coefficients of the residuals of the endogenous variables,
// the square of 2.55;3.23;2.55;3.94;2.83;5.95 for their variance
//(note that Doz and Lenglart' present the standard errors whereas GROCER needs variances);
// the maximum # of calls to the optimization function as well as the maximum # of iterations is set to 100.
// The results are not printed (option 'noprint') but saved in the tlist r, so that they can be printed later.

AUTHOR

Eric Dubois 2007

Report an issue
<< Factor Analysis Factor Analysis fac_pca >>