/* tdrfmod.c CCMATH mathematics library source code. * * Copyright (C) 2000 Daniel A. Atkinson All rights reserved. * This code may be redistributed under the terms of the GNU library * public license (LGPL). ( See the lgpl.license file for details.) * ------------------------------------------------------------------------ */ /* Test: drfmod setdrf Uses: sarma setsim sintg sdiff nrml setnrml bran setbran Input parameters: n -> integer: length of test series model_file -> name of factor model specification file [ tfs?.dat ] */ #include "ccmath.h" struct mcof *pfc,*par,*pma; int nfc,nar,nma,np,ndif; void main(int na,char **av) { struct mcof *pa; int n,i,j; unsigned int seed; double e,ep,*dr; FILE *fp; struct fmod y; if(na!=3){ printf("para: n model_file\n"); exit(-1);} printf("Test of Factor Model Derivative Computation\n\n"); n=atoi(*++av); fp=fopen(*++av,"r"); printf(" model file: %s\n",*av); /* define model parameters */ fscanf(fp,"%d %d %d %d",&nfc,&nar,&nma,&ndif); np=nfc+nma+nar; pfc=(struct mcof *)calloc(np,sizeof(*pa)); dr=(double *)calloc(np,sizeof(*dr)); par=pfc+nfc; pma=par+nar; for(j=0,pa=pfc; jcf),&(pa->lag)); pa->lag-=1; } fscanf(fp,"%u",&seed); printf("Model Definition\n"); printf("factor parameters\n"); for(j=0,pa=pfc; jcf); printf("autoregressive parameters and lags\n"); for(j=0,pa=par; jcf,pa->lag+1); printf("moving average paramerers and lags\n"); for(j=0,pa=pma; jcf,pa->lag+1); printf("difference order = %d\n",ndif); /* initialize simulation */ setnrml(seed); setbran(seed); printf(" random seed= %u\n",seed); printf(" y e ep\n"); setdrf(1); setsim(1); /* generate series and print output */ for(j=0; jcf; printf("%8.4f %8.4f ",y.val,e); if(ndif) y.val=sdiff(y.val,ndif,j); /* compute factor model residuals and their derivatives */ ep=drfmod(y,dr); printf("%8.4f\n",ep); printf(" deriv: "); for(i=0; i