From ca57fe26aaeaf47acffa0a5eeafbebdc33e71052 Mon Sep 17 00:00:00 2001 From: "N. Brouard" Date: Sun, 26 Jan 2014 09:45:38 +0000 Subject: [PATCH] Summary: Version 0.98nR (to be improved, but gives same optimization results as 0.98k. Nice, promising * imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested... (Module): Version 0.98nR Running ok, but output format still only works for three covariates. --- src/imach.c | 64 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/src/imach.c b/src/imach.c index 532bb9f..afb75b9 100644 --- a/src/imach.c +++ b/src/imach.c @@ -1,6 +1,11 @@ /* $Id$ $State$ $Log$ + Revision 1.142 2014/01/26 03:57:36 brouard + Summary: gnuplot changed plot w l 1 has to be changed to plot w l lt 2 + + * imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested... + Revision 1.141 2014/01/26 02:42:01 brouard * imach.c (Module): Trying to merge old staffs together while being at Tokyo. Not tested... @@ -443,7 +448,7 @@ extern int errno; /* $Id$ */ /* $State$ */ -char version[]="Imach version 0.98nR, January 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)"; +char version[]="Imach version 0.98nR2, January 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)"; char fullversion[]="$Revision$ $Date$"; char strstart[80]; char optionfilext[10], optionfilefiname[FILENAMELENGTH]; @@ -577,8 +582,8 @@ int **codtab; /**< codtab=imatrix(1,100,1,10); */ int **Tvard, *Tprod, cptcovprod, *Tvaraff; double *lsurv, *lpop, *tpop; -double ftol=FTOL; /* Tolerance for computing Max Likelihood */ -double ftolhess; /* Tolerance for computing hessian */ +double ftol=FTOL; /**< Tolerance for computing Max Likelihood */ +double ftolhess; /**< Tolerance for computing hessian */ /**************** split *************************/ static int split( char *path, char *dirc, char *name, char *ext, char *finame ) @@ -2198,8 +2203,8 @@ void freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag first=1; - for(k1=1; k1<=j;k1++){ - for(i1=1; i1<=ncodemax[k1];i1++){ + for(k1=1; k1<=j;k1++){ /* Loop on covariates */ + for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */ j1++; /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); scanf("%d", i);*/ @@ -2207,10 +2212,10 @@ void freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag 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++) - prop[i][m]=0; + + for (i=1; i<=nlstate; i++) + for(m=iagemin; m <= iagemax+3; m++) + prop[i][m]=0; dateintsum=0; k2cpt=0; @@ -2248,6 +2253,9 @@ void freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **ag fprintf(ficresp, "\n#********** Variable "); for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); fprintf(ficresp, "**********\n#"); + fprintf(ficlog, "\n#********** Variable "); + for (z1=1; z1<=cptcoveff; z1++) fprintf(ficlog, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); + fprintf(ficlog, "**********\n#"); } for(i=1; i<=nlstate;i++) fprintf(ficresp, " Age Prev(%d) N(%d) N",i,i); @@ -5491,12 +5499,32 @@ run imach with mle=-1 to get a correct template of the parameter file.\n",numlin m=pow(2,cptcoveff); for(k=1;k<=cptcoveff; k++){ /* scans any effective covariate */ - for(i=1; i <=(m/pow(2,k));i++){ /* i=1 to 8/1=8; i=1 to 8/2=4; i=1 to 8/8=1 */ - for(j=1; j <= ncodemax[k]; j++){ /* For each modality of this covariate */ - for(cpt=1; cpt <=(m/pow(2,cptcoveff+1-k)); cpt++){ /* cpt=1 to 8/2**(3+1-1 or 3+1-3) =1 or 4 */ + for(i=1; i <=pow(2,cptcoveff-k);i++){ /* i=1 to 8/1=8; i=1 to 8/2=4; i=1 to 8/8=1 */ + for(j=1; j <= ncodemax[k]; j++){ /* For each modality of this covariate ncodemax=2*/ + for(cpt=1; cpt <=pow(2,k-1); cpt++){ /* cpt=1 to 8/2**(3+1-1 or 3+1-3) =1 or 4 */ h++; if (h>m) h=1; + /**< codtab(h,k) k + * h 1 2 3 4 + *______________________________ + * 1 i=1 1 i=1 1 i=1 1 i=1 1 + * 2 2 1 1 1 + * 3 i=2 1 2 1 1 + * 4 2 2 1 1 + * 5 i=3 1 i=2 1 2 1 + * 6 2 1 2 1 + * 7 i=4 1 2 2 1 + * 8 2 2 2 1 + * 9 i=5 1 i=3 1 i=2 1 1 + * 10 2 1 1 1 + * 11 i=6 1 2 1 1 + * 12 2 2 1 1 + * 13 i=7 1 i=4 1 2 1 + * 14 2 1 2 1 + * 15 i=8 1 2 2 1 + * 16 2 2 2 1 + */ codtab[h][k]=j; codtab[h][Tvar[k]]=j; printf("h=%d k=%d j=%d codtab[h][k]=%d Tvar[k]=%d codtab[h][Tvar[k]]=%d \n",h, k,j,codtab[h][k],Tvar[k],codtab[h][Tvar[k]]); @@ -6076,14 +6104,14 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf
\n",\ agebase=ageminpar; agelim=agemaxpar; ftolpl=1.e-10; - i1=cptcoveff; + i1=pow(2,cptcoveff); if (cptcovn < 1){i1=1;} for(cptcov=1,k=0;cptcov<=i1;cptcov++){ - for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ + //for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ k=k+1; /* to clean */ - printf("cptcov=%d cptcod=%d codtab=%d nbcode=%d\n",cptcov, cptcod,codtab[cptcod][cptcov],nbcode); + //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtab[cptcod][cptcov]); fprintf(ficrespl,"\n#******"); printf("\n#******"); fprintf(ficlog,"\n#******"); @@ -6104,9 +6132,9 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf
\n",\ for(i=1; i<=nlstate;i++) fprintf(ficrespl," %.5f", prlim[i][i]); fprintf(ficrespl,"\n"); - } - } - } + } /* Age */ + /* was end of cptcod */ + } /* cptcov */ fclose(ficrespl); /*------------- h Pij x at various ages ------------*/ -- 2.43.0