]> henry.ined.fr Git - .git/commitdiff
* imach.c (Repository):
authorN. Brouard <brouard@ined.fr>
Tue, 8 Jul 2003 07:54:34 +0000 (07:54 +0000)
committerN. Brouard <brouard@ined.fr>
Tue, 8 Jul 2003 07:54:34 +0000 (07:54 +0000)
(Repository): Using imachwizard code to output a more meaningful covariance
matrix (cov(a12,c31) instead of numbers.

src/imach.c

index a3b56893479acbece2ea209dd8401dfee921e6e3..c2f0d1f173eaf76664d1c33f40073fe77e26a64c 100644 (file)
@@ -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.
 #include <time.h>
 #include "timeval.h"
 
+/* #include <libintl.h> */
+/* #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<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n");
   fprintf(fichtm,"\n");
 
-  fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Computing matrix of variance-covariance of step probabilities</a></h4></li>\n",optionfilehtmcov);
-  fprintf(fichtmcov,"\n<h4>Computing matrix of variance-covariance of step probabilities</h4>\n\
+  fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Matrix of variance-covariance of pairs of step probabilities (drawings)</a></h4></li>\n",optionfilehtmcov);
+  fprintf(fichtmcov,"\n<h4>Matrix of variance-covariance of pairs of step probabilities</h4>\n\
   file %s<br>\n",optionfilehtmcov);
   fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated\
 and drawn. It helps understanding how is the covariance between two incidences.\
@@ -3181,8 +3187,8 @@ fprintf(fichtm," <ul><li><b>Graphs</b></li><p>");
        fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">");
      }
      for(cpt=1; cpt<=nlstate;cpt++) {
-       fprintf(fichtm,"<br>- Observed and period prevalence (with confident\
-interval) in state (%d): %s%d%d.png <br>\
+       fprintf(fichtm,"<br>- Observed (cross-sectional) and period (incidence based) \
+prevalence (with 95%% confidence interval) in state (%d): %s%d%d.png <br>\
 <img src=\"%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<br>\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<br>\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<jj){
+                   if(itimes==1){
+                     if(mle>=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");