| version 1.104, 2005/09/30 16:11:43 | version 1.105, 2006/01/05 20:23:19 | 
| Line 1 | Line 1 | 
 | /* $Id$ | /* $Id$ | 
 | $State$ | $State$ | 
 | $Log$ | $Log$ | 
 |  | Revision 1.105  2006/01/05 20:23:19  lievre | 
 |  | *** empty log message *** | 
 |  |  | 
 | Revision 1.104  2005/09/30 16:11:43  lievre | Revision 1.104  2005/09/30 16:11:43  lievre | 
 | (Module): sump fixed, loop imx fixed, and simplifications. | (Module): sump fixed, loop imx fixed, and simplifications. | 
 | (Module): If the status is missing at the last wave but we know | (Module): If the status is missing at the last wave but we know | 
| Line 373  double *weight; | Line 376  double *weight; | 
 | int **s; /* Status */ | int **s; /* Status */ | 
 | double *agedc, **covar, idx; | double *agedc, **covar, idx; | 
 | int **nbcode, *Tcode, *Tvar, **codtab, **Tvard, *Tprod, cptcovprod, *Tvaraff; | int **nbcode, *Tcode, *Tvar, **codtab, **Tvard, *Tprod, cptcovprod, *Tvaraff; | 
 |  | double *lsurv, *lpop, *tpop; | 
 |  |  | 
 | 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 */ | 
