version 1.123, 2006/03/20 10:52:43
|
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 |
|
Parameters are printed with %lf instead of %f (more numbers after the comma). |
|
The log-likelihood is printed in the log file |
|
|
Revision 1.123 2006/03/20 10:52:43 brouard |
Revision 1.123 2006/03/20 10:52:43 brouard |
* imach.c (Module): <title> changed, corresponds to .htm file |
* imach.c (Module): <title> changed, corresponds to .htm file |
name. <head> headers where missing. |
name. <head> headers where missing. |
Line 360 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 1001 void powell(double p[], double **xi, int
|
Line 1015 void powell(double p[], double **xi, int
|
last_time=curr_time; |
last_time=curr_time; |
(void) gettimeofday(&curr_time,&tzp); |
(void) gettimeofday(&curr_time,&tzp); |
printf("\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec);fflush(stdout); |
printf("\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec);fflush(stdout); |
/* fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec); |
fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, curr_time.tv_sec-last_time.tv_sec, curr_time.tv_sec-start_time.tv_sec); fflush(ficlog); |
fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tv_sec-start_time.tv_sec); |
/* fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tv_sec-start_time.tv_sec); */ |
*/ |
|
for (i=1;i<=n;i++) { |
for (i=1;i<=n;i++) { |
printf(" %d %.12f",i, p[i]); |
printf(" %d %.12f",i, p[i]); |
fprintf(ficlog," %d %.12lf",i, p[i]); |
fprintf(ficlog," %d %.12lf",i, p[i]); |
Line 2459 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 2505 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 2558 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 2631 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 2644 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 2698 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 3481 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>"); |
|
|
Line 5357 Interval (in months) between two waves:
|
Line 5390 Interval (in months) between two waves:
|
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("%lf ",p[jk]); |
fprintf(ficlog,"%f ",p[jk]); |
fprintf(ficlog,"%lf ",p[jk]); |
fprintf(ficres,"%f ",p[jk]); |
fprintf(ficres,"%lf ",p[jk]); |
jk++; |
jk++; |
} |
} |
printf("\n"); |
printf("\n"); |