Diff for /imach/src/imach.c between versions 1.350 and 1.351

version 1.350, 2023/04/24 11:38:06 version 1.351, 2023/04/29 10:43:47
Line 1 Line 1
 /* $Id$  /* $Id$
   $State$    $State$
   $Log$    $Log$
     Revision 1.351  2023/04/29 10:43:47  brouard
     Summary: 099r45
   
   Revision 1.350  2023/04/24 11:38:06  brouard    Revision 1.350  2023/04/24 11:38:06  brouard
   *** empty log message ***    *** empty log message ***
   
Line 1804  char *trimbb(char *out, char *in) Line 1807  char *trimbb(char *out, char *in)
   return s;    return s;
 }  }
   
   char *trimbtab(char *out, char *in)
   { /* Trim  blanks or tabs in line but keeps first blanks if line starts with blanks */
     char *s;
     s=out;
     while (*in != '\0'){
       while( (*in == ' ' || *in == '\t')){ /* && *(in+1) != '\0'){*/
         in++;
       }
       *out++ = *in++;
     }
     *out='\0';
     return s;
   }
   
 /* char *substrchaine(char *out, char *in, char *chain) */  /* char *substrchaine(char *out, char *in, char *chain) */
 /* { */  /* { */
 /*   /\* Substract chain 'chain' from 'in', return and output 'out' *\/ */  /*   /\* Substract chain 'chain' from 'in', return and output 'out' *\/ */
Line 9095  set ter svg size 640, 480\nunset log y\n Line 9112  set ter svg size 640, 480\nunset log y\n
             fprintf(ficgp," u %d:(",ioffset);               fprintf(ficgp," u %d:(",ioffset); 
             kl=0;              kl=0;
             strcpy(gplotcondition,"(");              strcpy(gplotcondition,"(");
             for (k=1; k<=cptcoveff; k++){    /* For each covariate writing the chain of conditions */              /* for (k=1; k<=cptcoveff; k++){    /\* For each covariate writing the chain of conditions *\/ */
               /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */                /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */
               lv=codtabm(k1,TnsdVar[Tvaraff[k]]);              for (k=1; k<=cptcovs; k++){    /* For each covariate k get corresponding value lv for combination k1 */
                 /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */
                 lv=Tvresult[nres][k];
                 vlv=TinvDoQresult[nres][Tvresult[nres][k]];
               /* decodtabm(1,1,4) = 1 because h=1  k= (1) 1  1  1 */                /* decodtabm(1,1,4) = 1 because h=1  k= (1) 1  1  1 */
               /* decodtabm(1,2,4) = 1 because h=1  k=  1 (1) 1  1 */                /* decodtabm(1,2,4) = 1 because h=1  k=  1 (1) 1  1 */
               /* decodtabm(13,3,4)= 2 because h=13 k=  1  1 (2) 2 */                /* decodtabm(13,3,4)= 2 because h=13 k=  1  1 (2) 2 */
               /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */                /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */
               vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])];                /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */
               kl++;                kl++;
               sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]);                /* sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); */
                 sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,lv, kl+1, vlv );
               kl++;                kl++;
               if(k <cptcoveff && cptcoveff>1)                if(k <cptcovs && cptcovs>1)
                 sprintf(gplotcondition+strlen(gplotcondition)," && ");                  sprintf(gplotcondition+strlen(gplotcondition)," && ");
             }              }
             strcpy(gplotcondition+strlen(gplotcondition),")");              strcpy(gplotcondition+strlen(gplotcondition),")");
Line 9190  set ter svg size 640, 480\nunset log y\n Line 9211  set ter svg size 640, 480\nunset log y\n
           }else{            }else{
             fprintf(ficgp,",\\\n '' ");              fprintf(ficgp,",\\\n '' ");
           }            }
           if(cptcoveff ==0){ /* No covariate */            /* if(cptcoveff ==0){ /\* No covariate *\/ */
             if(cptcovs ==0){ /* No covariate */
             ioffset=2; /* Age is in 2 */              ioffset=2; /* Age is in 2 */
             /*# yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/              /*# yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/
             /*#   1       2   3   4   5  6    7  8   9   10  11  12  13  14  15  16  17  18 */              /*#   1       2   3   4   5  6    7  8   9   10  11  12  13  14  15  16  17  18 */
Line 9302  set ter svg size 640, 480\nunset log y\n Line 9324  set ter svg size 640, 480\nunset log y\n
     fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year\n");      fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year\n");
     fprintf(ficgp,"#model=1+age+%s \n",model);      fprintf(ficgp,"#model=1+age+%s \n",model);
     fprintf(ficgp,"# Type of graphic ng=%d\n",ng);      fprintf(ficgp,"# Type of graphic ng=%d\n",ng);
     fprintf(ficgp,"#   k1=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */      /* fprintf(ficgp,"#   k1=1 to 2^%d=%d\n",cptcoveff,m);/\* to be checked *\/ */
       fprintf(ficgp,"#   k1=1 to 2^%d=%d\n",cptcovs,m);/* to be checked */
     /* for(k1=1; k1 <=m; k1++)  /\* For each combination of covariate *\/ */      /* for(k1=1; k1 <=m; k1++)  /\* For each combination of covariate *\/ */
     for(nres=1; nres <= nresult; nres++){ /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
      /* k1=nres; */       /* k1=nres; */
Line 9920  void prevforecast(char fileres[], double Line 9943  void prevforecast(char fileres[], double
   /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */    /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */
   /* date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); */    /* date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); */
   /* date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); */    /* date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); */
   i1=pow(2,cptcoveff);    /* i1=pow(2,cptcoveff); */
   if (cptcovn < 1){i1=1;}    /* if (cptcovn < 1){i1=1;} */
       
   fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2);     fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); 
       
   fprintf(ficresf,"#****** Routine prevforecast **\n");    fprintf(ficresf,"#****** Routine prevforecast **\n");
       
 /*            if (h==(int)(YEARM*yearp)){ */  /*            if (h==(int)(YEARM*yearp)){ */
   for(nres=1; nres <= nresult; nres++) /* For each resultline */    for(nres=1; nres <= nresult; nres++){ /* For each resultline */
     for(k=1; k<=i1;k++){ /* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) */      k=TKresult[nres];
     if(i1 != 1 && TKresult[nres]!= k)      if(TKresult[nres]==0) k=1; /* To be checked for noresult */
       continue;      /*  for(k=1; k<=i1;k++){ /\* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) *\/ */
     if(invalidvarcomb[k]){      /* if(i1 != 1 && TKresult[nres]!= k) */
       printf("\nCombination (%d) projection ignored because no cases \n",k);       /*   continue; */
       continue;      /* if(invalidvarcomb[k]){ */
     }      /*   printf("\nCombination (%d) projection ignored because no cases \n",k);  */
       /*   continue; */
       /* } */
     fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#");      fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#");
     for(j=1;j<=cptcoveff;j++) {      for(j=1;j<=cptcovs;j++){
       /* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); */        /* for(j=1;j<=cptcoveff;j++) { */
       fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]);      /*   /\* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); *\/ */
     }      /*   fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */
     for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */      /* } */
       fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]);      /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */
       /*   fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */
       /* } */
         fprintf(ficresf," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
     }      }
    
     fprintf(ficresf," yearproj age");      fprintf(ficresf," yearproj age");
     for(j=1; j<=nlstate+ndeath;j++){       for(j=1; j<=nlstate+ndeath;j++){ 
       for(i=1; i<=nlstate;i++)                for(i=1; i<=nlstate;i++)        
Line 9968  void prevforecast(char fileres[], double Line 9997  void prevforecast(char fileres[], double
           }            }
         }          }
         fprintf(ficresf,"\n");          fprintf(ficresf,"\n");
         for(j=1;j<=cptcoveff;j++)           /* for(j=1;j<=cptcoveff;j++)  */
           for(j=1;j<=cptcovs;j++) 
             fprintf(ficresf,"%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
           /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */            /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */
           fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* TnsdVar[Tvaraff]  correct */            /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /\* TnsdVar[Tvaraff]  correct *\/ */
         fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm);          fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm);
                   
         for(j=1; j<=nlstate+ndeath;j++) {          for(j=1; j<=nlstate+ndeath;j++) {
Line 10062  void prevforecast(char fileres[], double Line 10093  void prevforecast(char fileres[], double
   /* if(jintmean==0) jintmean=1; */    /* if(jintmean==0) jintmean=1; */
   /* if(mintmean==0) jintmean=1; */    /* if(mintmean==0) jintmean=1; */
       
   i1=pow(2,cptcoveff);    /* i1=pow(2,cptcoveff); */
   if (cptcovn < 1){i1=1;}    /* if (cptcovn < 1){i1=1;} */
       
   fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2);    fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2);
   printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2);    printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2);
       
   fprintf(ficresfb,"#****** Routine prevbackforecast **\n");    fprintf(ficresfb,"#****** Routine prevbackforecast **\n");
       
   for(nres=1; nres <= nresult; nres++) /* For each resultline */    for(nres=1; nres <= nresult; nres++){ /* For each resultline */
   for(k=1; k<=i1;k++){      k=TKresult[nres];
     if(i1 != 1 && TKresult[nres]!= k)      if(TKresult[nres]==0) k=1; /* To be checked for noresult */
       continue;    /* for(k=1; k<=i1;k++){ */
     if(invalidvarcomb[k]){    /*   if(i1 != 1 && TKresult[nres]!= k) */
       printf("\nCombination (%d) projection ignored because no cases \n",k);     /*     continue; */
       continue;    /*   if(invalidvarcomb[k]){ */
     }    /*     printf("\nCombination (%d) projection ignored because no cases \n",k);  */
     /*     continue; */
     /*   } */
     fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#");      fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#");
     for(j=1;j<=cptcoveff;j++) {      for(j=1;j<=cptcovs;j++){
       fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]);      /* for(j=1;j<=cptcoveff;j++) { */
     }      /*   fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */
     for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */      /* } */
       fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]);        fprintf(ficresfb," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
     }      }
      /*  fprintf(ficrespij,"******\n"); */
      /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */
      /*    fprintf(ficresfb," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */
      /*  } */
     fprintf(ficresfb," yearbproj age");      fprintf(ficresfb," yearbproj age");
     for(j=1; j<=nlstate+ndeath;j++){      for(j=1; j<=nlstate+ndeath;j++){
       for(i=1; i<=nlstate;i++)        for(i=1; i<=nlstate;i++)
Line 10115  void prevforecast(char fileres[], double Line 10152  void prevforecast(char fileres[], double
           }            }
         }          }
         fprintf(ficresfb,"\n");          fprintf(ficresfb,"\n");
         for(j=1;j<=cptcoveff;j++)          /* for(j=1;j<=cptcoveff;j++) */
           fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]);          for(j=1;j<=cptcovs;j++)
             fprintf(ficresfb,"%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
             /* fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */
         fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm);          fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm);
         for(i=1; i<=nlstate+ndeath;i++) {          for(i=1; i<=nlstate+ndeath;i++) {
           ppij=0.;ppi=0.;            ppij=0.;ppi=0.;
Line 11375  int decodemodel( char model[], int lasto Line 11414  int decodemodel( char model[], int lasto
     if (strlen(modelsav) >1){ /* V2 +V3 +V4 +V6 +V7 +V6*V2 +V7*V2 +V6*V3 +V7*V3 +V6*V4 +V7*V4 +age*V2 +age*V3 +age*V4 +age*V6 +age*V7 +age*V6*V2 +V7*V2 +age*V6*V3 +age*V7*V3 +age*V6*V4 +age*V7*V4 */      if (strlen(modelsav) >1){ /* V2 +V3 +V4 +V6 +V7 +V6*V2 +V7*V2 +V6*V3 +V7*V3 +V6*V4 +V7*V4 +age*V2 +age*V3 +age*V4 +age*V6 +age*V7 +age*V6*V2 +V7*V2 +age*V6*V3 +age*V7*V3 +age*V6*V4 +age*V7*V4 */
       j=nbocc(modelsav,'+'); /**< j=Number of '+' */        j=nbocc(modelsav,'+'); /**< j=Number of '+' */
       j1=nbocc(modelsav,'*'); /**< j1=Number of '*' */        j1=nbocc(modelsav,'*'); /**< j1=Number of '*' */
       cptcovs=j+1-j1; /**<  Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age => V1 + V3 =4+1-3=2  */        cptcovs=0; /**<  Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age => V1 + V3 =4+1-3=2  Wrong */
       cptcovt= j+1; /* Number of total covariates in the model, not including        cptcovt= j+1; /* Number of total covariates in the model, not including
                      * cst, age and age*age                        * cst, age and age*age 
                      * V1+V1*age+ V3 + V3*V4+age*age=> 3+1=4*/                       * V1+V1*age+ V3 + V3*V4+age*age=> 3+1=4*/
Line 11440  int decodemodel( char model[], int lasto Line 11479  int decodemodel( char model[], int lasto
         Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0;          Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0;
       }        }
       cptcovage=0;        cptcovage=0;
   
         /* First loop in order to calculate */
         /* for age*VN*Vm
          * Provides, Typevar[k], Tage[cptcovage], existcomb[n][m], FixedV[ncovcolt+k12]
          * Tprod[k1]=k  Tposprod[k]=k1;    Tvard[k1][1] =m;
         */
         /* Needs  FixedV[Tvardk[k][1]] */
         /* For others:
          * Sets   Typevar[k];
          * Tvar[k]=ncovcol+nqv+ntv+nqtv+k11;
          *        Tposprod[k]=k11;
          *        Tprod[k11]=k;
          *        Tvardk[k][1] =m;
          * Needs FixedV[Tvardk[k][1]] == 0
         */
         
       for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model line */        for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model line */
         cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' cutl from left to right          cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' cutl from left to right
                                          modelsav==V2+V1+V5*age+V4+V3*age strb=V3*age stra=V2+V1V5*age+V4 */    /* <model> "V5+V4+V3+V4*V3+V5*age+V1*age+V1" strb="V5" stra="V4+V3+V4*V3+V5*age+V1*age+V1" */                                           modelsav==V2+V1+V5*age+V4+V3*age strb=V3*age stra=V2+V1V5*age+V4 */    /* <model> "V5+V4+V3+V4*V3+V5*age+V1*age+V1" strb="V5" stra="V4+V3+V4*V3+V5*age+V1*age+V1" */
Line 11465  int decodemodel( char model[], int lasto Line 11520  int decodemodel( char model[], int lasto
                 strcat(strb,stre);                  strcat(strb,stre);
                 strcpy(strd,strb); /* in order for strd to not be "age"  for next test (will be Vn*Vm */                  strcpy(strd,strb); /* in order for strd to not be "age"  for next test (will be Vn*Vm */
               }                }
               printf("DEBUG FIXED k=%d, Tage[k]=%d, Tvar[Tage[k]=%d,FixedV[Tvar[Tage[k]]]=%d\n",k,Tage[k],Tvar[Tage[k]],FixedV[Tvar[Tage[k]]]);                /* printf("DEBUG FIXED k=%d, Tage[k]=%d, Tvar[Tage[k]=%d,FixedV[Tvar[Tage[k]]]=%d\n",k,Tage[k],Tvar[Tage[k]],FixedV[Tvar[Tage[k]]]); */
               FixedV[Tvar[Tage[k]]]=0; /* HERY not sure */                /* FixedV[Tvar[Tage[k]]]=0; /\* HERY not sure if V7*V4*age Fixed might not exist  yet*\/ */
             }else{  /* strc=Vn*Vm (and strd=age) and should be strb=Vn*Vm but want to keep original strb double product  */              }else{  /* strc=Vn*Vm (and strd=age) and should be strb=Vn*Vm but want to keep original strb double product  */
               strcpy(stre,strb); /* save full b in stre */                strcpy(stre,strb); /* save full b in stre */
               strcpy(strb,strc); /* save short c in new short b for next block strb=Vn*Vm*/                strcpy(strb,strc); /* save short c in new short b for next block strb=Vn*Vm*/
Line 11499  int decodemodel( char model[], int lasto Line 11554  int decodemodel( char model[], int lasto
               Tvardk[k][1] =m; /* m 1 for V1*/                Tvardk[k][1] =m; /* m 1 for V1*/
               Tvard[k1][2] =n; /* n 4 for V4*/                Tvard[k1][2] =n; /* n 4 for V4*/
               Tvardk[k][2] =n; /* n 4 for V4*/                Tvardk[k][2] =n; /* n 4 for V4*/
 /*            Tvar[Tage[cptcovage]]=k1;*/ /* Tvar[6=age*V3*V2]=9 (new fixed covariate) */  /*            Tvar[Tage[cptcovage]]=k1;*/ /* Tvar[6=age*V3*V2]=9 (new fixed covariate) */ /* We don't know about Fixed yet HERE */
               if( FixedV[Tvardk[k][1]] == 0 && FixedV[Tvardk[k][2]] == 0){ /* If the product is a fixed covariate then we feed the new column with Vn*Vm */                if( FixedV[Tvardk[k][1]] == 0 && FixedV[Tvardk[k][2]] == 0){ /* If the product is a fixed covariate then we feed the new column with Vn*Vm */
                 for (i=1; i<=lastobs;i++){/* For fixed product */                  for (i=1; i<=lastobs;i++){/* For fixed product */
                   /* Computes the new covariate which is a product of                    /* Computes the new covariate which is a product of
Line 11649  int decodemodel( char model[], int lasto Line 11704  int decodemodel( char model[], int lasto
                                 /*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav);                                  /*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav);
                                   scanf("%d",i);*/                                    scanf("%d",i);*/
       } /* end of loop + on total covariates */        } /* end of loop + on total covariates */
   
         
     } /* end if strlen(modelsave == 0) age*age might exist */      } /* end if strlen(modelsave == 0) age*age might exist */
   } /* end if strlen(model == 0) */    } /* end if strlen(model == 0) */
   cptcovs=cptcovt - cptcovdageprod - cptcovprod;/**<  Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age + age*v4*V3=> V1 + V3 =4+1-3=2  */    cptcovs=cptcovt - cptcovdageprod - cptcovprod;/**<  Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age + age*v4*V3=> V1 + V3 =4+1-3=2  */
Line 11687  Fixed[k] 0=fixed (product or simple), 1 Line 11744  Fixed[k] 0=fixed (product or simple), 1
 Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model);  Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model);
   for(k=-1;k<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;}    for(k=-1;k<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;}
   for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;}    for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;}
   
   
     /* Second loop for calculating  Fixed[k], Dummy[k]*/
   
     
   for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0,ncovva=0,ncovvta=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt loop on k from model */    for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0,ncovva=0,ncovvta=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt loop on k from model */
     if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */      if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */
       Fixed[k]= 0;        Fixed[k]= 0;
Line 12940  int main(int argc, char *argv[]) Line 13002  int main(int argc, char *argv[])
   /* double ***mobaverage; */    /* double ***mobaverage; */
   double wald;    double wald;
   
   char line[MAXLINE];    char line[MAXLINE], linetmp[MAXLINE];
   char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE];    char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE];
   
   char  modeltemp[MAXLINE];    char  modeltemp[MAXLINE];
Line 13273  int main(int argc, char *argv[]) Line 13335  int main(int argc, char *argv[])
     }else      }else
       break;        break;
   }    }
   if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){    if((num_filled=sscanf(line,"model=%[^.\n]", model)) !=EOF){ /* Every character after model but dot and  return */
       if (num_filled != 1){
         printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);
         fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);
         model[0]='\0';
         goto end;
       }else{
         trimbtab(linetmp,line); /* Trims multiple blanks in line */
         strcpy(line, linetmp);
       }
     }
     if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){ /* Every character after 1+age but dot and  return */
     if (num_filled != 1){      if (num_filled != 1){
       printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);        printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);
       fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);        fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line);
Line 13646  Please run with mle=-1 to get a correct Line 13719  Please run with mle=-1 to get a correct
   Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1]  and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm    Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1]  and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm
                             * For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd.                               * For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd. 
                             * Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */                              * Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */
   Tvardk=imatrix(-1,NCOVMAX,1,2);    Tvardk=imatrix(0,NCOVMAX,1,2);
   Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age    Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age
                          4 covariates (3 plus signs)                           4 covariates (3 plus signs)
                          Tage[1=V3*age]= 4; Tage[2=age*V4] = 3                           Tage[1=V3*age]= 4; Tage[2=age*V4] = 3
Line 14901  Please run with mle=-1 to get a correct Line 14974  Please run with mle=-1 to get a correct
   
     pstamp(ficreseij);      pstamp(ficreseij);
                                   
     i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */      /* i1=pow(2,cptcoveff); /\* Number of combination of dummy covariates *\/ */
     if (cptcovn < 1){i1=1;}      /* if (cptcovn < 1){i1=1;} */
           
     for(nres=1; nres <= nresult; nres++) /* For each resultline */      for(nres=1; nres <= nresult; nres++){ /* For each resultline */
     for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */      /* for(k=1; k<=i1;k++){ /\* For any combination of dummy covariates, fixed and varying *\/ */
       if(i1 != 1 && TKresult[nres]!= k)        /* if(i1 != 1 && TKresult[nres]!= k) */
         continue;        /*        continue; */
       fprintf(ficreseij,"\n#****** ");        fprintf(ficreseij,"\n#****** ");
       printf("\n#****** ");        printf("\n#****** ");
       for(j=1;j<=cptcoveff;j++) {        for(j=1;j<=cptcovs;j++){
         fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]);        /* for(j=1;j<=cptcoveff;j++) { */
         printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]);          /* fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */
           fprintf(ficreseij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
           printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
           /* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */
       }        }
       for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */        for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */
         printf(" V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */          printf(" V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */
Line 15156  Please run with mle=-1 to get a correct Line 15232  Please run with mle=-1 to get a correct
   
           
     free_vector(weight,firstobs,lastobs);      free_vector(weight,firstobs,lastobs);
     free_imatrix(Tvardk,-1,NCOVMAX,1,2);      free_imatrix(Tvardk,0,NCOVMAX,1,2);
     free_imatrix(Tvard,1,NCOVMAX,1,2);      free_imatrix(Tvard,1,NCOVMAX,1,2);
     free_imatrix(s,1,maxwav+1,firstobs,lastobs);      free_imatrix(s,1,maxwav+1,firstobs,lastobs);
     free_matrix(anint,1,maxwav,firstobs,lastobs);       free_matrix(anint,1,maxwav,firstobs,lastobs); 

Removed from v.1.350  
changed lines
  Added in v.1.351


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>