| Line 1304  double func( double *x) | Line 1308  double func( double *x) | 
 | survp += out[s1][j]; | survp += out[s1][j]; | 
 | lli= survp; | lli= survp; | 
 | } | } | 
 |  |  | 
 |  | else if  (s2==-4) { | 
 |  | for (j=3,survp=0. ; j<=nlstate; j++) | 
 |  | survp += out[s1][j]; | 
 |  | lli= survp; | 
 |  | } | 
 |  |  | 
 |  | else if  (s2==-5) { | 
 |  | for (j=1,survp=0. ; j<=2; j++) | 
 |  | survp += out[s1][j]; | 
 |  | lli= survp; | 
 |  | } | 
 |  |  | 
 |  |  | 
 | else{ | else{ | 
| Line 1870  void lubksb(double **a, int n, int *indx | Line 1886  void lubksb(double **a, int n, int *indx | 
 | } | } | 
 |  |  | 
 | /************ Frequencies ********************/ | /************ Frequencies ********************/ | 
| void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, int *Tvaraff, int **nbcode, int *ncodemax,double **mint,double **anint) | void  freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, int *Tvaraff, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[]) | 
 | {  /* Some frequencies */ | {  /* Some frequencies */ | 
 |  |  | 
 | int i, m, jk, k1,i1, j1, bool, z1,z2,j; | int i, m, jk, k1,i1, j1, bool, z1,z2,j; | 
| Line 1890  void  freqsummary(char fileres[], int ia | Line 1906  void  freqsummary(char fileres[], int ia | 
 | fprintf(ficlog,"Problem with prevalence resultfile: %s\n", fileresp); | fprintf(ficlog,"Problem with prevalence resultfile: %s\n", fileresp); | 
 | exit(0); | exit(0); | 
 | } | } | 
| freq= ma3x(-2,nlstate+ndeath,-2,nlstate+ndeath,iagemin,iagemax+3); | freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin,iagemax+3); | 
 | j1=0; | j1=0; | 
 |  |  | 
 | j=cptcoveff; | j=cptcoveff; | 
| Line 1903  void  freqsummary(char fileres[], int ia | Line 1919  void  freqsummary(char fileres[], int ia | 
 | j1++; | j1++; | 
 | /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); | /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); | 
 | scanf("%d", i);*/ | scanf("%d", i);*/ | 
| for (i=-2; i<=nlstate+ndeath; i++) | for (i=-5; i<=nlstate+ndeath; i++) | 
| for (jk=-2; jk<=nlstate+ndeath; jk++) | for (jk=-5; jk<=nlstate+ndeath; jk++) | 
 | for(m=iagemin; m <= iagemax+3; m++) | for(m=iagemin; m <= iagemax+3; m++) | 
 | freq[i][jk][m]=0; | freq[i][jk][m]=0; | 
 |  |  | 
| Line 1943  void  freqsummary(char fileres[], int ia | Line 1959  void  freqsummary(char fileres[], int ia | 
 | } | } | 
 |  |  | 
 | /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ | /*      fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ | 
|  | fprintf(ficresp, "#Local time at start: %s", strstart); | 
 | if  (cptcovn>0) { | if  (cptcovn>0) { | 
 | fprintf(ficresp, "\n#********** Variable "); | fprintf(ficresp, "\n#********** Variable "); | 
 | for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); | for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtab[j1][z1]]); | 
| Line 2029  void  freqsummary(char fileres[], int ia | Line 2045  void  freqsummary(char fileres[], int ia | 
 | dateintmean=dateintsum/k2cpt; | dateintmean=dateintsum/k2cpt; | 
 |  |  | 
 | fclose(ficresp); | fclose(ficresp); | 
| free_ma3x(freq,-2,nlstate+ndeath,-2,nlstate+ndeath, iagemin, iagemax+3); | free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin, iagemax+3); | 
 | free_vector(pp,1,nlstate); | free_vector(pp,1,nlstate); | 
 | free_matrix(prop,1,nlstate,iagemin, iagemax+3); | free_matrix(prop,1,nlstate,iagemin, iagemax+3); | 
 | /* End of Freq */ | /* End of Freq */ | 
| Line 2138  void  concatwav(int wav[], int **dh, int | Line 2154  void  concatwav(int wav[], int **dh, int | 
 | mi=0; | mi=0; | 
 | m=firstpass; | m=firstpass; | 
 | while(s[m][i] <= nlstate){ | while(s[m][i] <= nlstate){ | 
| if(s[m][i]>=1 || s[m][i]==-2) | if(s[m][i]>=1 || s[m][i]==-2 || s[m][i]==-4 || s[m][i]==-5) | 
 | mw[++mi][i]=m; | mw[++mi][i]=m; | 
 | if(m >=lastpass) | if(m >=lastpass) | 
 | break; | break; | 
| Line 2178  void  concatwav(int wav[], int **dh, int | Line 2194  void  concatwav(int wav[], int **dh, int | 
 | nberr++; | nberr++; | 
 | printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); | printf("Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); | 
 | j=1; /* Temporary Dangerous patch */ | j=1; /* Temporary Dangerous patch */ | 
| printf("   We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n  You MUST fix the contradiction between dates.\n",stepm); | printf("   We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview. You MUST fix the contradiction between dates.\n",stepm); | 
 | fprintf(ficlog,"Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); | fprintf(ficlog,"Error! Negative delay (%d to death) between waves %d and %d of individual %ld at line %d who is aged %.1f with statuses from %d to %d\n ",j,mw[mi][i],mw[mi+1][i],num[i], i,agev[mw[mi][i]][i],s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); | 
| fprintf(ficlog,"   We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview.\n  You MUST fix the contradiction between dates.\n",stepm); | fprintf(ficlog,"   We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview. You MUST fix the contradiction between dates.\n",stepm); | 
 | } | } | 
 | k=k+1; | k=k+1; | 
 | if (j >= jmax) jmax=j; | if (j >= jmax) jmax=j; | 
| Line 2304  void tricode(int *Tvar, int **nbcode, in | Line 2320  void tricode(int *Tvar, int **nbcode, in | 
 |  |  | 
 | /*********** Health Expectancies ****************/ | /*********** Health Expectancies ****************/ | 
 |  |  | 
| void evsij(char fileres[], double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int ij, int estepm,double delti[],double **matcov ) | void evsij(char fileres[], double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int ij, int estepm,double delti[],double **matcov,char strstart[] ) | 
 |  |  | 
 | { | { | 
 | /* Health expectancies */ | /* Health expectancies */ | 
| Line 2322  void evsij(char fileres[], double ***eij | Line 2338  void evsij(char fileres[], double ***eij | 
 | dnewm=matrix(1,nlstate*nlstate,1,npar); | dnewm=matrix(1,nlstate*nlstate,1,npar); | 
 | doldm=matrix(1,nlstate*nlstate,1,nlstate*nlstate); | doldm=matrix(1,nlstate*nlstate,1,nlstate*nlstate); | 
 |  |  | 
 |  | fprintf(ficreseij,"# Local time at start: %s", strstart); | 
 | fprintf(ficreseij,"# Health expectancies\n"); | fprintf(ficreseij,"# Health expectancies\n"); | 
 | fprintf(ficreseij,"# Age"); | fprintf(ficreseij,"# Age"); | 
 | for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) | 
| Line 2476  void evsij(char fileres[], double ***eij | Line 2493  void evsij(char fileres[], double ***eij | 
 | } | } | 
 |  |  | 
 | /************ Variance ******************/ | /************ Variance ******************/ | 
| void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int ij, int estepm, int cptcov, int cptcod, int popbased, int mobilav) | void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int ij, int estepm, int cptcov, int cptcod, int popbased, int mobilav, char strstart[]) | 
 | { | { | 
 | /* Variance of health expectancies */ | /* Variance of health expectancies */ | 
 | /*  double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ | /*  double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ | 
| Line 2527  void varevsij(char optionfilefiname[], d | Line 2544  void varevsij(char optionfilefiname[], d | 
 | fprintf(ficlog,"Problem with resultfile: %s\n", fileresprobmorprev); | fprintf(ficlog,"Problem with resultfile: %s\n", fileresprobmorprev); | 
 | } | } | 
 | printf("Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); | printf("Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); | 
 |  |  | 
 | fprintf(ficlog,"Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); | fprintf(ficlog,"Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); | 
 |  | fprintf(ficresprobmorprev, "#Local time at start: %s", strstart); | 
 | fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); | fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); | 
 | fprintf(ficresprobmorprev,"# Age cov=%-d",ij); | fprintf(ficresprobmorprev,"# Age cov=%-d",ij); | 
 | for(j=nlstate+1; j<=(nlstate+ndeath);j++){ | for(j=nlstate+1; j<=(nlstate+ndeath);j++){ | 
| Line 2537  void varevsij(char optionfilefiname[], d | Line 2556  void varevsij(char optionfilefiname[], d | 
 | } | } | 
 | fprintf(ficresprobmorprev,"\n"); | fprintf(ficresprobmorprev,"\n"); | 
 | fprintf(ficgp,"\n# Routine varevsij"); | fprintf(ficgp,"\n# Routine varevsij"); | 
 |  | fprintf(fichtm, "#Local time at start: %s", strstart); | 
 | fprintf(fichtm,"\n<li><h4> Computing probabilities of dying over estepm months as a weighted average (i.e global mortality independent of initial healh state)</h4></li>\n"); | fprintf(fichtm,"\n<li><h4> Computing probabilities of dying over estepm months as a weighted average (i.e global mortality independent of initial healh state)</h4></li>\n"); | 
 | fprintf(fichtm,"\n<br>%s  <br>\n",digitp); | fprintf(fichtm,"\n<br>%s  <br>\n",digitp); | 
 | /*   } */ | /*   } */ | 
 | varppt = matrix(nlstate+1,nlstate+ndeath,nlstate+1,nlstate+ndeath); | varppt = matrix(nlstate+1,nlstate+ndeath,nlstate+1,nlstate+ndeath); | 
|  | fprintf(ficresvij, "#Local time at start: %s", strstart); | 
 | fprintf(ficresvij,"# Variance and covariance of health expectancies e.j \n#  (weighted average of eij where weights are the stable prevalence in health states i\n"); | fprintf(ficresvij,"# Variance and covariance of health expectancies e.j \n#  (weighted average of eij where weights are the stable prevalence in health states i\n"); | 
 | fprintf(ficresvij,"# Age"); | fprintf(ficresvij,"# Age"); | 
 | for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) | 
| Line 2774  void varevsij(char optionfilefiname[], d | Line 2794  void varevsij(char optionfilefiname[], d | 
 | }  /* end varevsij */ | }  /* end varevsij */ | 
 |  |  | 
 | /************ Variance of prevlim ******************/ | /************ Variance of prevlim ******************/ | 
| void varprevlim(char fileres[], double **varpl, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int ij) | void varprevlim(char fileres[], double **varpl, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int ij, char strstart[]) | 
 | { | { | 
 | /* Variance of prevalence limit */ | /* Variance of prevalence limit */ | 
 | /*  double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double **savm,double ftolpl);*/ | /*  double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double **savm,double ftolpl);*/ | 
| Line 2787  void varprevlim(char fileres[], double * | Line 2807  void varprevlim(char fileres[], double * | 
 | double **gradg, **trgradg; | double **gradg, **trgradg; | 
 | double age,agelim; | double age,agelim; | 
 | int theta; | int theta; | 
|  | fprintf(ficresvpl, "#Local time at start: %s", strstart); | 
 | fprintf(ficresvpl,"# Standard deviation of stable prevalences \n"); | fprintf(ficresvpl,"# Standard deviation of stable prevalences \n"); | 
 | fprintf(ficresvpl,"# Age"); | fprintf(ficresvpl,"# Age"); | 
 | for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) | 
| Line 2857  void varprevlim(char fileres[], double * | Line 2877  void varprevlim(char fileres[], double * | 
 | } | } | 
 |  |  | 
 | /************ Variance of one-step probabilities  ******************/ | /************ Variance of one-step probabilities  ******************/ | 
| void varprob(char optionfilefiname[], double **matcov, double x[], double delti[], int nlstate, double bage, double fage, int ij, int *Tvar, int **nbcode, int *ncodemax) | void varprob(char optionfilefiname[], double **matcov, double x[], double delti[], int nlstate, double bage, double fage, int ij, int *Tvar, int **nbcode, int *ncodemax, char strstart[]) | 
 | { | { | 
 | int i, j=0,  i1, k1, l1, t, tj; | int i, j=0,  i1, k1, l1, t, tj; | 
 | int k2, l2, j1,  z1; | int k2, l2, j1,  z1; | 
| Line 2902  void varprob(char optionfilefiname[], do | Line 2922  void varprob(char optionfilefiname[], do | 
 | fprintf(ficlog,"Computing matrix of variance covariance of one-step probabilities: result on file '%s' \n",fileresprobcov); | fprintf(ficlog,"Computing matrix of variance covariance of one-step probabilities: result on file '%s' \n",fileresprobcov); | 
 | printf("and correlation matrix of one-step probabilities: result on file '%s' \n",fileresprobcor); | printf("and correlation matrix of one-step probabilities: result on file '%s' \n",fileresprobcor); | 
 | fprintf(ficlog,"and correlation matrix of one-step probabilities: result on file '%s' \n",fileresprobcor); | fprintf(ficlog,"and correlation matrix of one-step probabilities: result on file '%s' \n",fileresprobcor); | 
|  | fprintf(ficresprob, "#Local time at start: %s", strstart); | 
 | fprintf(ficresprob,"#One-step probabilities and stand. devi in ()\n"); | fprintf(ficresprob,"#One-step probabilities and stand. devi in ()\n"); | 
 | fprintf(ficresprob,"# Age"); | fprintf(ficresprob,"# Age"); | 
 |  | fprintf(ficresprobcov, "#Local time at start: %s", strstart); | 
 | fprintf(ficresprobcov,"#One-step probabilities and covariance matrix\n"); | fprintf(ficresprobcov,"#One-step probabilities and covariance matrix\n"); | 
 | fprintf(ficresprobcov,"# Age"); | fprintf(ficresprobcov,"# Age"); | 
 |  | fprintf(ficresprobcor, "#Local time at start: %s", strstart); | 
 | fprintf(ficresprobcor,"#One-step probabilities and correlation matrix\n"); | fprintf(ficresprobcor,"#One-step probabilities and correlation matrix\n"); | 
 | fprintf(ficresprobcov,"# Age"); | fprintf(ficresprobcov,"# Age"); | 
 |  |  | 
| Line 3975  double gompertz(double x[]) | Line 3997  double gompertz(double x[]) | 
 | /******************* Printing html file ***********/ | /******************* Printing html file ***********/ | 
 | void printinghtmlmort(char fileres[], char title[], char datafile[], int firstpass, \ | void printinghtmlmort(char fileres[], char title[], char datafile[], int firstpass, \ | 
 | int lastpass, int stepm, int weightopt, char model[],\ | int lastpass, int stepm, int weightopt, char model[],\ | 
| int imx,  double p[],double **matcov){ | int imx,  double p[],double **matcov,double agemortsup){ | 
| int i; | int i,k; | 
 |  |  | 
 | fprintf(fichtm,"<ul><li><h4>Result files </h4>\n Force of mortality. Parameters of the Gompertz fit (with confidence interval in brackets):<br>"); | fprintf(fichtm,"<ul><li><h4>Result files </h4>\n Force of mortality. Parameters of the Gompertz fit (with confidence interval in brackets):<br>"); | 
 | fprintf(fichtm,"  mu(age) =%lf*exp(%lf*(age-%d)) per year<br><br>",p[1],p[2],agegomp); | fprintf(fichtm,"  mu(age) =%lf*exp(%lf*(age-%d)) per year<br><br>",p[1],p[2],agegomp); | 
| Line 3984  void printinghtmlmort(char fileres[], ch | Line 4006  void printinghtmlmort(char fileres[], ch | 
 | fprintf(fichtm," p[%d] = %lf [%f ; %f]<br>\n",i,p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); | fprintf(fichtm," p[%d] = %lf [%f ; %f]<br>\n",i,p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); | 
 | fprintf(fichtm,"<br><br><img src=\"graphmort.png\">"); | fprintf(fichtm,"<br><br><img src=\"graphmort.png\">"); | 
 | fprintf(fichtm,"</ul>"); | fprintf(fichtm,"</ul>"); | 
 |  |  | 
 |  | fprintf(fichtm,"<ul><li><h4>Life table</h4>\n <br>"); | 
 |  |  | 
 |  | fprintf(fichtm,"\nAge   lx     qx    dx    Lx     Tx     e(x)<br>"); | 
 |  |  | 
 |  | for (k=agegomp;k<(agemortsup-2);k++) | 
 |  | fprintf(fichtm,"%d %.0lf %lf %.0lf %.0lf %.0lf %lf<br>\n",k,lsurv[k],p[1]*exp(p[2]*(k-agegomp)),(p[1]*exp(p[2]*(k-agegomp)))*lsurv[k],lpop[k],tpop[k],tpop[k]/lsurv[k]); | 
 |  |  | 
 |  |  | 
 | fflush(fichtm); | fflush(fichtm); | 
 | } | } | 
 |  |  | 
| Line 4051  int main(int argc, char *argv[]) | Line 4082  int main(int argc, char *argv[]) | 
 | int mobilavproj=0 , prevfcast=0 ; /* moving average of prev, If prevfcast=1 prevalence projection */ | int mobilavproj=0 , prevfcast=0 ; /* moving average of prev, If prevfcast=1 prevalence projection */ | 
 | int mobilav=0,popforecast=0; | int mobilav=0,popforecast=0; | 
 | int hstepm, nhstepm; | int hstepm, nhstepm; | 
 |  | int agemortsup; | 
 |  | float  sumlpop=0.; | 
 | double jprev1=1, mprev1=1,anprev1=2000,jprev2=1, mprev2=1,anprev2=2000; | double jprev1=1, mprev1=1,anprev1=2000,jprev2=1, mprev2=1,anprev2=2000; | 
 | double jpyram=1, mpyram=1,anpyram=2000,jpyram1=1, mpyram1=1,anpyram1=2000; | double jpyram=1, mpyram=1,anpyram=2000,jpyram1=1, mpyram1=1,anpyram1=2000; | 
 |  |  | 
| Line 4589  int main(int argc, char *argv[]) | Line 4622  int main(int argc, char *argv[]) | 
 | for (i=1; i<=imx; i++)  { | for (i=1; i<=imx; i++)  { | 
 | agedc[i]=(moisdc[i]/12.+andc[i])-(moisnais[i]/12.+annais[i]); | agedc[i]=(moisdc[i]/12.+andc[i])-(moisnais[i]/12.+annais[i]); | 
 | for(m=firstpass; (m<= lastpass); m++){ | for(m=firstpass; (m<= lastpass); m++){ | 
| if(s[m][i] >0 || s[m][i]==-2){ | if(s[m][i] >0 || s[m][i]==-2 || s[m][i]==-4 || s[m][i]==-5){ | 
 | if (s[m][i] >= nlstate+1) { | if (s[m][i] >= nlstate+1) { | 
 | if(agedc[i]>0) | if(agedc[i]>0) | 
 | if((int)moisdc[i]!=99 && (int)andc[i]!=9999) | if((int)moisdc[i]!=99 && (int)andc[i]!=9999) | 
| Line 4763  Title=%s <br>Datafile=%s Firstpass=%d La | Line 4796  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 prints on file fileres'p'. */ | and prints on file fileres'p'. */ | 
| 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,strstart); | 
 |  |  | 
 | fprintf(fichtm,"\n"); | fprintf(fichtm,"\n"); | 
 | fprintf(fichtm,"<br>Total number of observations=%d <br>\n\ | fprintf(fichtm,"<br>Total number of observations=%d <br>\n\ | 
| Line 4855  Interval (in months) between two waves: | Line 4888  Interval (in months) between two waves: | 
 | printf("iter=%d MLE=%f Eq=%lf*exp(%lf*(age-%d))\n",iter,-gompertz(p),p[1],p[2],agegomp); | printf("iter=%d MLE=%f Eq=%lf*exp(%lf*(age-%d))\n",iter,-gompertz(p),p[1],p[2],agegomp); | 
 | for (i=1;i<=NDIM;i++) | for (i=1;i<=NDIM;i++) | 
 | printf("%f [%f ; %f]\n",p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); | printf("%f [%f ; %f]\n",p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); | 
 |  |  | 
 |  | lsurv=vector(1,AGESUP); | 
 |  | lpop=vector(1,AGESUP); | 
 |  | tpop=vector(1,AGESUP); | 
 |  | lsurv[agegomp]=100000; | 
 |  |  | 
 |  | for (k=agegomp;k<=AGESUP;k++) { | 
 |  | agemortsup=k; | 
 |  | if (p[1]*exp(p[2]*(k-agegomp))>1) break; | 
 |  | } | 
 |  |  | 
 |  | for (k=agegomp;k<agemortsup;k++) | 
 |  | lsurv[k+1]=lsurv[k]-lsurv[k]*(p[1]*exp(p[2]*(k-agegomp))); | 
 |  |  | 
 |  | for (k=agegomp;k<agemortsup;k++){ | 
 |  | lpop[k]=(lsurv[k]+lsurv[k+1])/2.; | 
 |  | sumlpop=sumlpop+lpop[k]; | 
 |  | } | 
 |  |  | 
 |  | tpop[agegomp]=sumlpop; | 
 |  | for (k=agegomp;k<(agemortsup-3);k++){ | 
 |  | /*  tpop[k+1]=2;*/ | 
 |  | tpop[k+1]=tpop[k]-lpop[k]; | 
 |  | } | 
 |  |  | 
 |  |  | 
 |  | printf("\nAge   lx     qx    dx    Lx     Tx     e(x)\n"); | 
 |  | for (k=agegomp;k<(agemortsup-2);k++) | 
 |  | printf("%d %.0lf %lf %.0lf %.0lf %.0lf %lf\n",k,lsurv[k],p[1]*exp(p[2]*(k-agegomp)),(p[1]*exp(p[2]*(k-agegomp)))*lsurv[k],lpop[k],tpop[k],tpop[k]/lsurv[k]); | 
 |  |  | 
 |  |  | 
 | replace_back_to_slash(pathc,path); /* Even gnuplot wants a / */ | replace_back_to_slash(pathc,path); /* Even gnuplot wants a / */ | 
 | printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | 
 |  |  | 
 | printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ | printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ | 
 | stepm, weightopt,\ | stepm, weightopt,\ | 
| model,imx,p,matcov); | model,imx,p,matcov,agemortsup); | 
|  |  | 
|  | free_vector(lsurv,1,AGESUP); | 
|  | free_vector(lpop,1,AGESUP); | 
|  | free_vector(tpop,1,AGESUP); | 
 | } /* Endof if mle==-3 */ | } /* Endof if mle==-3 */ | 
 |  |  | 
 | else{ /* For mle >=1 */ | else{ /* For mle >=1 */ | 
| Line 5120  Interval (in months) between two waves: | Line 5188  Interval (in months) between two waves: | 
 | } | } | 
 | printf("Computing stable prevalence: result on file '%s' \n", filerespl); | printf("Computing stable prevalence: result on file '%s' \n", filerespl); | 
 | fprintf(ficlog,"Computing stable prevalence: result on file '%s' \n", filerespl); | fprintf(ficlog,"Computing stable prevalence: result on file '%s' \n", filerespl); | 
 |  | fprintf(ficrespl, "#Local time at start: %s", strstart); | 
 | fprintf(ficrespl,"#Stable prevalence \n"); | fprintf(ficrespl,"#Stable prevalence \n"); | 
 | fprintf(ficrespl,"#Age "); | fprintf(ficrespl,"#Age "); | 
 | for(i=1; i<=nlstate;i++) fprintf(ficrespl,"%d-%d ",i,i); | for(i=1; i<=nlstate;i++) fprintf(ficrespl,"%d-%d ",i,i); | 
| Line 5180  Interval (in months) between two waves: | Line 5249  Interval (in months) between two waves: | 
 | hstepm=hstepm/stepm; /* Typically 2 years, = 2/6 months = 4 */ | hstepm=hstepm/stepm; /* Typically 2 years, = 2/6 months = 4 */ | 
 |  |  | 
 | /* hstepm=1;   aff par mois*/ | /* hstepm=1;   aff par mois*/ | 
|  | fprintf(ficrespij, "#Local time at start: %s", strstart); | 
 | fprintf(ficrespij,"#****** h Pij x Probability to be in state j at age x+h being in i at x "); | fprintf(ficrespij,"#****** h Pij x Probability to be in state j at age x+h being in i at x "); | 
 | for(cptcov=1,k=0;cptcov<=i1;cptcov++){ | for(cptcov=1,k=0;cptcov<=i1;cptcov++){ | 
 | for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ | for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ | 
| Line 5217  Interval (in months) between two waves: | Line 5286  Interval (in months) between two waves: | 
 | } | } | 
 | } | } | 
 |  |  | 
| varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax); | varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax,strstart); | 
 |  |  | 
 | fclose(ficrespij); | fclose(ficrespij); | 
 |  |  | 
| Line 5306  Interval (in months) between two waves: | Line 5375  Interval (in months) between two waves: | 
 |  |  | 
 | eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); | eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); | 
 | oldm=oldms;savm=savms; | oldm=oldms;savm=savms; | 
| evsij(fileres, eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov); | evsij(fileres, eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov, strstart); | 
 |  |  | 
 | vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); | vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); | 
 | oldm=oldms;savm=savms; | oldm=oldms;savm=savms; | 
| varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k, estepm, cptcov,cptcod,0, mobilav); | varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k, estepm, cptcov,cptcod,0, mobilav, strstart); | 
 | if(popbased==1){ | if(popbased==1){ | 
| varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k, estepm, cptcov,cptcod,popbased,mobilav); | varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k, estepm, cptcov,cptcod,popbased,mobilav, strstart); | 
 | } | } | 
 |  |  | 
|  | fprintf(ficrest, "#Local time at start: %s", strstart); | 
 | fprintf(ficrest,"#Total LEs with variances: e.. (std) "); | fprintf(ficrest,"#Total LEs with variances: e.. (std) "); | 
 | for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i); | for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i); | 
 | fprintf(ficrest,"\n"); | fprintf(ficrest,"\n"); | 
| Line 5388  Interval (in months) between two waves: | Line 5457  Interval (in months) between two waves: | 
 |  |  | 
 | varpl=matrix(1,nlstate,(int) bage, (int) fage); | varpl=matrix(1,nlstate,(int) bage, (int) fage); | 
 | oldm=oldms;savm=savms; | oldm=oldms;savm=savms; | 
| varprevlim(fileres, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k); | varprevlim(fileres, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl,k,strstart); | 
 | free_matrix(varpl,1,nlstate,(int) bage, (int)fage); | free_matrix(varpl,1,nlstate,(int) bage, (int)fage); | 
 | } | } | 
 | } | } | 
| Line 5437  Interval (in months) between two waves: | Line 5506  Interval (in months) between two waves: | 
 | 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("Local time at start %s\nLocaltime at end   %s",strstart, strtend); | printf("Local time at start %s\nLocal time at end   %s",strstart, strtend); | 
 | fprintf(ficlog,"Local time 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)); | 
 |  |  |