version 1.92, 2003/06/25 16:30:45
|
version 1.97, 2004/02/20 13:25:42
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.97 2004/02/20 13:25:42 lievre |
|
Version 0.96d. Population forecasting command line is (temporarily) |
|
suppressed. |
|
|
|
Revision 1.96 2003/07/15 15:38:55 brouard |
|
* imach.c (Repository): Errors in subdirf, 2, 3 while printing tmpout is |
|
rewritten within the same printf. Workaround: many printfs. |
|
|
|
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 |
|
Just cleaning |
|
|
|
Revision 1.93 2003/06/25 16:33:55 brouard |
|
(Module): On windows (cygwin) function asctime_r doesn't |
|
exist so I changed back to asctime which exists. |
|
(Module): Version 0.96b |
|
|
Revision 1.92 2003/06/25 16:30:45 brouard |
Revision 1.92 2003/06/25 16:30:45 brouard |
(Module): On windows (cygwin) function asctime_r doesn't |
(Module): On windows (cygwin) function asctime_r doesn't |
exist so I changed back to asctime which exists. |
exist so I changed back to asctime which exists. |
Line 157
|
Line 178
|
#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 188
|
Line 212
|
/* $Id$ */ |
/* $Id$ */ |
/* $State$ */ |
/* $State$ */ |
|
|
char version[]="Imach version 0.96a, June 2003, INED-EUROREVES "; |
char version[]="Imach version 0.96d, February 2004, INED-EUROREVES "; |
char fullversion[]="$Revision$ $Date$"; |
char fullversion[]="$Revision$ $Date$"; |
int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int nvar; |
int nvar; |
Line 232 char fileresvpl[FILENAMELENGTH];
|
Line 256 char fileresvpl[FILENAMELENGTH];
|
char title[MAXLINE]; |
char title[MAXLINE]; |
char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH]; |
char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH]; |
char optionfilext[10], optionfilefiname[FILENAMELENGTH], plotcmd[FILENAMELENGTH]; |
char optionfilext[10], optionfilefiname[FILENAMELENGTH], plotcmd[FILENAMELENGTH]; |
char tmpout[FILENAMELENGTH]; |
char tmpout[FILENAMELENGTH], tmpout2[FILENAMELENGTH]; |
char command[FILENAMELENGTH]; |
char command[FILENAMELENGTH]; |
int outcmd=0; |
int outcmd=0; |
|
|
char fileres[FILENAMELENGTH], filerespij[FILENAMELENGTH], filereso[FILENAMELENGTH], rfileres[FILENAMELENGTH]; |
char fileres[FILENAMELENGTH], filerespij[FILENAMELENGTH], filereso[FILENAMELENGTH], rfileres[FILENAMELENGTH]; |
char lfileres[FILENAMELENGTH]; |
|
char filelog[FILENAMELENGTH]; /* Log file */ |
char filelog[FILENAMELENGTH]; /* Log file */ |
char filerest[FILENAMELENGTH]; |
char filerest[FILENAMELENGTH]; |
char fileregp[FILENAMELENGTH]; |
char fileregp[FILENAMELENGTH]; |
Line 557 void free_ma3x(double ***m, long nrl, lo
|
Line 581 void free_ma3x(double ***m, long nrl, lo
|
free((FREE_ARG)(m+nrl-NR_END)); |
free((FREE_ARG)(m+nrl-NR_END)); |
} |
} |
|
|
|
/*************** function subdirf ***********/ |
|
char *subdirf(char fileres[]) |
|
{ |
|
/* Caution optionfilefiname is hidden */ |
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); /* Add to the right */ |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
|
|
/*************** function subdirf2 ***********/ |
|
char *subdirf2(char fileres[], char *preop) |
|
{ |
|
|
|
/* Caution optionfilefiname is hidden */ |
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); |
|
strcat(tmpout,preop); |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
|
|
/*************** function subdirf3 ***********/ |
|
char *subdirf3(char fileres[], char *preop, char *preop2) |
|
{ |
|
|
|
/* Caution optionfilefiname is hidden */ |
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); |
|
strcat(tmpout,preop); |
|
strcat(tmpout,preop2); |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
|
/***************** f1dim *************************/ |
/***************** f1dim *************************/ |
extern int ncom; |
extern int ncom; |
extern double *pcom,*xicom; |
extern double *pcom,*xicom; |
Line 1214 double func( double *x)
|
Line 1273 double func( double *x)
|
oldm=newm; |
oldm=newm; |
} /* end mult */ |
} /* end mult */ |
|
|
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
|
/* But now since version 0.9 we anticipate for bias and large stepm. |
|
* If stepm is larger than one month (smallest stepm) and if the exact delay |
|
* (in months) between two waves is not a multiple of stepm, we rounded to |
|
* the nearest (and in case of equal distance, to the lowest) interval but now |
|
* we keep into memory the bias bh[mi][i] and also the previous matrix product |
|
* (i.e to dh[mi][i]-1) saved in 'savm'. The we inter(extra)polate the |
|
* probability in order to take into account the bias as a fraction of the way |
|
* from savm to out if bh is neagtive or even beyond if bh is positive. bh varies |
|
* -stepm/2 to stepm/2 . |
|
* For stepm=1 the results are the same as for previous versions of Imach. |
|
* For stepm > 1 the results are less biased than in previous versions. |
|
*/ |
|
s1=s[mw[mi][i]][i]; |
s1=s[mw[mi][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
bbh=(double)bh[mi][i]/(double)stepm; |
bbh=(double)bh[mi][i]/(double)stepm; |
/* bias is positive if real duration |
|
* is higher than the multiple of stepm and negative otherwise. |
|
*/ |
|
lli= (savm[s1][s2]>(double)1.e-8 ?log((1.+bbh)*out[s1][s2]- bbh*(savm[s1][s2])):log((1.+bbh)*out[s1][s2])); /* linear interpolation */ |
lli= (savm[s1][s2]>(double)1.e-8 ?log((1.+bbh)*out[s1][s2]- bbh*(savm[s1][s2])):log((1.+bbh)*out[s1][s2])); /* linear interpolation */ |
/* lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.+bbh)*out[s1][s2]));*/ |
|
/*lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.-+bh)*out[s1][s2])); */ /* exponential interpolation */ |
|
/*lli=(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]);*/ |
|
/*if(lli ==000.0)*/ |
|
/*printf("bbh= %f lli=%f savm=%f out=%f %d\n",bbh,lli,savm[s1][s2], out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]],i); */ |
|
ipmx +=1; |
ipmx +=1; |
sw += weight[i]; |
sw += weight[i]; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
Line 1265 double func( double *x)
|
Line 1303 double func( double *x)
|
oldm=newm; |
oldm=newm; |
} /* end mult */ |
} /* end mult */ |
|
|
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
|
/* But now since version 0.9 we anticipate for bias and large stepm. |
|
* If stepm is larger than one month (smallest stepm) and if the exact delay |
|
* (in months) between two waves is not a multiple of stepm, we rounded to |
|
* the nearest (and in case of equal distance, to the lowest) interval but now |
|
* we keep into memory the bias bh[mi][i] and also the previous matrix product |
|
* (i.e to dh[mi][i]-1) saved in 'savm'. The we inter(extra)polate the |
|
* probability in order to take into account the bias as a fraction of the way |
|
* from savm to out if bh is neagtive or even beyond if bh is positive. bh varies |
|
* -stepm/2 to stepm/2 . |
|
* For stepm=1 the results are the same as for previous versions of Imach. |
|
* For stepm > 1 the results are less biased than in previous versions. |
|
*/ |
|
s1=s[mw[mi][i]][i]; |
s1=s[mw[mi][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
bbh=(double)bh[mi][i]/(double)stepm; |
bbh=(double)bh[mi][i]/(double)stepm; |
/* bias is positive if real duration |
|
* is higher than the multiple of stepm and negative otherwise. |
|
*/ |
|
/* lli= (savm[s1][s2]>(double)1.e-8 ?log((1.+bbh)*out[s1][s2]- bbh*(savm[s1][s2])):log((1.+bbh)*out[s1][s2])); */ /* linear interpolation */ |
|
lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.+bbh)*out[s1][s2])); /* exponential inter-extrapolation */ |
lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.+bbh)*out[s1][s2])); /* exponential inter-extrapolation */ |
/*lli=(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]);*/ |
|
/*if(lli ==000.0)*/ |
|
/*printf("bbh= %f lli=%f savm=%f out=%f %d\n",bbh,lli,savm[s1][s2], out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]],i); */ |
|
ipmx +=1; |
ipmx +=1; |
sw += weight[i]; |
sw += weight[i]; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
Line 1454 double funcone( double *x)
|
Line 1472 double funcone( double *x)
|
return -l; |
return -l; |
} |
} |
|
|
char *subdirf(char fileres[]) |
|
{ |
|
/* Caution optionfilefiname is hidden */ |
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); /* Add to the right */ |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
|
|
char *subdirf2(char fileres[], char *preop) |
|
{ |
|
|
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); |
|
strcat(tmpout,preop); |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
char *subdirf3(char fileres[], char *preop, char *preop2) |
|
{ |
|
|
|
strcpy(tmpout,optionfilefiname); |
|
strcat(tmpout,"/"); |
|
strcat(tmpout,preop); |
|
strcat(tmpout,preop2); |
|
strcat(tmpout,fileres); |
|
return tmpout; |
|
} |
|
|
|
|
/*************** function likelione ***********/ |
void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, long *ipmx, double *sw, double *fretone, double (*funcone)(double [])) |
void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, long *ipmx, double *sw, double *fretone, double (*funcone)(double [])) |
{ |
{ |
/* This routine should help understanding what is done with |
/* This routine should help understanding what is done with |
Line 2316 void evsij(char fileres[], double ***eij
|
Line 2307 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 2870 void varprob(char optionfilefiname[], do
|
Line 2861 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 2904 To be simple, these graphs help to under
|
Line 2895 To be simple, these graphs help to under
|
fprintf(ficgp, "**********\n#\n"); |
fprintf(ficgp, "**********\n#\n"); |
|
|
|
|
fprintf(fichtm, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); |
fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); |
fprintf(fichtm, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
|
|
fprintf(ficresprobcor, "\n#********** Variable "); |
fprintf(ficresprobcor, "\n#********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcor, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcor, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); |
Line 3115 void printinghtml(char fileres[], char t
|
Line 3106 void printinghtml(char fileres[], char t
|
double jprev1, double mprev1,double anprev1, \ |
double jprev1, double mprev1,double anprev1, \ |
double jprev2, double mprev2,double anprev2){ |
double jprev2, double mprev2,double anprev2){ |
int jj1, k1, i1, cpt; |
int jj1, k1, i1, cpt; |
/*char optionfilehtm[FILENAMELENGTH];*/ |
|
/* if((fichtm=fopen(optionfilehtm,"a"))==NULL) { */ |
|
/* printf("Problem with %s \n",optionfilehtm), exit(0); */ |
|
/* fprintf(ficlog,"Problem with %s \n",optionfilehtm), exit(0); */ |
|
/* } */ |
|
|
|
fprintf(fichtm,"<ul><li><h4>Result files (first order: no variance)</h4>\n \ |
fprintf(fichtm,"<ul><li><h4>Result files (first order: no variance)</h4>\n \ |
- Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> <br>\n \ |
- Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> <br>\n ", |
- Estimated transition probabilities over %d (stepm) months: <a href=\"%s\">%s</a><br>\n \ |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirf2(fileres,"p"),subdirf2(fileres,"p")); |
- Stable prevalence in each health state: <a href=\"%s\">%s</a> <br>\n \ |
fprintf(fichtm,"\ |
|
- Estimated transition probabilities over %d (stepm) months: <a href=\"%s\">%s</a><br>\n ", |
|
stepm,subdirf2(fileres,"pij"),subdirf2(fileres,"pij")); |
|
fprintf(fichtm,"\ |
|
- Stable prevalence in each health state: <a href=\"%s\">%s</a> <br>\n", |
|
subdirf2(fileres,"pl"),subdirf2(fileres,"pl")); |
|
fprintf(fichtm,"\ |
- Life expectancies by age and initial health status (estepm=%2d months): \ |
- Life expectancies by age and initial health status (estepm=%2d months): \ |
<a href=\"%s\">%s</a> <br>\n</li>", \ |
<a href=\"%s\">%s</a> <br>\n</li>", |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirf2(fileres,"p"),subdirf2(fileres,"p"),\ |
|
stepm,subdirf2(fileres,"pij"),subdirf2(fileres,"pij"),\ |
|
subdirf2(fileres,"pl"),subdirf2(fileres,"pl"),\ |
|
estepm,subdirf2(fileres,"e"),subdirf2(fileres,"e")); |
estepm,subdirf2(fileres,"e"),subdirf2(fileres,"e")); |
|
|
fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |
fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |
Line 3163 fprintf(fichtm," \n<ul><li><b>Graphs</b>
|
Line 3152 fprintf(fichtm," \n<ul><li><b>Graphs</b>
|
fprintf(fichtm,"\n<br>- Health life expectancies by age and initial health state (%d): %s%d%d.png <br> \ |
fprintf(fichtm,"\n<br>- Health life expectancies by age and initial health state (%d): %s%d%d.png <br> \ |
<img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"exp"),cpt,jj1,subdirf2(optionfilefiname,"exp"),cpt,jj1); |
<img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"exp"),cpt,jj1,subdirf2(optionfilefiname,"exp"),cpt,jj1); |
} |
} |
fprintf(fichtm,"\n<br>- Total life expectancy by age and \ |
|
health expectancies in states (1) and (2): %s%d.png<br>\ |
|
<img src=\"%s%d.png\">",subdirf2(optionfilefiname,"e"),jj1,subdirf2(optionfilefiname,"e"),jj1); |
|
} /* end i1 */ |
} /* end i1 */ |
}/* End k1 */ |
}/* End k1 */ |
fprintf(fichtm,"</ul>"); |
fprintf(fichtm,"</ul>"); |
|
|
|
|
fprintf(fichtm,"\n<br><li><h4> Result files (second order: variances)</h4>\n\ |
fprintf(fichtm,"\ |
- Parameter file with estimated parameters and covariance matrix: <a href=\"%s\">%s</a> <br>\n\ |
\n<br><li><h4> Result files (second order: variances)</h4>\n\ |
- Variance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\ |
- Parameter file with estimated parameters and covariance matrix: <a href=\"%s\">%s</a> <br>\n", rfileres,rfileres); |
- Variance-covariance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\ |
|
- Correlation matrix of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\ |
fprintf(fichtm," - Variance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n", |
- Variances and covariances of life expectancies by age and initial health status (estepm=%d months): <a href=\"%s\">%s</a><br>\n\ |
subdirf2(fileres,"prob"),subdirf2(fileres,"prob")); |
- Health expectancies with their variances (no covariance): <a href=\"%s\">%s</a> <br>\n\ |
fprintf(fichtm,"\ |
|
- Variance-covariance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n", |
|
subdirf2(fileres,"probcov"),subdirf2(fileres,"probcov")); |
|
|
|
fprintf(fichtm,"\ |
|
- Correlation matrix of one-step probabilities: <a href=\"%s\">%s</a> <br>\n", |
|
subdirf2(fileres,"probcor"),subdirf2(fileres,"probcor")); |
|
fprintf(fichtm,"\ |
|
- Variances and covariances of life expectancies by age and initial health status (estepm=%d months): <a href=\"%s\">%s</a><br>\n", |
|
estepm, subdirf2(fileres,"v"),subdirf2(fileres,"v")); |
|
fprintf(fichtm,"\ |
|
- Health expectancies with their variances (no covariance): <a href=\"%s\">%s</a> <br>\n", |
|
subdirf2(fileres,"t"),subdirf2(fileres,"t")); |
|
fprintf(fichtm,"\ |
- Standard deviation of stable prevalences: <a href=\"%s\">%s</a> <br>\n",\ |
- Standard deviation of stable prevalences: <a href=\"%s\">%s</a> <br>\n",\ |
rfileres,rfileres,\ |
|
subdirf2(fileres,"prob"),subdirf2(fileres,"prob"),\ |
|
subdirf2(fileres,"probcov"),subdirf2(fileres,"probcov"),\ |
|
subdirf2(fileres,"probcor"),subdirf2(fileres,"probcor"),\ |
|
estepm, subdirf2(fileres,"v"),subdirf2(fileres,"v"),\ |
|
subdirf2(fileres,"t"),subdirf2(fileres,"t"),\ |
|
subdirf2(fileres,"vpl"),subdirf2(fileres,"vpl")); |
subdirf2(fileres,"vpl"),subdirf2(fileres,"vpl")); |
|
|
/* if(popforecast==1) fprintf(fichtm,"\n */ |
/* if(popforecast==1) fprintf(fichtm,"\n */ |
Line 3193 health expectancies in states (1) and (2
|
Line 3186 health expectancies in states (1) and (2
|
/* <br>",fileres,fileres,fileres,fileres); */ |
/* <br>",fileres,fileres,fileres,fileres); */ |
/* else */ |
/* else */ |
/* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ |
/* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ |
fprintf(fichtm," <ul><li><b>Graphs</b></li><p>"); |
fflush(fichtm); |
|
fprintf(fichtm," <ul><li><b>Graphs</b></li><p>"); |
|
|
m=cptcoveff; |
m=cptcoveff; |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
Line 3209 fprintf(fichtm," <ul><li><b>Graphs</b></
|
Line 3203 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); |
} |
} |
|
fprintf(fichtm,"\n<br>- Total life expectancy by age and \ |
|
health expectancies in states (1) and (2): %s%d.png<br>\ |
|
<img src=\"%s%d.png\">",subdirf2(optionfilefiname,"e"),jj1,subdirf2(optionfilefiname,"e"),jj1); |
} /* end i1 */ |
} /* end i1 */ |
}/* End k1 */ |
}/* End k1 */ |
fprintf(fichtm,"</ul>"); |
fprintf(fichtm,"</ul>"); |
Line 3746 int fileappend(FILE *fichier, char *opti
|
Line 3743 int fileappend(FILE *fichier, char *opti
|
fflush(fichier); |
fflush(fichier); |
return (1); |
return (1); |
} |
} |
|
|
|
|
|
/**************** function prwizard **********************/ |
void prwizard(int ncovmodel, int nlstate, int ndeath, char model[], FILE *ficparo) |
void prwizard(int ncovmodel, int nlstate, int ndeath, char model[], FILE *ficparo) |
{ |
{ |
|
|
|
/* Wizard to print covariance matrix template */ |
|
|
char ca[32], cb[32], cc[32]; |
char ca[32], cb[32], cc[32]; |
int i,j, k, l, li, lj, lk, ll, jj, npar, itimes; |
int i,j, k, l, li, lj, lk, ll, jj, npar, itimes; |
int numlinepar; |
int numlinepar; |
Line 3862 void prwizard(int ncovmodel, int nlstate
|
Line 3864 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 3875 int main(int argc, char *argv[])
|
Line 3877 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 3931 int main(int argc, char *argv[])
|
Line 3936 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 4004 int main(int argc, char *argv[])
|
Line 4015 int main(int argc, char *argv[])
|
optionfilext=%s\n\ |
optionfilext=%s\n\ |
optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
|
|
printf("Localtime (at start):%s",strstart); |
printf("Local time (at start):%s",strstart); |
fprintf(ficlog,"Localtime (at start): %s",strstart); |
fprintf(ficlog,"Local time (at start): %s",strstart); |
fflush(ficlog); |
fflush(ficlog); |
/* (void) gettimeofday(&curr_time,&tzp); */ |
/* (void) gettimeofday(&curr_time,&tzp); */ |
/* printf("Elapsed time %d\n", asc_diff_time(curr_time.tv_sec-start_time.tv_sec,tmpout)); */ |
/* printf("Elapsed time %d\n", asc_diff_time(curr_time.tv_sec-start_time.tv_sec,tmpout)); */ |
Line 4477 int main(int argc, char *argv[])
|
Line 4488 int main(int argc, char *argv[])
|
|
|
}*/ |
}*/ |
|
|
|
|
printf("Total number of individuals= %d, Agemin = %.2f, Agemax= %.2f\n\n", imx, agemin, agemax); |
printf("Total number of individuals= %d, Agemin = %.2f, Agemax= %.2f\n\n", imx, agemin, agemax); |
fprintf(ficlog,"Total number of individuals= %d, Agemin = %.2f, Agemax= %.2f\n\n", imx, agemin, agemax); |
fprintf(ficlog,"Total number of individuals= %d, Agemin = %.2f, Agemax= %.2f\n\n", imx, agemin, agemax); |
|
|
Line 4581 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4593 Title=%s <br>Datafile=%s Firstpass=%d La
|
strcpy(pathr,path); |
strcpy(pathr,path); |
strcat(pathr,optionfilefiname); |
strcat(pathr,optionfilefiname); |
chdir(optionfilefiname); /* Move to directory named optionfile */ |
chdir(optionfilefiname); /* Move to directory named optionfile */ |
strcpy(lfileres,fileres); |
|
strcat(lfileres,"/"); |
|
strcat(lfileres,optionfilefiname); |
|
|
|
/* 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'. */ |
Line 4625 Interval (in months) between two waves:
|
Line 4634 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 4676 Interval (in months) between two waves:
|
Line 4683 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 4775 Interval (in months) between two waves:
|
Line 4841 Interval (in months) between two waves:
|
} |
} |
ungetc(c,ficpar); |
ungetc(c,ficpar); |
|
|
fscanf(ficpar,"popforecast=%d popfile=%s popfiledate=%lf/%lf/%lf last-popfiledate=%lf/%lf/%lf\n",&popforecast,popfile,&jpyram,&mpyram,&anpyram,&jpyram1,&mpyram1,&anpyram1); |
/* fscanf(ficpar,"popforecast=%d popfile=%s popfiledate=%lf/%lf/%lf last-popfiledate=%lf/%lf/%lf\n",&popforecast,popfile,&jpyram,&mpyram,&anpyram,&jpyram1,&mpyram1,&anpyram1); |
fprintf(ficparo,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficparo,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficres,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1); |
fprintf(ficres,"popforecast=%d popfile=%s popfiledate=%.lf/%.lf/%.lf last-popfiledate=%.lf/%.lf/%.lf\n",popforecast,popfile,jpyram,mpyram,anpyram,jpyram1,mpyram1,anpyram1);*/ |
|
|
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint);*/ |
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint);*/ |
/*,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
/*,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
Line 4916 Interval (in months) between two waves:
|
Line 4982 Interval (in months) between two waves:
|
fclose(ficrespij); |
fclose(ficrespij); |
|
|
probs= ma3x(1,AGESUP,1,NCOVMAX, 1,NCOVMAX); |
probs= ma3x(1,AGESUP,1,NCOVMAX, 1,NCOVMAX); |
|
for(i=1;i<=AGESUP;i++) |
|
for(j=1;j<=NCOVMAX;j++) |
|
for(k=1;k<=NCOVMAX;k++) |
|
probs[i][j][k]=0.; |
|
|
/*---------- Forecasting ------------------*/ |
/*---------- Forecasting ------------------*/ |
/*if((stepm == 1) && (strcmp(model,".")==0)){*/ |
/*if((stepm == 1) && (strcmp(model,".")==0)){*/ |
Line 5112 ageminpar, agemax, s[lastpass][imx], age
|
Line 5182 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"); |
Line 5124 ageminpar, agemax, s[lastpass][imx], age
|
Line 5194 ageminpar, agemax, s[lastpass][imx], age
|
tm = *localtime(&end_time.tv_sec); |
tm = *localtime(&end_time.tv_sec); |
tmg = *gmtime(&end_time.tv_sec); |
tmg = *gmtime(&end_time.tv_sec); |
strcpy(strtend,asctime(&tm)); |
strcpy(strtend,asctime(&tm)); |
printf("Localtime at start %s\nLocaltime at end %s",strstart, strtend); |
printf("Local time at start %s\nLocaltime at end %s",strstart, strtend); |
fprintf(ficlog,"Localtime at start %s\nLocal time at end %s\n",strstart, strtend); |
fprintf(ficlog,"Local time at start %s\nLocal time at end %s\n",strstart, strtend); |
printf("Total time used %s\n", asc_diff_time(end_time.tv_sec -start_time.tv_sec,tmpout)); |
printf("Total time used %s\n", asc_diff_time(end_time.tv_sec -start_time.tv_sec,tmpout)); |
|
|
printf("Total time was %d Sec.\n", end_time.tv_sec -start_time.tv_sec); |
printf("Total time was %d Sec.\n", end_time.tv_sec -start_time.tv_sec); |