Diff for /imach/src/imach.c between versions 1.6 and 1.7

version 1.6, 2001/05/02 17:47:10 version 1.7, 2001/05/02 17:50:24
Line 69 Line 69
   
 int nvar;  int nvar;
 static int cptcov;  static int cptcov;
 int cptcovn, cptcovage=0;  int cptcovn, cptcovage=0, cptcoveff=0;
 int npar=NPARMAX;  int npar=NPARMAX;
 int nlstate=2; /* Number of live states */  int nlstate=2; /* Number of live states */
 int ndeath=1; /* Number of dead states */  int ndeath=1; /* Number of dead states */
Line 131  double **pmmij; Line 131  double **pmmij;
 double *weight;  double *weight;
 int **s; /* Status */  int **s; /* Status */
 double *agedc, **covar, idx;  double *agedc, **covar, idx;
 int **nbcode, *Tcode, *Tvar, **codtab;  int **nbcode, *Tcode, *Tvar, **codtab, **Tvard, *Tprod, cptcovprod, *Tvaraff;
   
 double ftol=FTOL; /* Tolerance for computing Max Likelihood */  double ftol=FTOL; /* Tolerance for computing Max Likelihood */
 double ftolhess; /* Tolerance for computing hessian */  double ftolhess; /* Tolerance for computing hessian */
   
   /**************** split *************************/
 static  int split( char *path, char *dirc, char *name )  static  int split( char *path, char *dirc, char *name )
 {  {
    char *s;                             /* pointer */     char *s;                             /* pointer */
Line 657  double **prevalim(double **prlim, int nl Line 657  double **prevalim(double **prlim, int nl
      cov[2]=agefin;       cov[2]=agefin;
     
       for (k=1; k<=cptcovn;k++) {        for (k=1; k<=cptcovn;k++) {
         cov[2+k]=nbcode[Tvar[k]][codtab[ij][k]];          cov[2+k]=nbcode[Tvar[k]][codtab[ij][Tvar[k]]];
           /*printf("ij=%d Tvar[k]=%d nbcode=%d cov=%lf\n",ij, Tvar[k],nbcode[Tvar[k]][codtab[ij][Tvar[k]]],cov[2+k]);*/
 /*printf("Tcode[ij]=%d nbcode=%d\n",Tcode[ij],nbcode[k][Tcode[ij]]);*/  
       }        }
       for (k=1; k<=cptcovage;k++)        for (k=1; k<=cptcovage;k++)
         cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2];          cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2];
            for (k=1; k<=cptcovprod;k++)
           cov[2+Tprod[k]]=nbcode[Tvard[k][1]][codtab[ij][Tvard[k][1]]]*nbcode[Tvard[k][2]][codtab[ij][Tvard[k][2]]];
   
         /*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/
   
         /*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/
   
     out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm);      out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm);
   
     savm=oldm;      savm=oldm;
Line 798  double ***hpxij(double ***po, int nhstep Line 803  double ***hpxij(double ***po, int nhstep
       /* Covariates have to be included here again */        /* Covariates have to be included here again */
       cov[1]=1.;        cov[1]=1.;
       cov[2]=age+((h-1)*hstepm + (d-1))*stepm/YEARM;        cov[2]=age+((h-1)*hstepm + (d-1))*stepm/YEARM;
       if (cptcovn>0){        for (k=1; k<=cptcovn;k++) cov[2+k]=nbcode[Tvar[k]][codtab[ij][Tvar[k]]];
       for (k=1; k<=cptcovn;k++) cov[2+k]=nbcode[Tvar[k]][codtab[ij][k]];  for (k=1; k<=cptcovage;k++)
     }          cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2];
      for (k=1; k<=cptcovprod;k++)
           cov[2+Tprod[k]]=nbcode[Tvard[k][1]][codtab[ij][Tvard[k][1]]]*nbcode[Tvard[k][2]][codtab[ij][Tvard[k][2]]];
   
   
       /*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/        /*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/
       /*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/        /*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/
       out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath,        out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath,
Line 1160  void  freqsummary(char fileres[], int ag Line 1169  void  freqsummary(char fileres[], int ag
   freq= ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,agemin,agemax+3);    freq= ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,agemin,agemax+3);
   j1=0;    j1=0;
   
   j=cptcovn;    j=cptcoveff;
   if (cptcovn<1) {j=1;ncodemax[1]=1;}    if (cptcovn<1) {j=1;ncodemax[1]=1;}
   
   for(k1=1; k1<=j;k1++){    for(k1=1; k1<=j;k1++){
Line 1175  void  freqsummary(char fileres[], int ag Line 1184  void  freqsummary(char fileres[], int ag
        for (i=1; i<=imx; i++) {         for (i=1; i<=imx; i++) {
          bool=1;           bool=1;
          if  (cptcovn>0) {           if  (cptcovn>0) {
            for (z1=1; z1<=cptcovn; z1++)             for (z1=1; z1<=cptcoveff; z1++)
              if (covar[Tvar[z1]][i]!= nbcode[Tvar[z1]][codtab[j1][z1]]) bool=0;               if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtab[j1][z1]]) bool=0;
          }           }
           if (bool==1) {            if (bool==1) {
            for(m=firstpass; m<=lastpass-1; m++){             for(m=firstpass; m<=lastpass-1; m++){
Line 1188  void  freqsummary(char fileres[], int ag Line 1197  void  freqsummary(char fileres[], int ag
          }           }
        }         }
         if  (cptcovn>0) {          if  (cptcovn>0) {
          fprintf(ficresp, "\n#Variable");           fprintf(ficresp, "\n#********** Variable ");
          for (z1=1; z1<=cptcovn; z1++) fprintf(ficresp, " V%d=%d",Tvar[z1],nbcode[Tvar[z1]][codtab[j1][z1]]);           for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]);
        }         }
        fprintf(ficresp, "\n#");         fprintf(ficresp, "**********\n#");
        for(i=1; i<=nlstate;i++)         for(i=1; i<=nlstate;i++)
          fprintf(ficresp, " Age Prev(%d) N(%d) N",i,i);           fprintf(ficresp, " Age Prev(%d) N(%d) N",i,i);
        fprintf(ficresp, "\n");         fprintf(ficresp, "\n");
Line 1318  float sum=0.; Line 1327  float sum=0.;
 /*********** Tricode ****************************/  /*********** Tricode ****************************/
 void tricode(int *Tvar, int **nbcode, int imx)  void tricode(int *Tvar, int **nbcode, int imx)
 {  {
   int Ndum[80],ij=1, k, j, i, Ntvar[20];    int Ndum[20],ij=1, k, j, i;
   int cptcode=0;    int cptcode=0;
   for (k=0; k<79; k++) Ndum[k]=0;    cptcoveff=0;
    
     for (k=0; k<19; k++) Ndum[k]=0;
   for (k=1; k<=7; k++) ncodemax[k]=0;    for (k=1; k<=7; k++) ncodemax[k]=0;
   
   for (j=1; j<=cptcovn; j++) {    for (j=1; j<=(cptcovn+2*cptcovprod); j++) {
     for (i=1; i<=imx; i++) {      for (i=1; i<=imx; i++) {
       ij=(int)(covar[Tvar[j]][i]);        ij=(int)(covar[Tvar[j]][i]);
       Ndum[ij]++;        Ndum[ij]++;
       if (ij > cptcode) cptcode=ij;        if (ij > cptcode) cptcode=ij;
     }      }
   
     /*printf("cptcode=%d cptcovn=%d ",cptcode,cptcovn);*/      /*printf("cptcode=%d cptcovn=%d ",cptcode,cptcovn);*/
     for (i=0; i<=cptcode; i++) {      for (i=0; i<=cptcode; i++) {
       if(Ndum[i]!=0) ncodemax[j]++;        if(Ndum[i]!=0) ncodemax[j]++;
     }      }
    
     ij=1;      ij=1;
   
     for (i=1; i<=ncodemax[j]; i++) {      for (i=1; i<=ncodemax[j]; i++) {
       for (k=0; k<=79; k++) {        for (k=0; k<=19; k++) {
         if (Ndum[k] != 0) {          if (Ndum[k] != 0) {
           nbcode[Tvar[j]][ij]=k;            nbcode[Tvar[j]][ij]=k;
             /*   printf("ij=%d ",nbcode[Tvar[2]][1]);*/
           ij++;            ij++;
         }          }
         if (ij > ncodemax[j]) break;          if (ij > ncodemax[j]) break;
       }          }  
     }      }
   }      }  
     for (i=1; i<=10; i++) {
         ij=Tvar[i];
         Ndum[ij]++;
       }
    ij=1;
    for (i=1; i<=cptcovn; i++) {
      if((Ndum[i]!=0) && (i<=ncov)){
        Tvaraff[i]=ij;
      ij++;
      }
    }
    
    for (j=1; j<=(cptcovn+2*cptcovprod); j++) {
      if ((Tvar[j]>= cptcoveff) && (Tvar[j] <=ncov)) cptcoveff=Tvar[j];
      /*printf("j=%d %d\n",j,Tvar[j]);*/
    }
    
    /* printf("cptcoveff=%d Tvaraff=%d %d\n",cptcoveff, Tvaraff[1],Tvaraff[2]);
       scanf("%d",i);*/
 }  }
   
 /*********** Health Expectancies ****************/  /*********** Health Expectancies ****************/
Line 1620  int main() Line 1651  int main()
   int sdeb, sfin; /* Status at beginning and end */    int sdeb, sfin; /* Status at beginning and end */
   int c,  h , cpt,l;    int c,  h , cpt,l;
   int ju,jl, mi;    int ju,jl, mi;
   int i1,j1, k1,k2,k3,jk,aa,bb, stepsize;    int i1,j1, k1,k2,k3,jk,aa,bb, stepsize, ij;
   int jnais,jdc,jint4,jint1,jint2,jint3,**outcome,**adl,*tab;    int jnais,jdc,jint4,jint1,jint2,jint3,**outcome,**adl,*tab;
     
   int hstepm, nhstepm;    int hstepm, nhstepm;
Line 1858  split(pathtot, path,optionfile); Line 1889  split(pathtot, path,optionfile);
   imx=i-1; /* Number of individuals */    imx=i-1; /* Number of individuals */
   
   /* Calculation of the number of parameter from char model*/    /* Calculation of the number of parameter from char model*/
   Tvar=ivector(1,15);        Tvar=ivector(1,15);
     Tprod=ivector(1,15);
     Tvaraff=ivector(1,15);
     Tvard=imatrix(1,15,1,2);
   Tage=ivector(1,15);          Tage=ivector(1,15);      
         
   if (strlen(model) >1){    if (strlen(model) >1){
     j=0, j1=0;      j=0, j1=0, k1=1, k2=1;
     j=nbocc(model,'+');      j=nbocc(model,'+');
     j1=nbocc(model,'*');      j1=nbocc(model,'*');
     cptcovn=j+1;      cptcovn=j+1;
       cptcovprod=j1;
         
     strcpy(modelsav,model);      strcpy(modelsav,model);
     if (j==0) {     if (j==0) {
       if (j1==0){        if (j1==0){
        cutv(stra,strb,modelsav,'V');          cutv(stra,strb,modelsav,'V');
        Tvar[1]=atoi(strb);          Tvar[1]=atoi(strb);
       }        }
       else if (j1==1) {        else if (j1==1) {
        cutv(stra,strb,modelsav,'*');          cutv(stra,strb,modelsav,'*');
        /*      printf("stra=%s strb=%s modelsav=%s ",stra,strb,modelsav);*/          Tage[1]=1; cptcovage++;
        Tage[1]=1; cptcovage++;          if (strcmp(stra,"age")==0) {
        if (strcmp(stra,"age")==0) {            cptcovprod--;
          cutv(strd,strc,strb,'V');            cutv(strd,strc,strb,'V');
          Tvar[1]=atoi(strc);            Tvar[1]=atoi(strc);
        }          }
        else if (strcmp(strb,"age")==0) {          else if (strcmp(strb,"age")==0) {
          cutv(strd,strc,stra,'V');            cptcovprod--;
          Tvar[1]=atoi(strc);            cutv(strd,strc,stra,'V');
        }            Tvar[1]=atoi(strc);
        else {printf("Error"); exit(0);}          }
           else {
             cutv(strd,strc,strb,'V');
             cutv(stre,strd,stra,'V');
             Tvar[1]=ncov+1;
             for (k=1; k<=lastobs;k++)
                 covar[ncov+1][k]=covar[atoi(strc)][k]*covar[atoi(strd)][k];
           }
           /*printf("%s %s %s\n", stra,strb,modelsav);
   printf("%d ",Tvar[1]);
   scanf("%d",i);*/
       }        }
     }      }
     else {     else {
       for(i=j; i>=1;i--){        for(i=j; i>=1;i--){
         cutv(stra,strb,modelsav,'+');          cutv(stra,strb,modelsav,'+');
         /*printf("%s %s %s\n", stra,strb,modelsav);*/          /*printf("%s %s %s\n", stra,strb,modelsav);
             scanf("%d",i);*/
         if (strchr(strb,'*')) {          if (strchr(strb,'*')) {
           cutv(strd,strc,strb,'*');            cutv(strd,strc,strb,'*');
           if (strcmp(strc,"age")==0) {            if (strcmp(strc,"age")==0) {
               cptcovprod--;
             cutv(strb,stre,strd,'V');              cutv(strb,stre,strd,'V');
             Tvar[i+1]=atoi(stre);              Tvar[i+1]=atoi(stre);
             cptcovage++;              cptcovage++;
Line 1902  split(pathtot, path,optionfile); Line 1949  split(pathtot, path,optionfile);
             printf("stre=%s ", stre);              printf("stre=%s ", stre);
           }            }
           else if (strcmp(strd,"age")==0) {            else if (strcmp(strd,"age")==0) {
               cptcovprod--;
             cutv(strb,stre,strc,'V');              cutv(strb,stre,strc,'V');
             Tvar[i+1]=atoi(stre);              Tvar[i+1]=atoi(stre);
             cptcovage++;              cptcovage++;
Line 1909  split(pathtot, path,optionfile); Line 1957  split(pathtot, path,optionfile);
           }            }
           else {            else {
             cutv(strb,stre,strc,'V');              cutv(strb,stre,strc,'V');
             Tvar[i+1]=ncov+1;              Tvar[i+1]=ncov+k1;
             cutv(strb,strc,strd,'V');              cutv(strb,strc,strd,'V');
               Tprod[k1]=i+1;
               Tvard[k1][1]=atoi(strc);
               Tvard[k1][2]=atoi(stre);
               Tvar[cptcovn+k2]=Tvard[k1][1];
               Tvar[cptcovn+k2+1]=Tvard[k1][2];
             for (k=1; k<=lastobs;k++)              for (k=1; k<=lastobs;k++)
               covar[ncov+1][k]=covar[atoi(stre)][k]*covar[atoi(strc)][k];                covar[ncov+k1][k]=covar[atoi(stre)][k]*covar[atoi(strc)][k];
               k1++;
               k2=k2+2;
           }            }
         }          }
         else {          else {
           cutv(strd,strc,strb,'V');            cutv(strd,strc,strb,'V');
           /* printf("%s %s %s", strd,strc,strb);*/            /* printf("%s %s %s", strd,strc,strb);*/
             Tvar[i+1]=atoi(strc);
         Tvar[i+1]=atoi(strc);  
         }          }
         strcpy(modelsav,stra);            strcpy(modelsav,stra);  
       }        }
Line 1927  split(pathtot, path,optionfile); Line 1981  split(pathtot, path,optionfile);
       Tvar[1]=atoi(strc);        Tvar[1]=atoi(strc);
     }      }
   }    }
     /* for (i=1; i<=5; i++)
   /* printf("tvar=%d %d cptcovage=%d %d",Tvar[1],Tvar[2],cptcovage,Tage[1]);       printf("i=%d %d ",i,Tvar[i]);*/
      scanf("%d ",i);*/    /* printf("tvar=%d %d cptcovage=%d %d",Tvar[1],Tvar[2],cptcovage,Tage[1]);*/
    /*printf("cptcovprod=%d ", cptcovprod);*/
     /*  scanf("%d ",i);*/
     fclose(fic);      fclose(fic);
   
    if(mle==1){      /*  if(mle==1){*/
     if (weightopt != 1) { /* Maximisation without weights*/      if (weightopt != 1) { /* Maximisation without weights*/
       for(i=1;i<=n;i++) weight[i]=1.0;        for(i=1;i<=n;i++) weight[i]=1.0;
     }      }
Line 2007  printf("Total number of individuals= %d, Line 2063  printf("Total number of individuals= %d,
   
   
       Tcode=ivector(1,100);        Tcode=ivector(1,100);
    nbcode=imatrix(1,nvar,1,8);          nbcode=imatrix(1,nvar,1,8);
    ncodemax[1]=1;        ncodemax[1]=1;
    if (cptcovn > 0) tricode(Tvar,nbcode,imx);        if (cptcovn > 0) tricode(Tvar,nbcode,imx);
         
    codtab=imatrix(1,100,1,10);     codtab=imatrix(1,100,1,10);
    h=0;     h=0;
    m=pow(2,cptcovn);     m=pow(2,cptcoveff);
     
    for(k=1;k<=cptcovn; k++){     for(k=1;k<=cptcoveff; k++){
      for(i=1; i <=(m/pow(2,k));i++){       for(i=1; i <=(m/pow(2,k));i++){
        for(j=1; j <= ncodemax[k]; j++){         for(j=1; j <= ncodemax[k]; j++){
          for(cpt=1; cpt <=(m/pow(2,cptcovn+1-k)); cpt++){           for(cpt=1; cpt <=(m/pow(2,cptcoveff+1-k)); cpt++){
            h++;             h++;
            if (h>m) h=1;codtab[h][k]=j;             if (h>m) h=1;codtab[h][k]=j;
          }           }
Line 2026  printf("Total number of individuals= %d, Line 2082  printf("Total number of individuals= %d,
      }       }
    }     }
   
    /* for(i=1; i <=m ;i++){  
      /*for(i=1; i <=m ;i++){
      for(k=1; k <=cptcovn; k++){       for(k=1; k <=cptcovn; k++){
        printf("i=%d k=%d %d ",i,k,codtab[i][k]);         printf("i=%d k=%d %d %d",i,k,codtab[i][k], cptcoveff);
      }       }
      printf("\n");       printf("\n");
    }     }
Line 2036  printf("Total number of individuals= %d, Line 2093  printf("Total number of individuals= %d,
         
    /* Calculates basic frequencies. Computes observed prevalence at single age     /* Calculates basic frequencies. Computes observed prevalence at single age
        and prints on file fileres'p'. */         and prints on file fileres'p'. */
    freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvar,nbcode, ncodemax);    freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvar,nbcode, ncodemax);
   
     pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */      pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
     oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */      oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
Line 2047  printf("Total number of individuals= %d, Line 2104  printf("Total number of individuals= %d,
     /* For Powell, parameters are in a vector p[] starting at p[1]      /* For Powell, parameters are in a vector p[] starting at p[1]
        so we point p on param[1][1] so that p[1] maps on param[1][1][1] */         so we point p on param[1][1] so that p[1] maps on param[1][1][1] */
     p=param[1][1]; /* *(*(*(param +1)+1)+0) */      p=param[1][1]; /* *(*(*(param +1)+1)+0) */
      
     mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func);  
   
       if(mle==1){
       mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func);
       }
         
     /*--------- results files --------------*/      /*--------- results files --------------*/
     fprintf(ficres,"\ntitle=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncov=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d\nmodel=%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncov, nlstate, ndeath, maxwav, mle,weightopt,model);      fprintf(ficres,"\ntitle=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncov=%d nlstate=%d ndeath=%d maxwav=%d mle=%d weight=%d\nmodel=%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncov, nlstate, ndeath, maxwav, mle,weightopt,model);
Line 2073  printf("Total number of individuals= %d, Line 2131  printf("Total number of individuals= %d,
          }           }
      }       }
    }     }
    if(mle==1){
     /* Computing hessian and covariance matrix */      /* Computing hessian and covariance matrix */
     ftolhess=ftol; /* Usually correct */      ftolhess=ftol; /* Usually correct */
     hesscov(matcov, p, npar, delti, ftolhess, func);      hesscov(matcov, p, npar, delti, ftolhess, func);
    }
     fprintf(ficres,"# Scales\n");      fprintf(ficres,"# Scales\n");
     printf("# Scales\n");      printf("# Scales\n");
      for(i=1,jk=1; i <=nlstate; i++){       for(i=1,jk=1; i <=nlstate; i++){
Line 2131  printf("Total number of individuals= %d, Line 2190  printf("Total number of individuals= %d,
   
     fprintf(ficres,"# agemin agemax for life expectancy, bage fage (if mle==0 ie no data nor Max likelihood).\n");      fprintf(ficres,"# agemin agemax for life expectancy, bage fage (if mle==0 ie no data nor Max likelihood).\n");
     fprintf(ficres,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f\n",agemin,agemax,bage,fage);      fprintf(ficres,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f\n",agemin,agemax,bage,fage);
   
      
 /*------------ gnuplot -------------*/  /*------------ gnuplot -------------*/
 chdir(pathcd);  chdir(pathcd);
   if((ficgp=fopen("graph.plt","w"))==NULL) {    if((ficgp=fopen("graph.plt","w"))==NULL) {
Line 2139  chdir(pathcd); Line 2200  chdir(pathcd);
 #ifdef windows  #ifdef windows
   fprintf(ficgp,"cd \"%s\" \n",pathc);    fprintf(ficgp,"cd \"%s\" \n",pathc);
 #endif  #endif
 m=pow(2,cptcovn);  m=pow(2,cptcoveff);
     
  /* 1eme*/   /* 1eme*/
   for (cpt=1; cpt<= nlstate ; cpt ++) {    for (cpt=1; cpt<= nlstate ; cpt ++) {
Line 2260  fprintf(ficgp,"\nset out \"v%s%d%d.gif\" Line 2321  fprintf(ficgp,"\nset out \"v%s%d%d.gif\"
      for(k=1; k<=(nlstate+ndeath); k++) {       for(k=1; k<=(nlstate+ndeath); k++) {
        if (k != k2){         if (k != k2){
         fprintf(ficgp," exp(p%d+p%d*x",i,i+1);          fprintf(ficgp," exp(p%d+p%d*x",i,i+1);
   ij=1;
         for(j=3; j <=ncovmodel; j++)          for(j=3; j <=ncovmodel; j++) {
             if(((j-2)==Tage[ij]) &&(ij <=cptcovage)) {
               fprintf(ficgp,"+p%d*%d*x",i+j-1,nbcode[Tvar[j-2]][codtab[jk][Tvar[j-2]]]);
               ij++;
             }
             else
           fprintf(ficgp,"+p%d*%d",i+j-1,nbcode[Tvar[j-2]][codtab[jk][j-2]]);            fprintf(ficgp,"+p%d*%d",i+j-1,nbcode[Tvar[j-2]][codtab[jk][j-2]]);
         fprintf(ficgp,")/(1");          }
             fprintf(ficgp,")/(1");
                 
         for(k1=1; k1 <=nlstate; k1++){            for(k1=1; k1 <=nlstate; k1++){  
           fprintf(ficgp,"+exp(p%d+p%d*x",k3+(k1-1)*ncovmodel,k3+(k1-1)*ncovmodel+1);            fprintf(ficgp,"+exp(p%d+p%d*x",k3+(k1-1)*ncovmodel,k3+(k1-1)*ncovmodel+1);
           for(j=3; j <=ncovmodel; j++)  ij=1;
             for(j=3; j <=ncovmodel; j++){
             if(((j-2)==Tage[ij]) &&(ij <=cptcovage)) {
               fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2,nbcode[Tvar[j-2]][codtab[jk][Tvar[j-2]]]);
               ij++;
             }
             else
             fprintf(ficgp,"+p%d*%d",k3+(k1-1)*ncovmodel+1+j-2,nbcode[Tvar[j-2]][codtab[jk][j-2]]);              fprintf(ficgp,"+p%d*%d",k3+(k1-1)*ncovmodel+1+j-2,nbcode[Tvar[j-2]][codtab[jk][j-2]]);
             }
           fprintf(ficgp,")");            fprintf(ficgp,")");
         }          }
         fprintf(ficgp,") t \"p%d%d\" ", k2,k);          fprintf(ficgp,") t \"p%d%d\" ", k2,k);
Line 2297  chdir(path); Line 2371  chdir(path);
     /*free_matrix(covar,1,NCOVMAX,1,n);*/      /*free_matrix(covar,1,NCOVMAX,1,n);*/
     fclose(ficparo);      fclose(ficparo);
     fclose(ficres);      fclose(ficres);
    }      /*  }*/
         
    /*________fin mle=1_________*/     /*________fin mle=1_________*/
         
Line 2335  chdir(path); Line 2409  chdir(path);
   
  fprintf(fichtm," <li>Graphs</li>\n<p>");   fprintf(fichtm," <li>Graphs</li>\n<p>");
   
  m=cptcovn;   m=cptcoveff;
  if (cptcovn < 1) {m=1;ncodemax[1]=1;}   if (cptcovn < 1) {m=1;ncodemax[1]=1;}
   
  j1=0;   j1=0;
Line 2344  chdir(path); Line 2418  chdir(path);
        j1++;         j1++;
        if (cptcovn > 0) {         if (cptcovn > 0) {
          fprintf(fichtm,"<hr>************ Results for covariates");           fprintf(fichtm,"<hr>************ Results for covariates");
          for (cpt=1; cpt<=cptcovn;cpt++)           for (cpt=1; cpt<=cptcoveff;cpt++)
            fprintf(fichtm," V%d=%d ",Tvar[cpt],nbcode[Tvar[cpt]][codtab[j1][cpt]]);             fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtab[j1][cpt]]);
          fprintf(fichtm," ************\n<hr>");           fprintf(fichtm," ************\n<hr>");
        }         }
        fprintf(fichtm,"<br>- Probabilities: pe%s%d.gif<br>         fprintf(fichtm,"<br>- Probabilities: pe%s%d.gif<br>
Line 2394  fclose(fichtm); Line 2468  fclose(fichtm);
   agebase=agemin;    agebase=agemin;
   agelim=agemax;    agelim=agemax;
   ftolpl=1.e-10;    ftolpl=1.e-10;
   i1=cptcovn;    i1=cptcoveff;
   if (cptcovn < 1){i1=1;}    if (cptcovn < 1){i1=1;}
   
   for(cptcov=1;cptcov<=i1;cptcov++){    for(cptcov=1;cptcov<=i1;cptcov++){
Line 2402  fclose(fichtm); Line 2476  fclose(fichtm);
         k=k+1;          k=k+1;
         /*printf("cptcov=%d cptcod=%d codtab=%d nbcode=%d\n",cptcov, cptcod,Tcode[cptcode],codtab[cptcod][cptcov]);*/          /*printf("cptcov=%d cptcod=%d codtab=%d nbcode=%d\n",cptcov, cptcod,Tcode[cptcode],codtab[cptcod][cptcov]);*/
         fprintf(ficrespl,"\n#******");          fprintf(ficrespl,"\n#******");
         for(j=1;j<=cptcovn;j++)          for(j=1;j<=cptcoveff;j++)
           fprintf(ficrespl," V%d=%d ",Tvar[j],nbcode[Tvar[j]][codtab[k][j]]);            fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
         fprintf(ficrespl,"******\n");          fprintf(ficrespl,"******\n");
                 
         for (age=agebase; age<=agelim; age++){          for (age=agebase; age<=agelim; age++){
Line 2436  fclose(fichtm); Line 2510  fclose(fichtm);
     for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){      for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){
       k=k+1;        k=k+1;
         fprintf(ficrespij,"\n#****** ");          fprintf(ficrespij,"\n#****** ");
         for(j=1;j<=cptcovn;j++)          for(j=1;j<=cptcoveff;j++)
           fprintf(ficrespij,"V%d=%d ",Tvar[j],nbcode[Tvar[j]][codtab[k][j]]);            fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
         fprintf(ficrespij,"******\n");          fprintf(ficrespij,"******\n");
                 
         for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */          for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */
Line 2495  fclose(fichtm); Line 2569  fclose(fichtm);
     for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){      for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){
       k=k+1;        k=k+1;
       fprintf(ficrest,"\n#****** ");        fprintf(ficrest,"\n#****** ");
       for(j=1;j<=cptcovn;j++)        for(j=1;j<=cptcoveff;j++)
         fprintf(ficrest,"V%d=%d ",Tvar[j],nbcode[Tvar[j]][codtab[k][j]]);          fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
       fprintf(ficrest,"******\n");        fprintf(ficrest,"******\n");
   
       fprintf(ficreseij,"\n#****** ");        fprintf(ficreseij,"\n#****** ");
       for(j=1;j<=cptcovn;j++)        for(j=1;j<=cptcoveff;j++)
         fprintf(ficreseij,"V%d=%d ",j,nbcode[j][codtab[k][j]]);          fprintf(ficreseij,"V%d=%d ",j,nbcode[j][codtab[k][j]]);
       fprintf(ficreseij,"******\n");        fprintf(ficreseij,"******\n");
   
       fprintf(ficresvij,"\n#****** ");        fprintf(ficresvij,"\n#****** ");
       for(j=1;j<=cptcovn;j++)        for(j=1;j<=cptcoveff;j++)
         fprintf(ficresvij,"V%d=%d ",j,nbcode[j][codtab[k][j]]);          fprintf(ficresvij,"V%d=%d ",j,nbcode[j][codtab[k][j]]);
       fprintf(ficresvij,"******\n");        fprintf(ficresvij,"******\n");
   
Line 2566  strcpy(fileresvpl,"vpl"); Line 2640  strcpy(fileresvpl,"vpl");
    for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){     for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){
      k=k+1;       k=k+1;
      fprintf(ficresvpl,"\n#****** ");       fprintf(ficresvpl,"\n#****** ");
      for(j=1;j<=cptcovn;j++)       for(j=1;j<=cptcoveff;j++)
        fprintf(ficresvpl,"V%d=%d ",Tvar[j],nbcode[Tvar[j]][codtab[k][j]]);         fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
      fprintf(ficresvpl,"******\n");       fprintf(ficresvpl,"******\n");
             
      varpl=matrix(1,nlstate,(int) bage, (int) fage);       varpl=matrix(1,nlstate,(int) bage, (int) fage);

Removed from v.1.6  
changed lines
  Added in v.1.7


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