|
|
| version 1.124, 2006/03/22 17:13:53 | version 1.126, 2006/04/28 17:23:28 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.126 2006/04/28 17:23:28 brouard | |
| (Module): Yes the sum of survivors was wrong since | |
| imach-114 because nhstepm was no more computed in the age | |
| loop. Now we define nhstepma in the age loop. | |
| Version 0.98h | |
| Revision 1.125 2006/04/04 15:20:31 lievre | |
| Errors in calculation of health expectancies. Age was not initialized. | |
| Forecasting file added. | |
| Revision 1.124 2006/03/22 17:13:53 lievre | Revision 1.124 2006/03/22 17:13:53 lievre |
| Parameters are printed with %lf instead of %f (more numbers after the comma). | Parameters are printed with %lf instead of %f (more numbers after the comma). |
| The log-likelihood is printed in the log file | The log-likelihood is printed in the log file |
| Line 364 extern int errno; | Line 374 extern int errno; |
| /* $Id$ */ | /* $Id$ */ |
| /* $State$ */ | /* $State$ */ |
| char version[]="Imach version 0.98g, March 2006, INED-EUROREVES-Institut de longevite "; | char version[]="Imach version 0.98h, April 2006, INED-EUROREVES-Institut de longevite "; |
| char fullversion[]="$Revision$ $Date$"; | char fullversion[]="$Revision$ $Date$"; |
| char strstart[80]; | char strstart[80]; |
| char optionfilext[10], optionfilefiname[FILENAMELENGTH]; | char optionfilext[10], optionfilefiname[FILENAMELENGTH]; |
| Line 2097 void freqsummary(char fileres[], int ia | Line 2107 void freqsummary(char fileres[], int ia |
| for(i=iagemin; i <= iagemax+3; i++){ | for(i=iagemin; i <= iagemax+3; i++){ |
| if(i==iagemax+3){ | if(i==iagemax+3){ |
| fprintf(ficlog,"Total"); | fprintf(ficlog,"Total"); |
| fprintf(fichtm,"<br>Total<br>"); | |
| }else{ | }else{ |
| if(first==1){ | if(first==1){ |
| first=0; | first=0; |
| Line 2463 void evsij(char fileres[], double ***eij | Line 2472 void evsij(char fileres[], double ***eij |
| { | { |
| /* Health expectancies, no variances */ | /* Health expectancies, no variances */ |
| int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2; | int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2; |
| int nhstepma, nstepma; /* Decreasing with age */ | |
| double age, agelim, hf; | double age, agelim, hf; |
| double ***p3mat; | double ***p3mat; |
| double eip; | double eip; |
| Line 2509 void evsij(char fileres[], double ***eij | Line 2519 void evsij(char fileres[], double ***eij |
| hstepm=hstepm/stepm; /* Typically in stepm units, if stepm=6 & estepm=24 , = 24/6 months = 4 */ | hstepm=hstepm/stepm; /* Typically in stepm units, if stepm=6 & estepm=24 , = 24/6 months = 4 */ |
| agelim=AGESUP; | agelim=AGESUP; |
| /* nhstepm age range expressed in number of stepm */ | /* If stepm=6 months */ |
| nstepm=(int) rint((agelim-age)*YEARM/stepm); | /* Computed by stepm unit matrices, product of hstepm matrices, stored |
| in an array of nhstepm length: nhstepm=10, hstepm=4, stepm=6 months */ | |
| /* nhstepm age range expressed in number of stepm */ | |
| nstepm=(int) rint((agelim-bage)*YEARM/stepm); /* Biggest nstepm */ | |
| /* Typically if 20 years nstepm = 20*12/6=40 stepm */ | /* Typically if 20 years nstepm = 20*12/6=40 stepm */ |
| /* if (stepm >= YEARM) hstepm=1;*/ | /* if (stepm >= YEARM) hstepm=1;*/ |
| nhstepm = nstepm/hstepm;/* Expressed in hstepm, typically nhstepm=40/4=10 */ | nhstepm = nstepm/hstepm;/* Expressed in hstepm, typically nhstepm=40/4=10 */ |
| p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); | p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| for (age=bage; age<=fage; age ++){ /* If stepm=6 months */ | for (age=bage; age<=fage; age ++){ |
| /* Computed by stepm unit matrices, product of hstepm matrices, stored | nstepma=(int) rint((agelim-bage)*YEARM/stepm); /* Biggest nstepm */ |
| in an array of nhstepm length: nhstepm=10, hstepm=4, stepm=6 months */ | /* Typically if 20 years nstepm = 20*12/6=40 stepm */ |
| /* if (stepm >= YEARM) hstepm=1;*/ | |
| nhstepma = nstepma/hstepm;/* Expressed in hstepm, typically nhstepma=40/4=10 */ | |
| /* If stepm=6 months */ | |
| /* Computed by stepm unit matrices, product of hstepma matrices, stored | |
| in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ | |
| hpxij(p3mat,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij); | hpxij(p3mat,nhstepma,age,hstepm,x,nlstate,stepm,oldm, savm, cij); |
| hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ | hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
| Line 2562 void cvevsij(char fileres[], double ***e | Line 2582 void cvevsij(char fileres[], double ***e |
| to initial status i, ei. . | to initial status i, ei. . |
| */ | */ |
| int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2, ij, ji; | int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2, ij, ji; |
| int nhstepma, nstepma; /* Decreasing with age */ | |
| double age, agelim, hf; | double age, agelim, hf; |
| double ***p3matp, ***p3matm, ***varhe; | double ***p3matp, ***p3matm, ***varhe; |
| double **dnewm,**doldm; | double **dnewm,**doldm; |
| Line 2635 void cvevsij(char fileres[], double ***e | Line 2656 void cvevsij(char fileres[], double ***e |
| /* If stepm=6 months */ | /* If stepm=6 months */ |
| /* nhstepm age range expressed in number of stepm */ | /* nhstepm age range expressed in number of stepm */ |
| agelim=AGESUP; | agelim=AGESUP; |
| nstepm=(int) rint((agelim-age)*YEARM/stepm); | nstepm=(int) rint((agelim-bage)*YEARM/stepm); |
| /* Typically if 20 years nstepm = 20*12/6=40 stepm */ | /* Typically if 20 years nstepm = 20*12/6=40 stepm */ |
| /* if (stepm >= YEARM) hstepm=1;*/ | /* if (stepm >= YEARM) hstepm=1;*/ |
| nhstepm = nstepm/hstepm;/* Expressed in hstepm, typically nhstepm=40/4=10 */ | nhstepm = nstepm/hstepm;/* Expressed in hstepm, typically nhstepm=40/4=10 */ |
| Line 2648 void cvevsij(char fileres[], double ***e | Line 2669 void cvevsij(char fileres[], double ***e |
| gm=matrix(0,nhstepm,1,nlstate*nlstate); | gm=matrix(0,nhstepm,1,nlstate*nlstate); |
| for (age=bage; age<=fage; age ++){ | for (age=bage; age<=fage; age ++){ |
| nstepma=(int) rint((agelim-bage)*YEARM/stepm); /* Biggest nstepm */ | |
| /* Computed by stepm unit matrices, product of hstepm matrices, stored | /* Typically if 20 years nstepm = 20*12/6=40 stepm */ |
| in an array of nhstepm length: nhstepm=10, hstepm=4, stepm=6 months */ | /* if (stepm >= YEARM) hstepm=1;*/ |
| nhstepma = nstepma/hstepm;/* Expressed in hstepm, typically nhstepma=40/4=10 */ | |
| /* If stepm=6 months */ | |
| /* Computed by stepm unit matrices, product of hstepma matrices, stored | |
| in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ | |
| 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 */ |
| Line 2702 void cvevsij(char fileres[], double ***e | Line 2728 void cvevsij(char fileres[], double ***e |
| varhe[ij][ji][(int)age] += doldm[ij][ji]*hf*hf; | varhe[ij][ji][(int)age] += doldm[ij][ji]*hf*hf; |
| } | } |
| } | } |
| /* Computing expectancies */ | /* Computing expectancies */ |
| hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij); | hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij); |
| for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) |
| Line 3485 void printinghtml(char fileres[], char t | Line 3512 void printinghtml(char fileres[], char t |
| subdirf2(fileres,"pl"),subdirf2(fileres,"pl")); | subdirf2(fileres,"pl"),subdirf2(fileres,"pl")); |
| fprintf(fichtm,"\ | fprintf(fichtm,"\ |
| - (a) Life expectancies by health status at initial age, (b) health expectancies by health status at initial age: ei., eij . If one or more covariate are included, specific tables for each value of the covariate are output in sequences within the same file (estepm=%2d months): \ | - (a) Life expectancies by health status at initial age, (b) health expectancies by health status at initial age: ei., eij . If one or more covariate are included, specific tables for each value of the covariate are output in sequences within the same file (estepm=%2d months): \ |
| <a href=\"%s\">%s</a> <br>\n</li>", | <a href=\"%s\">%s</a> <br>\n", |
| estepm,subdirf2(fileres,"e"),subdirf2(fileres,"e")); | estepm,subdirf2(fileres,"e"),subdirf2(fileres,"e")); |
| fprintf(fichtm,"\ | |
| - Population projections by age and states: \ | |
| <a href=\"%s\">%s</a> <br>\n</li>", subdirf2(fileres,"f"),subdirf2(fileres,"f")); | |
| fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); | fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |