]> henry.ined.fr Git - .git/commitdiff
Summary: 0.99r38
authorN. Brouard <brouard@ined.fr>
Sun, 11 Sep 2022 19:54:09 +0000 (19:54 +0000)
committerN. Brouard <brouard@ined.fr>
Sun, 11 Sep 2022 19:54:09 +0000 (19:54 +0000)
* imach.c (Module): Adding timevarying products of any kinds,
should work before shifting cotvar from ncovcol+nqv columns in
order to have a correspondance between the column of cotvar and
the id of column.
(Module): Some cleaning and adding covariates in ILK.txt

src/imach.c

index d31bbcb24e1a7761996a51bba84c7604a3d88490..dae9409f5e9fe4412045f158849e985861d4e823 100644 (file)
@@ -1,6 +1,11 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.341  2022/09/11 07:58:42  brouard
+  Summary: Version 0.99r38
+
+  After adding change in cotvar.
+
   Revision 1.340  2022/09/11 07:53:11  brouard
   Summary: Version imach 0.99r37
 
@@ -1325,6 +1330,7 @@ char fullversion[]="$Revision$ $Date$";
 char strstart[80];
 char optionfilext[10], optionfilefiname[FILENAMELENGTH];
 int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings  */
+int debugILK=0; /* debugILK is set by a #d in a comment line */
 int nagesqr=0, nforce=0; /* nagesqr=1 if model is including age*age, number of forces */
 /* Number of covariates model (1)=V2+V1+ V3*age+V2*V4 */
 /* Model(2)  V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */
@@ -4468,26 +4474,8 @@ double funcone( double *x)
       ipmx +=1;
       sw += weight[i];
       ll[s[mw[mi][i]][i]] += 2*weight[i]*lli;
-      printf("Funcone num[i]=%ld i=%6d V= ", num[i], i);
-      for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */
-       printf("%g",covar[Tvar[TvarFind[kf]]][i]);
-      }
-      for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying  covariates (single and product but no age) including individual from products */
-       ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
-       if(ipos!=iposold){ /* Not a product or first of a product */
-         printf(" %g",cov[ioffset+ipos]);
-       }else{
-         printf("*");
-       }
-       iposold=ipos;
-      }
-      for (kk=1; kk<=cptcovage;kk++) {
-       if(!FixedV[Tvar[Tage[kk]]])
-         printf(" %g*age",covar[Tvar[Tage[kk]]][i]);
-       else
-         printf(" %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ 
-      }
-      printf(" s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2]));
+      /* Printing covariates values for each contribution for checking */
+      /* printf(" s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
       if(globpr){
        fprintf(ficresilk,"%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\
  %11.6f %11.6f %11.6f ", \
@@ -4502,9 +4490,37 @@ double funcone( double *x)
          fprintf(ficresilk," %10.6f",-ll[k]*gipmx/gsw);
          /* printf(" %10.6f",-ll[k]*gipmx/gsw); */
        }
-       fprintf(ficresilk," %10.6f\n", -llt);
+       fprintf(ficresilk," %10.6f", -llt);
        /* printf(" %10.6f\n", -llt); */
-      }
+       /* if(debugILK){ /\* debugILK is set by a #d in a comment line *\/ */
+         fprintf(ficresilk,"%09ld ", num[i]);
+         for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */
+           fprintf(ficresilk," %g",covar[Tvar[TvarFind[kf]]][i]);
+         }
+         for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying  covariates (single and product but no age) including individual from products */
+           ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
+           if(ipos!=iposold){ /* Not a product or first of a product */
+             fprintf(ficresilk," %g",cov[ioffset+ipos]);
+             /* printf(" %g",cov[ioffset+ipos]); */
+           }else{
+             fprintf(ficresilk,"*");
+             /* printf("*"); */
+           }
+           iposold=ipos;
+         }
+         for (kk=1; kk<=cptcovage;kk++) {
+           if(!FixedV[Tvar[Tage[kk]]]){
+             fprintf(ficresilk," %g*age",covar[Tvar[Tage[kk]]][i]);
+             /* printf(" %g*age",covar[Tvar[Tage[kk]]][i]); */
+           }else{
+             fprintf(ficresilk," %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ 
+             /* printf(" %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/  */
+           }
+         }
+         /* printf("\n"); */
+       /* } /\*  End debugILK *\/ */
+       fprintf(ficresilk,"\n");
+      } /* End if globpr */
     } /* end of wave */
   } /* end of individual */
   for(k=1,l=0.; k<=nlstate; k++) l += ll[k];
@@ -4525,8 +4541,9 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
      the selection of individuals/waves and
      to check the exact contribution to the likelihood.
      Plotting could be done.
-   */
-  int k;
+  */
+  void pstamp(FILE *ficres);
+  int k, kf, kk, ncovv, iposold, ipos;
 
   if(*globpri !=0){ /* Just counts and sums, no printings */
     strcpy(fileresilk,"ILK_"); 
@@ -4535,13 +4552,43 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
       printf("Problem with resultfile: %s\n", fileresilk);
       fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk);
     }
+    pstamp(ficresilk);fprintf(ficresilk,"# model=1+age+%s\n",model);
     fprintf(ficresilk, "#individual(line's_record) count ageb ageend s1 s2 wave# effective_wave# number_of_matrices_product pij weight weight/gpw -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n");
     fprintf(ficresilk, "#num_i ageb agend i s1 s2 mi mw dh likeli weight %%weight 2wlli out sav ");
     /*         i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */
     for(k=1; k<=nlstate; k++) 
       fprintf(ficresilk," -2*gipw/gsw*weight*ll[%d]++",k);
-    fprintf(ficresilk," -2*gipw/gsw*weight*ll(total)\n");
-  }
+    fprintf(ficresilk," -2*gipw/gsw*weight*ll(total) ");
+
+    /* if(debugILK){ /\* debugILK is set by a #d in a comment line *\/ */
+      for(kf=1;kf <= ncovf; kf++){
+       fprintf(ficresilk,"V%d",Tvar[TvarFind[kf]]);
+       /* printf("V%d",Tvar[TvarFind[kf]]); */
+      }
+      for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){
+       ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
+       if(ipos!=iposold){ /* Not a product or first of a product */
+         /* printf(" %d",ipos); */
+         fprintf(ficresilk," V%d",TvarVV[ncovv]);
+       }else{
+         /* printf("*"); */
+         fprintf(ficresilk,"*");
+           }
+       iposold=ipos;
+      }
+      for (kk=1; kk<=cptcovage;kk++) {
+       if(!FixedV[Tvar[Tage[kk]]]){
+         /* printf(" %d*age(Fixed)",Tvar[Tage[kk]]); */
+         fprintf(ficresilk," %d*age(Fixed)",Tvar[Tage[kk]]);
+       }else{
+         fprintf(ficresilk," %d*age(Varying)",Tvar[Tage[kk]]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ 
+         /* printf(" %d*age(Varying)",Tvar[Tage[kk]]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/  */
+       }
+      }
+    /* } /\* End if debugILK *\/ */
+    /* printf("\n"); */
+    fprintf(ficresilk,"\n");
+  } /* End glogpri */
 
   *fretone=(*func)(p);
   if(*globpri !=0){
@@ -6229,7 +6276,7 @@ void  concatwav(int wav[], int **dh, int **bh,  int **mw, int **s, double *agedc
         break;
        } /* end switch */
      } /* end dummy test */
