]> henry.ined.fr Git - .git/commitdiff
Summary: Version 0.98nR (to be improved, but gives same optimization results as 0...
authorN. Brouard <brouard@ined.fr>
Sun, 26 Jan 2014 09:45:38 +0000 (09:45 +0000)
committerN. Brouard <brouard@ined.fr>
Sun, 26 Jan 2014 09:45:38 +0000 (09:45 +0000)
* imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested...
(Module): Version 0.98nR Running ok, but output format still only works for three covariates.

src/imach.c

index 532bb9f4b3a11a42d0141157c06dd32371ba9c16..afb75b993aad5ba5b12b4d95930bc3cbe643cbe7 100644 (file)
@@ -1,6 +1,11 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.142  2014/01/26 03:57:36  brouard
+  Summary: gnuplot changed plot w l 1 has to be changed to plot w l lt 2
+
+  * imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested...
+
   Revision 1.141  2014/01/26 02:42:01  brouard
   * imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested...
 
@@ -443,7 +448,7 @@ extern int errno;
 /* $Id$ */
 /* $State$ */
 
-char version[]="Imach version 0.98nR, January 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)";
+char version[]="Imach version 0.98nR2, January 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)";
 char fullversion[]="$Revision$ $Date$"; 
 char strstart[80];
 char optionfilext[10], optionfilefiname[FILENAMELENGTH];
@@ -577,8 +582,8 @@ int **codtab; /**< codtab=imatrix(1,100,1,10); */
 int **Tvard, *Tprod, cptcovprod, *Tvaraff;
 double *lsurv, *lpop, *tpop;
 
-double ftol=FTOL; /* Tolerance for computing Max Likelihood */
-double ftolhess; /* Tolerance for computing hessian */
+double ftol=FTOL; /**< Tolerance for computing Max Likelihood */
+double ftolhess; /**< Tolerance for computing hessian */
 
 /**************** split *************************/
 static int split( char *path, char *dirc, char *name, char *ext, char *finame )
@@ -2198,8 +2203,8 @@ void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag
 
   first=1;
 
-  for(k1=1; k1<=j;k1++){
-    for(i1=1; i1<=ncodemax[k1];i1++){
+  for(k1=1; k1<=j;k1++){   /* Loop on covariates */
+    for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */
       j1++;
       /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);
        scanf("%d", i);*/
@@ -2207,10 +2212,10 @@ void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag
        for (jk=-5; jk<=nlstate+ndeath; jk++)  
          for(m=iagemin; m <= iagemax+3; m++)
            freq[i][jk][m]=0;
-
-    for (i=1; i<=nlstate; i++)  
-      for(m=iagemin; m <= iagemax+3; m++)
-       prop[i][m]=0;
+      
+      for (i=1; i<=nlstate; i++)  
+       for(m=iagemin; m <= iagemax+3; m++)
+         prop[i][m]=0;
       
       dateintsum=0;
       k2cpt=0;
@@ -2248,6 +2253,9 @@ void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag
        fprintf(ficresp, "\n#********** Variable "); 
        for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]);
        fprintf(ficresp, "**********\n#");
+       fprintf(ficlog, "\n#********** Variable "); 
+       for (z1=1; z1<=cptcoveff; z1++) fprintf(ficlog, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]);
+       fprintf(ficlog, "**********\n#");
       }
       for(i=1; i<=nlstate;i++) 
        fprintf(ficresp, " Age Prev(%d) N(%d) N",i,i);
@@ -5491,12 +5499,32 @@ run imach with mle=-1 to get a correct template of the parameter file.\n",numlin
   m=pow(2,cptcoveff);
  
   for(k=1;k<=cptcoveff; k++){ /* scans any effective covariate */
-    for(i=1; i <=(m/pow(2,k));i++){ /* i=1 to 8/1=8; i=1 to 8/2=4; i=1 to 8/8=1 */ 
-      for(j=1; j <= ncodemax[k]; j++){ /* For each modality of this covariate */
-       for(cpt=1; cpt <=(m/pow(2,cptcoveff+1-k)); cpt++){  /* cpt=1 to 8/2**(3+1-1 or 3+1-3) =1 or 4 */ 
+    for(i=1; i <=pow(2,cptcoveff-k);i++){ /* i=1 to 8/1=8; i=1 to 8/2=4; i=1 to 8/8=1 */ 
+      for(j=1; j <= ncodemax[k]; j++){ /* For each modality of this covariate ncodemax=2*/
+       for(cpt=1; cpt <=pow(2,k-1); cpt++){  /* cpt=1 to 8/2**(3+1-1 or 3+1-3) =1 or 4 */ 
          h++;
          if (h>m) 
            h=1;
+         /**< codtab(h,k)  k
+          *     h     1     2     3     4
+          *______________________________  
+          *     1 i=1 1 i=1 1 i=1 1 i=1 1
+          *     2     2     1     1     1
+          *     3 i=2 1     2     1     1
+          *     4     2     2     1     1
+          *     5 i=3 1 i=2 1     2     1
+          *     6     2     1     2     1
+          *     7 i=4 1     2     2     1
+          *     8     2     2     2     1
+          *     9 i=5 1 i=3 1 i=2 1     1
+          *    10     2     1     1     1
+          *    11 i=6 1     2     1     1
+          *    12     2     2     1     1
+          *    13 i=7 1 i=4 1     2     1    
+          *    14     2     1     2     1
+          *    15 i=8 1     2     2     1
+          *    16     2     2     2     1
+          */
          codtab[h][k]=j;
          codtab[h][Tvar[k]]=j;
          printf("h=%d k=%d j=%d codtab[h][k]=%d Tvar[k]=%d codtab[h][Tvar[k]]=%d \n",h, k,j,codtab[h][k],Tvar[k],codtab[h][Tvar[k]]);
@@ -6076,14 +6104,14 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\
     agebase=ageminpar;
     agelim=agemaxpar;
     ftolpl=1.e-10;
-    i1=cptcoveff;
+    i1=pow(2,cptcoveff);
     if (cptcovn < 1){i1=1;}
 
     for(cptcov=1,k=0;cptcov<=i1;cptcov++){
-      for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){
+      //for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){
        k=k+1;
        /* to clean */
-       printf("cptcov=%d cptcod=%d codtab=%d nbcode=%d\n",cptcov, cptcod,codtab[cptcod][cptcov],nbcode);
+       //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtab[cptcod][cptcov]);
        fprintf(ficrespl,"\n#******");
        printf("\n#******");
        fprintf(ficlog,"\n#******");
@@ -6104,9 +6132,9 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\
          for(i=1; i<=nlstate;i++)
            fprintf(ficrespl," %.5f", prlim[i][i]);
          fprintf(ficrespl,"\n");
-       }
-      }
-    }
+       } /* Age */
+       /* was end of cptcod */
+    } /* cptcov */
     fclose(ficrespl);
 
     /*------------- h Pij x at various ages ------------*/