|
|
| version 1.94, 2003/06/27 13:00:02 | version 1.95, 2003/07/08 07:54:34 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.95 2003/07/08 07:54:34 brouard | |
| * imach.c (Repository): | |
| (Repository): Using imachwizard code to output a more meaningful covariance | |
| matrix (cov(a12,c31) instead of numbers. | |
| Revision 1.94 2003/06/27 13:00:02 brouard | Revision 1.94 2003/06/27 13:00:02 brouard |
| Just cleaning | Just cleaning |
| Line 165 | Line 170 |
| #include <time.h> | #include <time.h> |
| #include "timeval.h" | #include "timeval.h" |
| /* #include <libintl.h> */ | |
| /* #define _(String) gettext (String) */ | |
| #define MAXLINE 256 | #define MAXLINE 256 |
| #define GNUPLOTPROGRAM "gnuplot" | #define GNUPLOTPROGRAM "gnuplot" |
| /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ | /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
| Line 2291 void evsij(char fileres[], double ***eij | Line 2299 void evsij(char fileres[], double ***eij |
| hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ | hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
| /* Computing Variances of health expectancies */ | /* Computing Variances of health expectancies */ |
| for(theta=1; theta <=npar; theta++){ | for(theta=1; theta <=npar; theta++){ |
| for(i=1; i<=npar; i++){ | for(i=1; i<=npar; i++){ |
| Line 2845 void varprob(char optionfilefiname[], do | Line 2853 void varprob(char optionfilefiname[], do |
| fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); | fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); |
| fprintf(fichtm,"\n"); | fprintf(fichtm,"\n"); |
| fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Computing matrix of variance-covariance of step probabilities</a></h4></li>\n",optionfilehtmcov); | fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Matrix of variance-covariance of pairs of step probabilities (drawings)</a></h4></li>\n",optionfilehtmcov); |
| fprintf(fichtmcov,"\n<h4>Computing matrix of variance-covariance of step probabilities</h4>\n\ | fprintf(fichtmcov,"\n<h4>Matrix of variance-covariance of pairs of step probabilities</h4>\n\ |
| file %s<br>\n",optionfilehtmcov); | file %s<br>\n",optionfilehtmcov); |
| fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated\ | fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated\ |
| and drawn. It helps understanding how is the covariance between two incidences.\ | and drawn. It helps understanding how is the covariance between two incidences.\ |
| Line 3184 fprintf(fichtm," <ul><li><b>Graphs</b></ | Line 3192 fprintf(fichtm," <ul><li><b>Graphs</b></ |
| fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); | fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
| } | } |
| for(cpt=1; cpt<=nlstate;cpt++) { | for(cpt=1; cpt<=nlstate;cpt++) { |
| fprintf(fichtm,"<br>- Observed and period prevalence (with confident\ | fprintf(fichtm,"<br>- Observed (cross-sectional) and period (incidence based) \ |
| interval) in state (%d): %s%d%d.png <br>\ | prevalence (with 95%% confidence interval) in state (%d): %s%d%d.png <br>\ |
| <img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"v"),cpt,jj1,subdirf2(optionfilefiname,"v"),cpt,jj1); | <img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"v"),cpt,jj1,subdirf2(optionfilefiname,"v"),cpt,jj1); |
| } | } |
| } /* end i1 */ | } /* end i1 */ |
| Line 3842 void prwizard(int ncovmodel, int nlstate | Line 3850 void prwizard(int ncovmodel, int nlstate |
| } /* end k*/ | } /* end k*/ |
| } /*end j */ | } /*end j */ |
| } /* end i */ | } /* end i */ |
| } | } /* end itimes */ |
| } /* end of prwizard */ | } /* end of prwizard */ |
| Line 3855 int main(int argc, char *argv[]) | Line 3863 int main(int argc, char *argv[]) |
| { | { |
| int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); | int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); |
| int i,j, k, n=MAXN,iter,m,size=100,cptcode, cptcod; | int i,j, k, n=MAXN,iter,m,size=100,cptcode, cptcod; |
| int jj, imk; | int jj, ll, li, lj, lk, imk; |
| int numlinepar=0; /* Current linenumber of parameter file */ | int numlinepar=0; /* Current linenumber of parameter file */ |
| int itimes; | |
| char ca[32], cb[32], cc[32]; | |
| /* FILE *fichtm; *//* Html File */ | /* FILE *fichtm; *//* Html File */ |
| /* FILE *ficgp;*/ /*Gnuplot File */ | /* FILE *ficgp;*/ /*Gnuplot File */ |
| double agedeb, agefin,hf; | double agedeb, agefin,hf; |
| Line 3911 int main(int argc, char *argv[]) | Line 3922 int main(int argc, char *argv[]) |
| long total_usecs; | long total_usecs; |
| /* setlocale (LC_ALL, ""); */ | |
| /* bindtextdomain (PACKAGE, LOCALEDIR); */ | |
| /* textdomain (PACKAGE); */ | |
| /* setlocale (LC_CTYPE, ""); */ | |
| /* setlocale (LC_MESSAGES, ""); */ | |
| /* gettimeofday(&start_time, (struct timezone*)0); */ /* at first time */ | /* gettimeofday(&start_time, (struct timezone*)0); */ /* at first time */ |
| (void) gettimeofday(&start_time,&tzp); | (void) gettimeofday(&start_time,&tzp); |
| curr_time=start_time; | curr_time=start_time; |
| Line 4602 Interval (in months) between two waves: | Line 4619 Interval (in months) between two waves: |
| fprintf(ficres,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle= 0 weight=%d\nmodel=%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate, ndeath, maxwav, weightopt,model); | fprintf(ficres,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle= 0 weight=%d\nmodel=%s\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate, ndeath, maxwav, weightopt,model); |
| jk=1; | |
| fprintf(ficres,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); | fprintf(ficres,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
| printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); | printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
| fprintf(ficlog,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); | fprintf(ficlog,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
| for(i=1,jk=1; i <=nlstate; i++){ | for(i=1,jk=1; i <=nlstate; i++){ |
| for(k=1; k <=(nlstate+ndeath); k++){ | for(k=1; k <=(nlstate+ndeath); k++){ |
| if (k != i) | if (k != i) { |
| { | printf("%d%d ",i,k); |
| printf("%d%d ",i,k); | fprintf(ficlog,"%d%d ",i,k); |
| fprintf(ficlog,"%d%d ",i,k); | fprintf(ficres,"%1d%1d ",i,k); |
| fprintf(ficres,"%1d%1d ",i,k); | for(j=1; j <=ncovmodel; j++){ |
| for(j=1; j <=ncovmodel; j++){ | printf("%f ",p[jk]); |
| printf("%f ",p[jk]); | fprintf(ficlog,"%f ",p[jk]); |
| fprintf(ficlog,"%f ",p[jk]); | fprintf(ficres,"%f ",p[jk]); |
| fprintf(ficres,"%f ",p[jk]); | jk++; |
| jk++; | |
| } | |
| printf("\n"); | |
| fprintf(ficlog,"\n"); | |
| fprintf(ficres,"\n"); | |
| } | } |
| printf("\n"); | |
| fprintf(ficlog,"\n"); | |
| fprintf(ficres,"\n"); | |
| } | |
| } | } |
| } | } |
| if(mle!=0){ | if(mle!=0){ |
| Line 4653 Interval (in months) between two waves: | Line 4668 Interval (in months) between two waves: |
| } | } |
| fprintf(ficres,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); | fprintf(ficres,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); |
| if(mle==1) | if(mle>=1) |
| printf("# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); | printf("# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); |
| fprintf(ficlog,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); | fprintf(ficlog,"# Covariance matrix \n# 121 Var(a12)\n# 122 Cov(b12,a12) Var(b12)\n# ...\n# 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n"); |
| for(i=1,k=1;i<=npar;i++){ | /* # 121 Var(a12)\n\ */ |
| /* if (k>nlstate) k=1; | /* # 122 Cov(b12,a12) Var(b12)\n\ */ |
| i1=(i-1)/(ncovmodel*nlstate)+1; | /* # 131 Cov(a13,a12) Cov(a13,b12, Var(a13)\n\ */ |
| fprintf(ficres,"%s%d%d",alph[k],i1,tab[i]); | /* # 132 Cov(b13,a12) Cov(b13,b12, Cov(b13,a13) Var(b13)\n\ */ |
| printf("%s%d%d",alph[k],i1,tab[i]); | /* # 212 Cov(a21,a12) Cov(a21,b12, Cov(a21,a13) Cov(a21,b13) Var(a21)\n\ */ |
| */ | /* # 212 Cov(b21,a12) Cov(b21,b12, Cov(b21,a13) Cov(b21,b13) Cov(b21,a21) Var(b21)\n\ */ |
| fprintf(ficres,"%3d",i); | /* # 232 Cov(a23,a12) Cov(a23,b12, Cov(a23,a13) Cov(a23,b13) Cov(a23,a21) Cov(a23,b21) Var(a23)\n\ */ |
| if(mle==1) | /* # 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n" */ |
| printf("%3d",i); | |
| fprintf(ficlog,"%3d",i); | |
| for(j=1; j<=i;j++){ | /* Just to have a covariance matrix which will be more understandable |
| fprintf(ficres," %.5e",matcov[i][j]); | even is we still don't want to manage dictionary of variables |
| if(mle==1) | */ |
| printf(" %.5e",matcov[i][j]); | for(itimes=1;itimes<=2;itimes++){ |
| fprintf(ficlog," %.5e",matcov[i][j]); | jj=0; |
| } | for(i=1; i <=nlstate; i++){ |
| fprintf(ficres,"\n"); | for(j=1; j <=nlstate+ndeath; j++){ |
| if(mle==1) | if(j==i) continue; |
| printf("\n"); | for(k=1; k<=ncovmodel;k++){ |
| fprintf(ficlog,"\n"); | jj++; |
| k++; | ca[0]= k+'a'-1;ca[1]='\0'; |
| } | if(itimes==1){ |
| if(mle>=1) | |
| printf("#%1d%1d%d",i,j,k); | |
| fprintf(ficlog,"#%1d%1d%d",i,j,k); | |
| fprintf(ficres,"#%1d%1d%d",i,j,k); | |
| }else{ | |
| if(mle>=1) | |
| printf("%1d%1d%d",i,j,k); | |
| fprintf(ficlog,"%1d%1d%d",i,j,k); | |
| fprintf(ficres,"%1d%1d%d",i,j,k); | |
| } | |
| ll=0; | |
| for(li=1;li <=nlstate; li++){ | |
| for(lj=1;lj <=nlstate+ndeath; lj++){ | |
| if(lj==li) continue; | |
| for(lk=1;lk<=ncovmodel;lk++){ | |
| ll++; | |
| if(ll<=jj){ | |
| cb[0]= lk +'a'-1;cb[1]='\0'; | |
| if(ll<jj){ | |
| if(itimes==1){ | |
| if(mle>=1) | |
| printf(" Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); | |
| fprintf(ficlog," Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); | |
| fprintf(ficres," Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj); | |
| }else{ | |
| if(mle>=1) | |
| printf(" %.5e",matcov[jj][ll]); | |
| fprintf(ficlog," %.5e",matcov[jj][ll]); | |
| fprintf(ficres," %.5e",matcov[jj][ll]); | |
| } | |
| }else{ | |
| if(itimes==1){ | |
| if(mle>=1) | |
| printf(" Var(%s%1d%1d)",ca,i,j); | |
| fprintf(ficlog," Var(%s%1d%1d)",ca,i,j); | |
| fprintf(ficres," Var(%s%1d%1d)",ca,i,j); | |
| }else{ | |
| if(mle>=1) | |
| printf(" %.5e",matcov[jj][ll]); | |
| fprintf(ficlog," %.5e",matcov[jj][ll]); | |
| fprintf(ficres," %.5e",matcov[jj][ll]); | |
| } | |
| } | |
| } | |
| } /* end lk */ | |
| } /* end lj */ | |
| } /* end li */ | |
| if(mle>=1) | |
| printf("\n"); | |
| fprintf(ficlog,"\n"); | |
| fprintf(ficres,"\n"); | |
| numlinepar++; | |
| } /* end k*/ | |
| } /*end j */ | |
| } /* end i */ | |
| } /* end itimes */ | |
| fflush(ficlog); | |
| fflush(ficres); | |
| while((c=getc(ficpar))=='#' && c!= EOF){ | while((c=getc(ficpar))=='#' && c!= EOF){ |
| ungetc(c,ficpar); | ungetc(c,ficpar); |
| fgets(line, MAXLINE, ficpar); | fgets(line, MAXLINE, ficpar); |
| Line 5089 ageminpar, agemax, s[lastpass][imx], age | Line 5163 ageminpar, agemax, s[lastpass][imx], age |
| if((nberr >0) || (nbwarn>0)){ | if((nberr >0) || (nbwarn>0)){ |
| printf("End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); | printf("End of Imach with %d errors and/or %d warnings\n",nberr,nbwarn); |
| fprintf(ficlog,"End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); | fprintf(ficlog,"End of Imach with %d errors and/or warnings %d\n",nberr,nbwarn); |
| }else{ | }else{ |
| printf("End of Imach\n"); | printf("End of Imach\n"); |