-     if(Dummy[k]==1 && Typevar[k] !=1){ /* Quantitative covariate and not age product */ 
+     if(Dummy[k]==1 && Typevar[k] !=1 && Fixed ==0){ /* Fixed Quantitative covariate and not age product */ 
        for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the  modality of this covariate Vj*/
         if(Tvar[k]<=0 || Tvar[k]>=NCOVMAX){
           printf("Error k=%d \n",k);
@@ -7329,7 +7376,7 @@ To be simple, these graphs help to understand the significativity of each parame
 
    for(nres=1;nres <=nresult; nres++){ /* For each resultline */
    for(j1=1; j1<=tj;j1++){ /* For any combination of dummy covariates, fixed and varying */
-     printf("Varprob  TKresult[nres]=%d j1=%d, nres=%d, cptcovn=%d, cptcoveff=%d tj=%d cptcovs=%d\n",  TKresult[nres], j1, nres, cptcovn, cptcoveff, tj, cptcovs);
+     /* printf("Varprob  TKresult[nres]=%d j1=%d, nres=%d, cptcovn=%d, cptcoveff=%d tj=%d cptcovs=%d\n",  TKresult[nres], j1, nres, cptcovn, cptcoveff, tj, cptcovs); */
      if(tj != 1 && TKresult[nres]!= j1)
        continue;
 
@@ -10626,7 +10673,7 @@ int decoderesult( char resultline[], int nres)
   printf("decoderesult:%s\n",resultline);
 
   strcpy(resultsav,resultline);
-  printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline);
+  /* printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline); */
   if (strlen(resultsav) >1){
     j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' in this resultline */
   }
@@ -10686,7 +10733,7 @@ int decoderesult( char resultline[], int nres)
        if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5   */
          modelresult[nres][k2]=k1;/* we found a Vn=1 corrresponding to Vn*age in the model modelresult[2]=1 modelresult[1]=2  modelresult[3]=3  modelresult[6]=4 modelresult[9]=5 */
          resultmodel[nres][k1]=k2; /* Added here */
-         printf("Decoderesult first modelresult[k2=%d]=%d (k1) V%d*AGE\n",k2,k1,Tvar[k1]);
+         /* printf("Decoderesult first modelresult[k2=%d]=%d (k1) V%d*AGE\n",k2,k1,Tvar[k1]); */
          match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */
          break;
        }
@@ -10699,11 +10746,11 @@ int decoderesult( char resultline[], int nres)
     }else if(Typevar[k1]==2){ /* Product No age We want to get the position in the resultline of the product in the model line*/
       /* resultmodel[nres][of such a Vn * Vm product k1] is not unique, so can't exist, we feed Tvard[k1][1] and [2] */ 
       match=0;
-      printf("Decoderesult very first Product Tvardk[k1=%d][1]=%d Tvardk[k1=%d][2]=%d V%d * V%d\n",k1,Tvardk[k1][1],k1,Tvardk[k1][2],Tvardk[k1][1],Tvardk[k1][2]);
+      /* printf("Decoderesult very first Product Tvardk[k1=%d][1]=%d Tvardk[k1=%d][2]=%d V%d * V%d\n",k1,Tvardk[k1][1],k1,Tvardk[k1][2],Tvardk[k1][1],Tvardk[k1][2]); */
       for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1  V2=8 V1=0 */
        if(Tvardk[k1][1]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5   */
          /* modelresult[k2]=k1; */
-         printf("Decoderesult first Product modelresult[k2=%d]=%d (k1) V%d * \n",k2,k1,Tvarsel[k2]);
+         /* printf("Decoderesult first Product modelresult[k2=%d]=%d (k1) V%d * \n",k2,k1,Tvarsel[k2]); */
          match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */
        }
       }
@@ -10716,7 +10763,7 @@ int decoderesult( char resultline[], int nres)
       for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1  V2=8 V1=0 */
        if(Tvardk[k1][2]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5   */
          /* modelresult[k2]=k1;*/
-         printf("Decoderesult second Product modelresult[k2=%d]=%d (k1) * V%d \n ",k2,k1,Tvarsel[k2]);
+         /* printf("Decoderesult second Product modelresult[k2=%d]=%d (k1) * V%d \n ",k2,k1,Tvarsel[k2]); */
          match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */
          break;
        }
@@ -10800,7 +10847,7 @@ int decoderesult( char resultline[], int nres)
       Tvresult[nres][k3]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */
       Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */
       precov[nres][k1]=Tvalsel[k3]; /* Value from resultline of the variable at the k1 position in the model */
-      printf("Decoderesult Dummy k=%d, k1=%d precov[nres=%d][k1=%d]=%.f V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k1, nres, k1,precov[nres][k1], k2, k3, (int)Tvalsel[k3], k4);
+      /* printf("Decoderesult Dummy k=%d, k1=%d precov[nres=%d][k1=%d]=%.f V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k1, nres, k1,precov[nres][k1], k2, k3, (int)Tvalsel[k3], k4); */
       k4++;;
     }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Quantitative and single */
       /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline                                 */
@@ -10818,7 +10865,7 @@ int decoderesult( char resultline[], int nres)
       Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */
       TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */
       precov[nres][k1]=Tvalsel[k3q];
-      printf("Decoderesult Quantitative nres=%d,precov[nres=%d][k1=%d]=%.f V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, nres, k1,precov[nres][k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]);
+      /* printf("Decoderesult Quantitative nres=%d,precov[nres=%d][k1=%d]=%.f V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, nres, k1,precov[nres][k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); */
       k4q++;;
     }else if( Dummy[k1]==2 ){ /* For dummy with age product */
       /* Tvar[k1]; */ /* Age variable */
@@ -10828,16 +10875,16 @@ int decoderesult( char resultline[], int nres)
       k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/
       TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][4]=1 */
       precov[nres][k1]=Tvalsel[k3];
-      printf("Decoderesult Dummy with age k=%d, k1=%d precov[nres=%d][k1=%d]=%.f Tvar[%d]=V%d k2=Tvarsel[%d]=%d Tvalsel[%d]=%d\n",k, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k3,(int)Tvarsel[k3], k3, (int)Tvalsel[k3]);
+      /* printf("Decoderesult Dummy with age k=%d, k1=%d precov[nres=%d][k1=%d]=%.f Tvar[%d]=V%d k2=Tvarsel[%d]=%d Tvalsel[%d]=%d\n",k, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k3,(int)Tvarsel[k3], k3, (int)Tvalsel[k3]); */
     }else if( Dummy[k1]==3 ){ /* For quant with age product */
       k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 25.1=k3q */
       k2q=(int)Tvarsel[k3q]; /*  Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */
       TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* TinvDoQresult[nres][5]=25.1 */
       precov[nres][k1]=Tvalsel[k3q];
-      printf("Decoderesult Quantitative with age nres=%d, k1=%d, precov[nres=%d][k1=%d]=%f Tvar[%d]=V%d V(k2q=%d)= Tvarsel[%d]=%d, Tvalsel[%d]=%f\n",nres, k1, nres, k1,precov[nres][k1], k1,  Tvar[k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]);
+      /* printf("Decoderesult Quantitative with age nres=%d, k1=%d, precov[nres=%d][k1=%d]=%f Tvar[%d]=V%d V(k2q=%d)= Tvarsel[%d]=%d, Tvalsel[%d]=%f\n",nres, k1, nres, k1,precov[nres][k1], k1,  Tvar[k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); */
     }else if(Typevar[k1]==2 ){ /* For product quant or dummy (not with age) */
       precov[nres][k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]];      
-      printf("Decoderesult Quantitative or Dummy (not with age) nres=%d k1=%d precov[nres=%d][k1=%d]=%.f V%d(=%.f) * V%d(=%.f) \n",nres, k1, nres, k1,precov[nres][k1], Tvardk[k1][1], TinvDoQresult[nres][Tvardk[k1][1]], Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][2]]);
+      /* printf("Decoderesult Quantitative or Dummy (not with age) nres=%d k1=%d precov[nres=%d][k1=%d]=%.f V%d(=%.f) * V%d(=%.f) \n",nres, k1, nres, k1,precov[nres][k1], Tvardk[k1][1], TinvDoQresult[nres][Tvardk[k1][1]], Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][2]]); */
     }else{
       printf("Error Decoderesult probably a product  Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]);
       fprintf(ficlog,"Error Decoderesult probably a product  Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]);
@@ -11086,7 +11133,8 @@ Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy
 Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for  product \n\
 Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\
 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<=cptcovt; 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, ncovf=0, nsd=0, nsq=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt */
     if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */
       Fixed[k]= 0;
@@ -11175,8 +11223,8 @@ Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy
       TvarVQind[nqtveff]=k; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */
       TmodelInvQind[nqtveff]=Tvar[k]- ncovcol-nqv-ntv;/* Only simple time varying quantitative variable */
       /* Tmodeliqind[k]=nqtveff;/\* Only simple time varying quantitative variable *\/ */
-      printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv);
-      printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv);
+      /* printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv); */
+      /* printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv); */
     }else if (Typevar[k] == 1) {  /* product with age */
       ncova++;
       TvarA[ncova]=Tvar[k];
@@ -11358,8 +11406,8 @@ Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy
       printf("Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]);
       fprintf(ficlog,"Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]);
     }
-    printf("Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]);
-    printf("           modell[%d].maintype=%d, modell[%d].subtype=%d\n",k,modell[k].maintype,k,modell[k].subtype);
+    /* printf("Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]); */
+    /* printf("           modell[%d].maintype=%d, modell[%d].subtype=%d\n",k,modell[k].maintype,k,modell[k].subtype); */
     fprintf(ficlog,"Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]);
   }
   /* Searching for doublons in the model */
@@ -12513,6 +12561,8 @@ int main(int argc, char *argv[])
     numlinepar++;
     if(line[1]=='q'){ /* This #q will quit imach (the answer is q) */
       z[0]=line[1];
+    }else if(line[1]=='d'){ /* For debugging individual values of covariates in ficresilk */
+      debugILK=1;
     }
     /* printf("****line [1] = %c \n",line[1]); */
     fputs(line, stdout);
@@ -13811,7 +13861,7 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
       case 13:
        num_filled=sscanf(line,"result:%[^\n]\n",resultlineori);
        nresult++; /* Sum of resultlines */
-       printf("Result %d: result:%s\n",nresult, resultlineori);
+       /* printf("Result %d: result:%s\n",nresult, resultlineori); */
        /* removefirstspace(&resultlineori); */
        
        if(strstr(resultlineori,"v") !=0){
@@ -13820,7 +13870,7 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
          return 1;
        }
        trimbb(resultline, resultlineori); /* Suppressing double blank in the resultline */
-       printf("Decoderesult resultline=\"%s\" resultlineori=\"%s\"\n", resultline, resultlineori);
+       /* printf("Decoderesult resultline=\"%s\" resultlineori=\"%s\"\n", resultline, resultlineori); */
        if(nresult > MAXRESULTLINESPONE-1){
          printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres);
          fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres);
@@ -14157,7 +14207,8 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
        /* Tvresult[nres][j] Name of the variable at position j in this resultline */
        /* Tresult[nres][j] Value of this variable at position j could be a float if quantitative  */
 /* We give up with the combinations!! */
-       printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]);  /* end if dummy  or quanti */
+       /* if(debugILK) */
+       /*   printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]);  /\* end if dummy  or quanti *\/ */
 
        if(Dummy[modelresult[nres][j]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to j in resultline  */
          printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline  */