Diff for /imach/src/imach.c between versions 1.250 and 1.251

version 1.250, 2016/09/08 16:07:27 version 1.251, 2016/09/15 15:01:13
Line 1 Line 1
 /* $Id$  /* $Id$
   $State$    $State$
   $Log$    $Log$
     Revision 1.251  2016/09/15 15:01:13  brouard
     Summary: not working
   
   Revision 1.250  2016/09/08 16:07:27  brouard    Revision 1.250  2016/09/08 16:07:27  brouard
   Summary: continue    Summary: continue
   
Line 915  typedef struct { Line 918  typedef struct {
 /* #include <libintl.h> */  /* #include <libintl.h> */
 /* #define _(String) gettext (String) */  /* #define _(String) gettext (String) */
   
 #define MAXLINE 1024 /* Was 256. Overflow with 312 with 2 states and 4 covariates. Should be ok */  #define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */
   
 #define GNUPLOTPROGRAM "gnuplot"  #define GNUPLOTPROGRAM "gnuplot"
 /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/  /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/
Line 4186  void pstamp(FILE *fichier) Line 4189  void pstamp(FILE *fichier)
 }  }
   
 /************ Frequencies ********************/  /************ Frequencies ********************/
 void  freqsummary(char fileres[], double p[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \  void  freqsummary(char fileres[], double p[], double pstart[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \
                   int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \                    int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \
                   int firstpass,  int lastpass, int stepm, int weightopt, char model[])                    int firstpass,  int lastpass, int stepm, int weightopt, char model[])
 {  /* Some frequencies as well as proposing some starting values */  {  /* Some frequencies as well as proposing some starting values */
Line 4204  void  freqsummary(char fileres[], double Line 4207  void  freqsummary(char fileres[], double
   double agebegin, ageend;    double agebegin, ageend;
           
   pp=vector(1,nlstate);    pp=vector(1,nlstate);
   prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE);     prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); 
   posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */     posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ 
   pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */     pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ 
   /* prop=matrix(1,nlstate,iagemin,iagemax+3); */    /* prop=matrix(1,nlstate,iagemin,iagemax+3); */
Line 4248  Title=%s <br>Datafile=%s Firstpass=%d La Line 4251  Title=%s <br>Datafile=%s Firstpass=%d La
   }    }
   fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr);    fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr);
       
   freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+3+AGEMARGE);    freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+4+AGEMARGE);
   j1=0;    j1=0;
       
   /* j=ncoveff;  /\* Only fixed dummy covariates *\/ */    /* j=ncoveff;  /\* Only fixed dummy covariates *\/ */
Line 4265  Title=%s <br>Datafile=%s Firstpass=%d La Line 4268  Title=%s <br>Datafile=%s Firstpass=%d La
   dateintsum=0;    dateintsum=0;
   k2cpt=0;    k2cpt=0;
   
   for (j = 0; j <= cptcoveff; j+=cptcoveff){       for (j = 0; j <= cptcoveff; j+=cptcoveff){   /* j= 0 constant model */
   first=1;      first=1;
   for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */      for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */
     posproptt=0.;        posproptt=0.;
     /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);        /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]);
       scanf("%d", i);*/          scanf("%d", i);*/
     for (i=-5; i<=nlstate+ndeath; i++)          for (i=-5; i<=nlstate+ndeath; i++)  
       for (jk=-5; jk<=nlstate+ndeath; jk++)            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++)          for(m=iagemin; m <= iagemax+3; m++)
           freq[i][jk][m]=0;            prop[i][m]=0;
               posprop[i]=0;
     for (i=1; i<=nlstate; i++)  {          pospropt[i]=0;
       for(m=iagemin; m <= iagemax+3; m++)        }
         prop[i][m]=0;        /* for (z1=1; z1<= nqfveff; z1++) {   */
       posprop[i]=0;        /*   meanq[z1]+=0.; */
       pospropt[i]=0;        /*   for(m=1;m<=lastpass;m++){ */
     }        /*        meanqt[m][z1]=0.; */
     /* for (z1=1; z1<= nqfveff; z1++) {   */        /*   } */
     /*   meanq[z1]+=0.; */        /* } */
     /*   for(m=1;m<=lastpass;m++){ */        
     /*  meanqt[m][z1]=0.; */        /* dateintsum=0; */
     /*   } */        /* k2cpt=0; */
     /* } */        
             /* For that combination of covariate j1, we count and print the frequencies in one pass */
     /* dateintsum=0; */        for (iind=1; iind<=imx; iind++) { /* For each individual iind */
     /* k2cpt=0; */          bool=1;
           if(j !=0){
     /* For that combination of covariate j1, we count and print the frequencies in one pass */            if(anyvaryingduminmodel==0){ /* If All fixed covariates */
     for (iind=1; iind<=imx; iind++) { /* For each individual iind */              if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */
       bool=1;                /* for (z1=1; z1<= nqfveff; z1++) {   */
       if(j !=0){                /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */
       if(anyvaryingduminmodel==0){ /* If All fixed covariates */                /* } */
         if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */                for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */
           /* for (z1=1; z1<= nqfveff; z1++) {   */                  /* if(Tvaraff[z1] ==-20){ */
           /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */                  /*       /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */
           /* } */                  /* }else  if(Tvaraff[z1] ==-10){ */
           for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */                  /*       /\* sumnew+=coqvar[z1][iind]; *\/ */
             /* if(Tvaraff[z1] ==-20){ */                  /* }else  */
             /*   /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */                  if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */
             /* }else  if(Tvaraff[z1] ==-10){ */                    /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */
             /*   /\* sumnew+=coqvar[z1][iind]; *\/ */                    bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */
             /* }else  */                    /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", 
             if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */                       bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),
               /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */                       j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/
               bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */                    /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/
               /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n",                   } /* Onlyf fixed */
                  bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),                } /* end z1 */
                  j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/              } /* cptcovn > 0 */
               /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/            } /* end any */
             } /* Onlyf fixed */          }/* end j==0 */
           } /* end z1 */          if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */
         } /* cptcovn > 0 */            /* for(m=firstpass; m<=lastpass; m++){ */
       } /* end any */            for(mi=1; mi<wav[iind];mi++){ /* For that wave */
       }/* end j==0 */              m=mw[mi][iind];
       if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */              if(j!=0){
         /* for(m=firstpass; m<=lastpass; m++){ */                if(anyvaryingduminmodel==1){ /* Some are varying covariates */
         for(mi=1; mi<wav[iind];mi++){ /* For that wave */                  for (z1=1; z1<=cptcoveff; z1++) {
           m=mw[mi][iind];                    if( Fixed[Tmodelind[z1]]==1){
           if(j!=0){                      iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;
           if(anyvaryingduminmodel==1){ /* Some are varying covariates */                      if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's 
             for (z1=1; z1<=cptcoveff; z1++) {                                                                                        value is -1, we don't select. It differs from the 
               if( Fixed[Tmodelind[z1]]==1){                                                                                        constant and age model which counts them. */
                 iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;                        bool=0; /* not selected */
                 if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's                     }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */
                                                                                   value is -1, we don't select. It differs from the                       if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {
                                                                                   constant and age model which counts them. */                        bool=0;
                   bool=0; /* not selected */                      }
               }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */                    }
                 if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {  
                   bool=0;  
                 }                  }
                 }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop  */
               } /* end j==0 */
               /* bool =0 we keep that guy which corresponds to the combination of dummy values */
               if(bool==1){
                 /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind]
                    and mw[mi+1][iind]. dh depends on stepm. */
                 agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/
                 ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */
                 if(m >=firstpass && m <=lastpass){
                   k2=anint[m][iind]+(mint[m][iind]/12.);
                   /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/
                   if(agev[m][iind]==0) agev[m][iind]=iagemax+1;  /* All ages equal to 0 are in iagemax+1 */
                   if(agev[m][iind]==1) agev[m][iind]=iagemax+2;  /* All ages equal to 1 are in iagemax+2 */
                   if (s[m][iind]>0 && s[m][iind]<=nlstate)  /* If status at wave m is known and a live state */
                     prop[s[m][iind]][(int)agev[m][iind]] += weight[iind];  /* At age of beginning of transition, where status is known */
                   if (m<lastpass) {
                     /* if(s[m][iind]==4 && s[m+1][iind]==4) */
                     /*   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */
                     if(s[m][iind]==-1)
                       printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.));
                     freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */
                     /* if((int)agev[m][iind] == 55) */
                     /*   printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */
                     /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */
                     freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */
                   }
                 } /* end if between passes */  
                 if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) {
                   dateintsum=dateintsum+k2; /* on all covariates ?*/
                   k2cpt++;
                   /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */
               }                }
             }              }else{
           }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop  */                bool=1;
           } /* end j==0 */              }/* end bool 2 */
           /* bool =0 we keep that guy which corresponds to the combination of dummy values */            } /* end m */
           if(bool==1){          } /* end bool */
             /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind]        } /* end iind = 1 to imx */
                and mw[mi+1][iind]. dh depends on stepm. */        /* prop[s][age] is feeded for any initial and valid live state as well as
             agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/           freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */
             ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */        
             if(m >=firstpass && m <=lastpass){        
               k2=anint[m][iind]+(mint[m][iind]/12.);        /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/
               /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/        pstamp(ficresp);
               if(agev[m][iind]==0) agev[m][iind]=iagemax+1;  /* All ages equal to 0 are in iagemax+1 */        if  (cptcoveff>0 && j!=0){
               if(agev[m][iind]==1) agev[m][iind]=iagemax+2;  /* All ages equal to 1 are in iagemax+2 */          printf( "\n#********** Variable "); 
               if (s[m][iind]>0 && s[m][iind]<=nlstate)  /* If status at wave m is known and a live state */          fprintf(ficresp, "\n#********** Variable "); 
                 prop[s[m][iind]][(int)agev[m][iind]] += weight[iind];  /* At age of beginning of transition, where status is known */          fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); 
               if (m<lastpass) {          fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); 
                 /* if(s[m][iind]==4 && s[m+1][iind]==4) */          fprintf(ficlog, "\n#********** Variable "); 
                 /*   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */          for (z1=1; z1<=cptcoveff; z1++){
                 if(s[m][iind]==-1)            if(!FixedV[Tvaraff[z1]]){
                   printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.));              printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */              fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /* if((int)agev[m][iind] == 55) */              fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /*   printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */              fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */              fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
                 freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */  
               }  
             } /* end if between passes */    
             if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) {  
               dateintsum=dateintsum+k2; /* on all covariates ?*/  
               k2cpt++;  
               /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */  
             }  
           }else{            }else{
             bool=1;              printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
           }/* end bool 2 */              fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
         } /* end m */              fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
       } /* end bool */              fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
     } /* end iind = 1 to imx */              fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
     /* prop[s][age] is feeded for any initial and valid live state as well as            }
        freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */          }
               printf( "**********\n#");
               fprintf(ficresp, "**********\n#");
     /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/          fprintf(ficresphtm, "**********</h3>\n");
     pstamp(ficresp);          fprintf(ficresphtmfr, "**********</h3>\n");
     if  (cptcoveff>0 && j!=0){          fprintf(ficlog, "**********\n");
       fprintf(ficresp, "\n#********** Variable ");         }
       fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable ");         fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">");
       fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable ");         for(i=1; i<=nlstate;i++) {
       fprintf(ficlog, "\n#********** Variable ");           fprintf(ficresp, " Age Prev(%d)  N(%d)  N  ",i,i);
       for (z1=1; z1<=cptcoveff; z1++){          fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i);
         if(DummyV[z1]){  
           fprintf(ficresp, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficresphtm, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficresphtmfr, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficlog, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
         }else{  
           fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
           fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);  
         }  
       }  
       fprintf(ficresp, "**********\n#");  
       fprintf(ficresphtm, "**********</h3>\n");  
       fprintf(ficresphtmfr, "**********</h3>\n");  
       fprintf(ficlog, "**********\n");  
     }  
     fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">");  
     for(i=1; i<=nlstate;i++) {  
       fprintf(ficresp, " Age Prev(%d)  N(%d)  N  ",i,i);  
       fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i);  
     }  
     fprintf(ficresp, "\n");  
     fprintf(ficresphtm, "\n");  
       
     /* Header of frequency table by age */  
     fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">");  
     fprintf(ficresphtmfr,"<th>Age</th> ");  
     for(jk=-1; jk <=nlstate+ndeath; jk++){  
       for(m=-1; m <=nlstate+ndeath; m++){  
         if(jk!=0 && m!=0)  
           fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m);  
       }  
     }  
     fprintf(ficresphtmfr, "\n");  
       
     /* For each age */  
     for(iage=iagemin; iage <= iagemax+3; iage++){  
       fprintf(ficresphtm,"<tr>");  
       if(iage==iagemax+1){  
         fprintf(ficlog,"1");  
         fprintf(ficresphtmfr,"<tr><th>0</th> ");  
       }else if(iage==iagemax+2){  
         fprintf(ficlog,"0");  
         fprintf(ficresphtmfr,"<tr><th>Unknown</th> ");  
       }else if(iage==iagemax+3){  
         fprintf(ficlog,"Total");  
         fprintf(ficresphtmfr,"<tr><th>Total</th> ");  
       }else{  
         if(first==1){  
           first=0;  
           printf("See log file for details...\n");  
         }  
         fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage);  
         fprintf(ficlog,"Age %d", iage);  
       }        }
       for(jk=1; jk <=nlstate ; jk++){        fprintf(ficresp, "\n");
         for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++)        fprintf(ficresphtm, "\n");
           pp[jk] += freq[jk][m][iage];         
         /* Header of frequency table by age */
         fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">");
         fprintf(ficresphtmfr,"<th>Age</th> ");
         for(jk=-1; jk <=nlstate+ndeath; jk++){
           for(m=-1; m <=nlstate+ndeath; m++){
             if(jk!=0 && m!=0)
               fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m);
           }
       }        }
       for(jk=1; jk <=nlstate ; jk++){        fprintf(ficresphtmfr, "\n");
         for(m=-1, pos=0; m <=0 ; m++)      
           pos += freq[jk][m][iage];        /* For each age */
         if(pp[jk]>=1.e-10){        for(iage=iagemin; iage <= iagemax+3; iage++){
           fprintf(ficresphtm,"<tr>");
           if(iage==iagemax+1){
             fprintf(ficlog,"1");
             fprintf(ficresphtmfr,"<tr><th>0</th> ");
           }else if(iage==iagemax+2){
             fprintf(ficlog,"0");
             fprintf(ficresphtmfr,"<tr><th>Unknown</th> ");
           }else if(iage==iagemax+3){
             fprintf(ficlog,"Total");
             fprintf(ficresphtmfr,"<tr><th>Total</th> ");
           }else{
           if(first==1){            if(first==1){
             printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);              first=0;
               printf("See log file for details...\n");
             }
             fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage);
             fprintf(ficlog,"Age %d", iage);
           }
           for(jk=1; jk <=nlstate ; jk++){
             for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++)
               pp[jk] += freq[jk][m][iage]; 
           }
           for(jk=1; jk <=nlstate ; jk++){
             for(m=-1, pos=0; m <=0 ; m++)
               pos += freq[jk][m][iage];
             if(pp[jk]>=1.e-10){
               if(first==1){
                 printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);
               }
               fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);
             }else{
               if(first==1)
                 printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);
               fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);
           }            }
           fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]);  
         }else{  
           if(first==1)  
             printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);  
           fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk);  
         }          }
       }  
               
       for(jk=1; jk <=nlstate ; jk++){           for(jk=1; jk <=nlstate ; jk++){ 
         /* posprop[jk]=0; */            /* posprop[jk]=0; */
         for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */            for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */
           pp[jk] += freq[jk][m][iage];              pp[jk] += freq[jk][m][iage];
       } /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */          }       /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */
               
       for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){          for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){
         pos += pp[jk]; /* pos is the total number of transitions until this age */            pos += pp[jk]; /* pos is the total number of transitions until this age */
         posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state            posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state
                                               from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */
             pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state
                                           from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */                                            from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */
         pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state  
                                         from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */  
       }  
       for(jk=1; jk <=nlstate ; jk++){  
         if(pos>=1.e-5){  
           if(first==1)  
             printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);  
           fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);  
         }else{  
           if(first==1)  
             printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);  
           fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);  
         }          }
         if( iage <= iagemax){          for(jk=1; jk <=nlstate ; jk++){
           if(pos>=1.e-5){            if(pos>=1.e-5){
             fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);              if(first==1)
             fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);                printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);
             /*probs[iage][jk][j1]= pp[jk]/pos;*/              fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos);
             /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/            }else{
           }              if(first==1)
           else{                printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);
             fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta);              fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk);
             fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta);            }
             if( iage <= iagemax){
               if(pos>=1.e-5){
                 fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);
                 fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta);
                 /*probs[iage][jk][j1]= pp[jk]/pos;*/
                 /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/
               }
               else{
                 fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta);
                 fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta);
               }
           }            }
         }            pospropt[jk] +=posprop[jk];
         pospropt[jk] +=posprop[jk];          } /* end loop jk */
       } /* end loop jk */          /* pospropt=0.; */
       /* pospropt=0.; */          for(jk=-1; jk <=nlstate+ndeath; jk++){
       for(jk=-1; jk <=nlstate+ndeath; jk++){            for(m=-1; m <=nlstate+ndeath; m++){
         for(m=-1; m <=nlstate+ndeath; m++){              if(freq[jk][m][iage] !=0 ) { /* minimizing output */
           if(freq[jk][m][iage] !=0 ) { /* minimizing output */                if(first==1){
             if(first==1){                  printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);
               printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);                }
                 fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]);
             }              }
             fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]);              if(jk!=0 && m!=0)
                 fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]);
           }            }
           if(jk!=0 && m!=0)          } /* end loop jk */
             fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]);          posproptt=0.; 
           for(jk=1; jk <=nlstate; jk++){
             posproptt += pospropt[jk];
           }
           fprintf(ficresphtmfr,"</tr>\n ");
           if(iage <= iagemax){
             fprintf(ficresp,"\n");
             fprintf(ficresphtm,"</tr>\n");
           }
           if(first==1)
             printf("Others in log...\n");
           fprintf(ficlog,"\n");
         } /* end loop age iage */
         fprintf(ficresphtm,"<tr><th>Tot</th>");
         for(jk=1; jk <=nlstate ; jk++){
           if(posproptt < 1.e-5){
             fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt); 
           }else{
             fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt);  
         }          }
       } /* end loop jk */  
       posproptt=0.;   
       for(jk=1; jk <=nlstate; jk++){  
         posproptt += pospropt[jk];  
       }  
       fprintf(ficresphtmfr,"</tr>\n ");  
       if(iage <= iagemax){  
         fprintf(ficresp,"\n");  
         fprintf(ficresphtm,"</tr>\n");  
       }        }
       if(first==1)        fprintf(ficresphtm,"</tr>\n");
         printf("Others in log...\n");        fprintf(ficresphtm,"</table>\n");
       fprintf(ficlog,"\n");        fprintf(ficresphtmfr,"</table>\n");
     } /* end loop age iage */  
     fprintf(ficresphtm,"<tr><th>Tot</th>");  
     for(jk=1; jk <=nlstate ; jk++){  
       if(posproptt < 1.e-5){        if(posproptt < 1.e-5){
         fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt);             fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);
           fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);
           fprintf(ficres,"\n  This combination (%d) is not valid and no result will be produced\n\n",j1);
           invalidvarcomb[j1]=1;
       }else{        }else{
         fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt);              fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1);
           invalidvarcomb[j1]=0;
       }        }
     }        fprintf(ficresphtmfr,"</table>\n");
     fprintf(ficresphtm,"</tr>\n");        fprintf(ficlog,"\n");
     fprintf(ficresphtm,"</table>\n");        if(j!=0){
     fprintf(ficresphtmfr,"</table>\n");          printf("#Freqsummary: Starting values for combination j1=%d:\n", j1);
     if(posproptt < 1.e-5){          for(i=1,jk=1; i <=nlstate; i++){
       fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);            for(k=1; k <=(nlstate+ndeath); k++){
       fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1);              if (k != i) {
       fprintf(ficres,"\n  This combination (%d) is not valid and no result will be produced\n\n",j1);                printf("%d%d ",i,k);
       invalidvarcomb[j1]=1;                fprintf(ficlog,"%d%d ",i,k);
     }else{                for(jj=1; jj <=ncovmodel; jj++){ /* For counting jk */
       fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1);                  if(jj==1){  /* Constant case */
       invalidvarcomb[j1]=0;                    if(j1==1){ /* All dummy covariates to zero */
     }                      freq[i][k][iagemax+4]=freq[i][k][iagemax+3]; /* Stores case 0 0 0 */
     fprintf(ficresphtmfr,"</table>\n");                      freq[i][i][iagemax+4]=freq[i][i][iagemax+3]; /* Stores case 0 0 0 */
   } /* end selected combination of covariate j1 */                    }
   if(j==0){ /* We can estimate starting values from the occurences in each case */                    printf("%12.7f ln(%.0f/%.0f)= %f, OR=%f sd=%f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]),freq[i][k][iagemax+3]/freq[i][i][iagemax+3], sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]));
     printf("#Freqsummary\n");                    fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
     fprintf(ficlog,"\n");                    pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]);
     for(i=1,jk=1; i <=nlstate; i++){                  }else if( (log(j1-1)/log(2)+1 == jj -2 -nagesqr)  && Dummy[jj-2-nagesqr]==0){ /* We want only if the position, jj, in model corresponds to unique covariate equal to 1 in j1 combination */ 
       for(k=1; k <=(nlstate+ndeath); k++){                    pstart[jk]= log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]));
         if (k != i) {                    printf("jk=%d,i=%d,k=%d,p[%d]=%12.7f ln((%.0f/%.0f)/(%.0f/%.0f))= %f, OR=%f sd=%f \n",jk,i,k,jk,p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3],freq[i][k][iagemax+4],freq[i][i][iagemax+4], log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])),(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]), sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]+1/freq[i][k][iagemax+4]+1/freq[i][i][iagemax+4]));
           printf("%d%d ",i,k);                  }else if(jj==2 || nagesqr==1){ /* age or age*age parameter */
           fprintf(ficlog,"%d%d ",i,k);                    ;
           for(jj=1; jj <=ncovmodel; jj++){                  }else{ /* Other cases, like quantitative fixed or varying covariates */
             if(jj==1){                    ;
               printf("%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));                  }
               fprintf(ficlog,"%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));                  /* printf("%12.7f )", param[i][jj][k]); */
                   /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */
                   jk++; 
                 } /* end jj */
                 printf("\n");
                 fprintf(ficlog,"\n");
               } /* end k!= i */
             } /* end k */
           } /* end i, jk */
         } /* end j !=0 */
       } /* end selected combination of covariate j1 */
       if(j==0){ /* We can estimate starting values from the occurences in each case */
         printf("#Freqsummary: Starting values for the constants:\n");
         fprintf(ficlog,"\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);
               for(jj=1; jj <=ncovmodel; jj++){
                 if(jj==1){
                   printf("%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
                   fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]));
                 }
                 /* printf("%12.7f )", param[i][jj][k]); */
                 /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */
                 jk++; 
             }              }
             /* printf("%12.7f )", param[i][jj][k]); */              printf("\n");
             /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */              fprintf(ficlog,"\n");
             jk++;   
           }            }
           printf("\n");  
           fprintf(ficlog,"\n");  
         }          }
       }        }
     }        printf("#Freqsummary\n");
     printf("#Freqsummary\n");        fprintf(ficlog,"\n");
     fprintf(ficlog,"\n");        for(jk=-1; jk <=nlstate+ndeath; jk++){
     for(jk=-1; jk <=nlstate+ndeath; jk++){          for(m=-1; m <=nlstate+ndeath; m++){
       for(m=-1; m <=nlstate+ndeath; m++){            /* param[i]|j][k]= freq[jk][m][iagemax+3] */
         /* param[i]|j][k]= freq[jk][m][iagemax+3] */  
           printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);            printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
           fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);            fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
         /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */            /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */
         /*   printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */            /*   printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
         /*   fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */            /*   fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
         /* } */            /* } */
       }          }
     } /* end loop jk */        } /* end loop jk */
     printf("\n");        
     fprintf(ficlog,"\n");        printf("\n");
   } /* if j=0 */        fprintf(ficlog,"\n");
       } /* end j=0 */
   } /* end j */    } /* end j */
   dateintmean=dateintsum/k2cpt;     dateintmean=dateintsum/k2cpt; 
       
Line 4594  Title=%s <br>Datafile=%s Firstpass=%d La Line 4637  Title=%s <br>Datafile=%s Firstpass=%d La
   fclose(ficresphtmfr);    fclose(ficresphtmfr);
   free_vector(meanq,1,nqfveff);    free_vector(meanq,1,nqfveff);
   free_matrix(meanqt,1,lastpass,1,nqtveff);    free_matrix(meanqt,1,lastpass,1,nqtveff);
   free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+3+AGEMARGE);    free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+4+AGEMARGE);
   free_vector(pospropt,1,nlstate);    free_vector(pospropt,1,nlstate);
   free_vector(posprop,1,nlstate);    free_vector(posprop,1,nlstate);
   free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+3+AGEMARGE);    free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+4+AGEMARGE);
   free_vector(pp,1,nlstate);    free_vector(pp,1,nlstate);
   /* End of freqsummary */    /* End of freqsummary */
 }  }
Line 4624  void prevalence(double ***probs, double Line 4667  void prevalence(double ***probs, double
   iagemin= (int) agemin;    iagemin= (int) agemin;
   iagemax= (int) agemax;    iagemax= (int) agemax;
   /*pp=vector(1,nlstate);*/    /*pp=vector(1,nlstate);*/
   prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE);     prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); 
   /*  freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/    /*  freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/
   j1=0;    j1=0;
       
Line 4634  void prevalence(double ***probs, double Line 4677  void prevalence(double ***probs, double
   first=1;    first=1;
   for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */    for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */
     for (i=1; i<=nlstate; i++)        for (i=1; i<=nlstate; i++)  
       for(iage=iagemin-AGEMARGE; iage <= iagemax+3+AGEMARGE; iage++)        for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++)
         prop[i][iage]=0.0;          prop[i][iage]=0.0;
     printf("Prevalence combination of varying and fixed dummies %d\n",j1);      printf("Prevalence combination of varying and fixed dummies %d\n",j1);
     /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */      /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */
Line 4665  void prevalence(double ***probs, double Line 4708  void prevalence(double ***probs, double
             if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */              if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */
               if(agev[m][i]==0) agev[m][i]=iagemax+1;                if(agev[m][i]==0) agev[m][i]=iagemax+1;
               if(agev[m][i]==1) agev[m][i]=iagemax+2;                if(agev[m][i]==1) agev[m][i]=iagemax+2;
               if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+3+AGEMARGE){                if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+4+AGEMARGE){
                 printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d  m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m);                   printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d  m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); 
                 exit(1);                  exit(1);
               }                }
Line 4702  void prevalence(double ***probs, double Line 4745  void prevalence(double ***probs, double
       
   /*  free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/    /*  free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/
   /*free_vector(pp,1,nlstate);*/    /*free_vector(pp,1,nlstate);*/
   free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+3+AGEMARGE);    free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+4+AGEMARGE);
 }  /* End of prevalence */  }  /* End of prevalence */
   
 /************* Waves Concatenation ***************/  /************* Waves Concatenation ***************/
Line 9638  int main(int argc, char *argv[]) Line 9681  int main(int argc, char *argv[])
   double **prlim;    double **prlim;
   double **bprlim;    double **bprlim;
   double ***param; /* Matrix of parameters */    double ***param; /* Matrix of parameters */
   double  *p;    double ***paramstart; /* Matrix of starting parameter values */
     double  *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */
   double **matcov; /* Matrix of covariance */    double **matcov; /* Matrix of covariance */
   double **hess; /* Hessian matrix */    double **hess; /* Hessian matrix */
   double ***delti3; /* Scale */    double ***delti3; /* Scale */
