From: N. Brouard Date: Tue, 8 Jul 2003 07:54:34 +0000 (+0000) Subject: * imach.c (Repository): X-Git-Tag: imach-099s7~607 X-Git-Url: https://henry.ined.fr/git/?a=commitdiff_plain;h=1344bccd3ad12b2edb204c37e40e659aca020766;p=.git * imach.c (Repository): (Repository): Using imachwizard code to output a more meaningful covariance matrix (cov(a12,c31) instead of numbers. --- diff --git a/src/imach.c b/src/imach.c index a3b5689..c2f0d1f 100644 --- a/src/imach.c +++ b/src/imach.c @@ -1,6 +1,9 @@ /* $Id$ $State$ $Log$ + Revision 1.94 2003/06/27 13:00:02 brouard + Just cleaning + Revision 1.93 2003/06/25 16:33:55 brouard (Module): On windows (cygwin) function asctime_r doesn't exist so I changed back to asctime which exists. @@ -162,6 +165,9 @@ #include #include "timeval.h" +/* #include */ +/* #define _(String) gettext (String) */ + #define MAXLINE 256 #define GNUPLOTPROGRAM "gnuplot" /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ @@ -2288,7 +2294,7 @@ void evsij(char fileres[], double ***eij, double x[], int nlstate, int stepm, in hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ - /* Computing Variances of health expectancies */ + /* Computing Variances of health expectancies */ for(theta=1; theta <=npar; theta++){ for(i=1; i<=npar; i++){ @@ -2842,8 +2848,8 @@ void varprob(char optionfilefiname[], double **matcov, double x[], double delti[ fprintf(fichtm,"\n
  • Computing and drawing one step probabilities with their confidence intervals

  • \n"); fprintf(fichtm,"\n"); - fprintf(fichtm,"\n
  • Computing matrix of variance-covariance of step probabilities

  • \n",optionfilehtmcov); - fprintf(fichtmcov,"\n

    Computing matrix of variance-covariance of step probabilities

    \n\ + fprintf(fichtm,"\n
  • Matrix of variance-covariance of pairs of step probabilities (drawings)

  • \n",optionfilehtmcov); + fprintf(fichtmcov,"\n

    Matrix of variance-covariance of pairs of step probabilities

    \n\ file %s
    \n",optionfilehtmcov); fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (pij, pkl) are estimated\ and drawn. It helps understanding how is the covariance between two incidences.\ @@ -3181,8 +3187,8 @@ fprintf(fichtm,"
    • Graphs
    • "); fprintf(fichtm," ************\n


      "); } for(cpt=1; cpt<=nlstate;cpt++) { - fprintf(fichtm,"
      - Observed and period prevalence (with confident\ -interval) in state (%d): %s%d%d.png
      \ + fprintf(fichtm,"
      - Observed (cross-sectional) and period (incidence based) \ +prevalence (with 95%% confidence interval) in state (%d): %s%d%d.png
      \ ",cpt,subdirf2(optionfilefiname,"v"),cpt,jj1,subdirf2(optionfilefiname,"v"),cpt,jj1); } } /* end i1 */ @@ -3839,7 +3845,7 @@ void prwizard(int ncovmodel, int nlstate, int ndeath, char model[], FILE *ficpa } /* end k*/ } /*end j */ } /* end i */ - } + } /* end itimes */ } /* end of prwizard */ @@ -3852,8 +3858,11 @@ int main(int argc, char *argv[]) { int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); int i,j, k, n=MAXN,iter,m,size=100,cptcode, cptcod; - int jj, imk; + int jj, ll, li, lj, lk, imk; int numlinepar=0; /* Current linenumber of parameter file */ + int itimes; + + char ca[32], cb[32], cc[32]; /* FILE *fichtm; *//* Html File */ /* FILE *ficgp;*/ /*Gnuplot File */ double agedeb, agefin,hf; @@ -3908,6 +3917,12 @@ int main(int argc, char *argv[]) long total_usecs; +/* setlocale (LC_ALL, ""); */ +/* bindtextdomain (PACKAGE, LOCALEDIR); */ +/* textdomain (PACKAGE); */ +/* setlocale (LC_CTYPE, ""); */ +/* setlocale (LC_MESSAGES, ""); */ + /* gettimeofday(&start_time, (struct timezone*)0); */ /* at first time */ (void) gettimeofday(&start_time,&tzp); curr_time=start_time; @@ -4599,27 +4614,25 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf
      \n",\ fprintf(ficres,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle= 0 weight=%d\nmodel=%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate, ndeath, maxwav, weightopt,model); - jk=1; fprintf(ficres,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); fprintf(ficlog,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); for(i=1,jk=1; i <=nlstate; i++){ for(k=1; k <=(nlstate+ndeath); k++){ - if (k != i) - { - printf("%d%d ",i,k); - fprintf(ficlog,"%d%d ",i,k); - fprintf(ficres,"%1d%1d ",i,k); - for(j=1; j <=ncovmodel; j++){ - printf("%f ",p[jk]); - fprintf(ficlog,"%f ",p[jk]); - fprintf(ficres,"%f ",p[jk]); - jk++; - } - printf("\n"); - fprintf(ficlog,"\n"); - fprintf(ficres,"\n"); + if (k != i) { + printf("%d%d ",i,k); + fprintf(ficlog,"%d%d ",i,k); + fprintf(ficres,"%1d%1d ",i,k); + for(j=1; j <=ncovmodel; j++){ + printf("%f ",p[jk]); + fprintf(ficlog,"%f ",p[jk]); + fprintf(ficres,"%f ",p[jk]); + jk++; } + printf("\n"); + fprintf(ficlog,"\n"); + fprintf(ficres,"\n"); + } } } if(mle!=0){ @@ -4650,32 +4663,91 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf
      \n",\ } fprintf(ficres,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); - if(mle==1) + if(mle>=1) printf("# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); fprintf(ficlog,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); - for(i=1,k=1;i<=npar;i++){ - /* if (k>nlstate) k=1; - i1=(i-1)/(ncovmodel*nlstate)+1; - fprintf(ficres,"%s%d%d",alph[k],i1,tab[i]); - printf("%s%d%d",alph[k],i1,tab[i]); - */ - fprintf(ficres,"%3d",i); - if(mle==1) - printf("%3d",i); - fprintf(ficlog,"%3d",i); - for(j=1; j<=i;j++){ - fprintf(ficres," %.5e",matcov[i][j]); - if(mle==1) - printf(" %.5e",matcov[i][j]); - fprintf(ficlog," %.5e",matcov[i][j]); - } - fprintf(ficres,"\n"); - if(mle==1) - printf("\n"); - fprintf(ficlog,"\n"); - k++; - } - +/* # 121 Var(a12)\n\ */ +/* # 122 Cov(b12,a12) Var(b12)\n\ */ +/* # 131 Cov(a13,a12) Cov(a13,b12, Var(a13)\n\ */ +/* # 132 Cov(b13,a12) Cov(b13,b12, Cov(b13,a13) Var(b13)\n\ */ +/* # 212 Cov(a21,a12) Cov(a21,b12, Cov(a21,a13) Cov(a21,b13) Var(a21)\n\ */ +/* # 212 Cov(b21,a12) Cov(b21,b12, Cov(b21,a13) Cov(b21,b13) Cov(b21,a21) Var(b21)\n\ */ +/* # 232 Cov(a23,a12) Cov(a23,b12, Cov(a23,a13) Cov(a23,b13) Cov(a23,a21) Cov(a23,b21) Var(a23)\n\ */ +/* # 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n" */ + + +/* Just to have a covariance matrix which will be more understandable + even is we still don't want to manage dictionary of variables +*/ + for(itimes=1;itimes<=2;itimes++){ + jj=0; + for(i=1; i <=nlstate; i++){ + for(j=1; j <=nlstate+ndeath; j++){ + if(j==i) continue; + for(k=1; k<=ncovmodel;k++){ + jj++; + ca[0]= k+'a'-1;ca[1]='\0'; + if(itimes==1){ + if(mle>=1) + printf("#%1d%1d%d",i,j,k); + fprintf(ficlog,"#%1d%1d%d",i,j,k); + fprintf(ficres,"#%1d%1d%d",i,j,k); + }else{ + if(mle>=1) + printf("%1d%1d%d",i,j,k); + fprintf(ficlog,"%1d%1d%d",i,j,k); + fprintf(ficres,"%1d%1d%d",i,j,k); + } + ll=0; + for(li=1;li <=nlstate; li++){ + for(lj=1;lj <=nlstate+ndeath; lj++){ + if(lj==li) continue; + for(lk=1;lk<=ncovmodel;lk++){ + ll++; + if(ll<=jj){ + cb[0]= lk +'a'-1;cb[1]='\0'; + if(ll=1) + printf(" Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); + fprintf(ficlog," Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); + fprintf(ficres," Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); + }else{ + if(mle>=1) + printf(" %.5e",matcov[jj][ll]); + fprintf(ficlog," %.5e",matcov[jj][ll]); + fprintf(ficres," %.5e",matcov[jj][ll]); + } + }else{ + if(itimes==1){ + if(mle>=1) + printf(" Var(%s%1d%1d)",ca,i,j); + fprintf(ficlog," Var(%s%1d%1d)",ca,i,j); + fprintf(ficres," Var(%s%1d%1d)",ca,i,j); + }else{ + if(mle>=1) + printf(" %.5e",matcov[jj][ll]); + fprintf(ficlog," %.5e",matcov[jj][ll]); + fprintf(ficres," %.5e",matcov[jj][ll]); + } + } + } + } /* end lk */ + } /* end lj */ + } /* end li */ + if(mle>=1) + printf("\n"); + fprintf(ficlog,"\n"); + fprintf(ficres,"\n"); + numlinepar++; + } /* end k*/ + } /*end j */ + } /* end i */ + } /* end itimes */ + + fflush(ficlog); + fflush(ficres); + while((c=getc(ficpar))=='#' && c!= EOF){ ungetc(c,ficpar); fgets(line, MAXLINE, ficpar); @@ -5086,7 +5158,7 @@ ageminpar, agemax, s[lastpass][imx], agev[lastpass][imx], nlstate, imx, mint[las if((nberr >0) || (nbwarn>0)){ - printf("End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); + printf("End of Imach with %d errors and/or %d warnings\n",nberr,nbwarn); fprintf(ficlog,"End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); }else{ printf("End of Imach\n");