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

version 1.249, 2016/09/07 17:14:18 version 1.250, 2016/09/08 16:07:27
Line 1 Line 1
 /* $Id$  /* $Id$
   $State$    $State$
   $Log$    $Log$
     Revision 1.250  2016/09/08 16:07:27  brouard
     Summary: continue
   
   Revision 1.249  2016/09/07 17:14:18  brouard    Revision 1.249  2016/09/07 17:14:18  brouard
   Summary: Starting values from frequencies    Summary: Starting values from frequencies
   
Line 4183  void pstamp(FILE *fichier) Line 4186  void pstamp(FILE *fichier)
 }  }
   
 /************ Frequencies ********************/  /************ Frequencies ********************/
 void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \  void  freqsummary(char fileres[], double p[], 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 */  {  /* Some frequencies as well as proposing some starting values */
       
   int i, m, jk, j1, bool, z1,j, k, iv;    int i, m, jk, j1, bool, z1,j, k, iv, jj=0;
   int iind=0, iage=0;    int iind=0, iage=0;
   int mi; /* Effective wave */    int mi; /* Effective wave */
   int first;    int first;
Line 4298  Title=%s <br>Datafile=%s Firstpass=%d La Line 4301  Title=%s <br>Datafile=%s Firstpass=%d La
           /* for (z1=1; z1<= nqfveff; z1++) {   */            /* for (z1=1; z1<= nqfveff; z1++) {   */
           /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */            /*   meanq[z1]+=coqvar[Tvar[z1]][iind];  /\* Computes mean of quantitative with selected filter *\/ */
           /* } */            /* } */
           for (z1=1; z1<=cptcoveff; z1++) {              for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */
             /* if(Tvaraff[z1] ==-20){ */              /* if(Tvaraff[z1] ==-20){ */
             /*   /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */              /*   /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */
             /* }else  if(Tvaraff[z1] ==-10){ */              /* }else  if(Tvaraff[z1] ==-10){ */
             /*   /\* sumnew+=coqvar[z1][iind]; *\/ */              /*   /\* sumnew+=coqvar[z1][iind]; *\/ */
             /* }else  */              /* }else  */
             if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){              if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */
               /* Tests if this individual iind responded to j1 (V4=1 V3=0) */                /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */
               bool=0;                bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */
               /* 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",                 /* 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", 
                  bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),                   bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),
                  j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/                   j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/
Line 4325  Title=%s <br>Datafile=%s Firstpass=%d La Line 4328  Title=%s <br>Datafile=%s Firstpass=%d La
             for (z1=1; z1<=cptcoveff; z1++) {              for (z1=1; z1<=cptcoveff; z1++) {
               if( Fixed[Tmodelind[z1]]==1){                if( Fixed[Tmodelind[z1]]==1){
                 iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;                  iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;
                 if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */                  if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's 
                                                                                     value is -1, we don't select. It differs from the 
                                                                                     constant and age model which counts them. */
                   bool=0; /* not selected */                    bool=0; /* not selected */
               }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */                }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */
                 if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {                  if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {
Line 4354  Title=%s <br>Datafile=%s Firstpass=%d La Line 4359  Title=%s <br>Datafile=%s Firstpass=%d La
                 if(s[m][iind]==-1)                  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.));                    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 */                  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]][(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 */                  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 */
               }                }
Line 4363  Title=%s <br>Datafile=%s Firstpass=%d La Line 4370  Title=%s <br>Datafile=%s Firstpass=%d La
               k2cpt++;                k2cpt++;
               /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */                /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */
             }              }
           } /* end bool 2 */            }else{
               bool=1;
             }/* end bool 2 */
         } /* end m */          } /* end m */
       } /* end bool */        } /* end bool */
     } /* end iind = 1 to imx */      } /* end iind = 1 to imx */
Line 4540  Title=%s <br>Datafile=%s Firstpass=%d La Line 4549  Title=%s <br>Datafile=%s Firstpass=%d La
     fprintf(ficresphtmfr,"</table>\n");      fprintf(ficresphtmfr,"</table>\n");
   } /* end selected combination of covariate j1 */    } /* end selected combination of covariate j1 */
   if(j==0){ /* We can estimate starting values from the occurences in each case */    if(j==0){ /* We can estimate starting values from the occurences in each case */
       printf("#Freqsummary\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(%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++; 
             }
             printf("\n");
             fprintf(ficlog,"\n");
           }
         }
       }
       printf("#Freqsummary\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] */
         if(freq[jk][m][iage] !=0 ) { /* minimizing output */            printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
           if(first==1){            fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]);
             printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);          /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */
           }          /*   printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
           fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]);          /*   fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */
         }          /* } */
       }        }
     } /* end loop jk */      } /* end loop jk */
   }      printf("\n");
       fprintf(ficlog,"\n");
     } /* if j=0 */
   } /* end j */    } /* end j */
   dateintmean=dateintsum/k2cpt;     dateintmean=dateintsum/k2cpt; 
       
Line 10438  Title=%s <br>Datafile=%s Firstpass=%d La Line 10472  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, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \    freqsummary(fileres, p, 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.249  
changed lines
  Added in v.1.250


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