Line 9989  int main(int argc, char *argv[]) Line 10033  int main(int argc, char *argv[])
     ungetc(c,ficpar);      ungetc(c,ficpar);
           
     param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);      param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);
       paramstart= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel);
     for(i=1; i <=nlstate; i++){      for(i=1; i <=nlstate; i++){
       j=0;        j=0;
       for(jj=1; jj <=nlstate+ndeath; jj++){        for(jj=1; jj <=nlstate+ndeath; jj++){
Line 10025  run imach with mle=-1 to get a correct t Line 10070  run imach with mle=-1 to get a correct t
     }        }  
     fflush(ficlog);      fflush(ficlog);
           
     /* Reads scales values */      /* Reads parameters values */
     p=param[1][1];      p=param[1][1];
       pstart=paramstart[1][1];
           
     /* Reads comments: lines beginning with '#' */      /* Reads comments: lines beginning with '#' */
     while((c=getc(ficpar))=='#' && c!= EOF){      while((c=getc(ficpar))=='#' && c!= EOF){
Line 10472  Title=%s <br>Datafile=%s Firstpass=%d La Line 10518  Title=%s <br>Datafile=%s Firstpass=%d La
   /* Calculates basic frequencies. Computes observed prevalence at single age     /* Calculates basic frequencies. Computes observed prevalence at single age 
                  and for any valid combination of covariates                   and for any valid combination of covariates
      and prints on file fileres'p'. */       and prints on file fileres'p'. */
   freqsummary(fileres, p, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \    freqsummary(fileres, p, pstart, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \
               firstpass, lastpass,  stepm,  weightopt, model);                firstpass, lastpass,  stepm,  weightopt, model);
   
   fprintf(fichtm,"\n");    fprintf(fichtm,"\n");

Removed from v.1.250  
changed lines
  Added in v.1.251


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