Hello !
I am a phd. student in the statistics department at Catholic
Universy of Rio de Janeiro.
I have been working with Ox and ssfpack package. I have a problem
and would appreciate
if someone could help me.
I'm adjusting a time series with missing values. As remarked in
ssfpack's manuals, these values
must be declared as -9999.99. I tried a simple model with local
trend. But when I use the
function: SsfLik, the program returns the message: illegal
operation. When I replace the
missing values by any other value the function go on.
I attach the ox code (miss.ox) and the data base (datamiss.in7)
Thanks, Mayte
pcgive 700
data datamiss.bn7
>Var1 1 1 4416 1 1 32 datamiss 14-10-1999 17:25:38
>Var2 1 1 4416 1 1 35392 datamiss 14-10-1999 17:25:38
#include <oxstd.h>
#include <oxdraw.h>
#include <database.h>
#include <maximize.h>
#include "SsfPack.h"
#pragma link("maximize.oxo")
#pragma link ("database.oxo")
/* Variáveis Globais */
decl mY, mPhi, mOmega, mSigma ;
/*-------------------------------------------------------------------//
Função LnLik
Calcula o valor do log da verossimilhança do MEE.
//------------------------------------------------------ ------------*/
LnLik(HypPar, const pdlnLik, const pvSco, const pmHes)
{ decl dimSt, VarMLE ;
dimSt = columns(mPhi) ;
mOmega[1][1] = diag(exp(2*HypPar[1][0])) ;
mOmega[dimSt][dimSt] = (exp(2*HypPar[0][0]));
SsfLik(pdlnLik, &VarMLE, mY, mPhi, mOmega, mSigma);
pdlnLik[0]=pdlnLik[0]/(10^6);
return 1 ;
} //End LnLik
main()
{
decl dbase;
decl mData, mYInterp, mYOrig, freq, dimState, mYKFSMiss, mYKFMiss, IndMiss, T ;
// carregar os dados.
mData = loadmat("datamiss.in7")';
mY = mData[0][];
T = columns(mY);
IndMiss = vecindex(mY'.==-9999.99)';
//mY[][IndMiss]=2000*ones(1,columns(IndMiss));
print("# Missing values: ", columns(IndMiss));
decl HypPar, mStsm, ir, lnLik, mYKF, mYKFS, mSmo, mPred, vSco, Hess;
mStsm = <CMP_IRREG, 1, 0, 0 ;
CMP_LEVEL, 1, 0, 0 > ;
GetSsfStsm(mStsm, &mPhi, &mOmega, &mSigma) ;
dimState = columns(mPhi);
/** Maximizando a verossimilhança **/
decl VarMLE;
SsfLik(&lnLik, &VarMLE, mY, mPhi, mOmega, mSigma);
HypPar = <-1,-1>';
print("Estimando os Hyperparámetros ....") ;
Hess = unit(2) ;
MaxControl(50,1) ; vSco=<0> ;
ir = MaxBFGS(LnLik, &HypPar, &lnLik, &Hess, TRUE) ;
print("\nResultados Finais: ", MaxConvergenceMsg(ir),
"\nlog Verossimilhança = ", lnLik,
"\nParâmetros Ótimos: ", HypPar,
"\nVariâncias Ótimas :", exp(2*HypPar) );
}// End do Main.
--------------------------------------------------------------
MSc. Mayte Suárez Fariñas
Núcleo de Estatística Computacional
Departamento de Engenharia Elétrica
PUC-RJ.
e-mail: [log in to unmask]
--------------------------------------------------------------
|