version 1.71, 2003/03/28 13:32:54
|
version 1.73, 2003/04/08 14:06:50
|
Line 83
|
Line 83
|
#define ODIRSEPARATOR '\\' |
#define ODIRSEPARATOR '\\' |
#endif |
#endif |
|
|
char version[80]="Imach version 0.92, February 2003, INED-EUROREVES "; |
char version[80]="Imach version 0.94, February 2003, INED-EUROREVES "; |
int erreur; /* Error number */ |
int erreur; /* Error number */ |
int nvar; |
int nvar; |
int cptcovn=0, cptcovage=0, cptcoveff=0,cptcov; |
int cptcovn=0, cptcovage=0, cptcoveff=0,cptcov; |
Line 1429 void freqsummary(char fileres[], int ag
|
Line 1429 void freqsummary(char fileres[], int ag
|
int i, m, jk, k1,i1, j1, bool, z1,z2,j; |
int i, m, jk, k1,i1, j1, bool, z1,z2,j; |
int first; |
int first; |
double ***freq; /* Frequencies */ |
double ***freq; /* Frequencies */ |
double *pp; |
double *pp, **prop; |
double pos, k2, dateintsum=0,k2cpt=0; |
double pos,posprop, k2, dateintsum=0,k2cpt=0; |
FILE *ficresp; |
FILE *ficresp; |
char fileresp[FILENAMELENGTH]; |
char fileresp[FILENAMELENGTH]; |
|
|
pp=vector(1,nlstate); |
pp=vector(1,nlstate); |
|
prop=matrix(1,nlstate,agemin,agemax+3); |
probs= ma3x(1,AGESUP,1,NCOVMAX, 1,NCOVMAX); |
probs= ma3x(1,AGESUP,1,NCOVMAX, 1,NCOVMAX); |
strcpy(fileresp,"p"); |
strcpy(fileresp,"p"); |
strcat(fileresp,fileres); |
strcat(fileresp,fileres); |
Line 1460 void freqsummary(char fileres[], int ag
|
Line 1461 void freqsummary(char fileres[], int ag
|
for (jk=-1; jk<=nlstate+ndeath; jk++) |
for (jk=-1; jk<=nlstate+ndeath; jk++) |
for(m=agemin; m <= agemax+3; m++) |
for(m=agemin; m <= agemax+3; m++) |
freq[i][jk][m]=0; |
freq[i][jk][m]=0; |
|
|
|
for (i=1; i<=nlstate; i++) |
|
for(m=agemin; m <= agemax+3; m++) |
|
prop[i][m]=0; |
|
|
dateintsum=0; |
dateintsum=0; |
k2cpt=0; |
k2cpt=0; |
Line 1476 void freqsummary(char fileres[], int ag
|
Line 1481 void freqsummary(char fileres[], int ag
|
if ((k2>=dateprev1) && (k2<=dateprev2)) { |
if ((k2>=dateprev1) && (k2<=dateprev2)) { |
if(agev[m][i]==0) agev[m][i]=agemax+1; |
if(agev[m][i]==0) agev[m][i]=agemax+1; |
if(agev[m][i]==1) agev[m][i]=agemax+2; |
if(agev[m][i]==1) agev[m][i]=agemax+2; |
|
if (s[m][i]>0 && s[m][i]<=nlstate) prop[s[m][i]][(int)agev[m][i]] += weight[i]; |
if (m<lastpass) { |
if (m<lastpass) { |
freq[s[m][i]][s[m+1][i]][(int)agev[m][i]] += weight[i]; |
freq[s[m][i]][s[m+1][i]][(int)agev[m][i]] += weight[i]; |
freq[s[m][i]][s[m+1][i]][(int) agemax+3] += weight[i]; |
freq[s[m][i]][s[m+1][i]][(int) agemax+3] += weight[i]; |
Line 1533 void freqsummary(char fileres[], int ag
|
Line 1539 void freqsummary(char fileres[], int ag
|
for(jk=1; jk <=nlstate ; jk++){ |
for(jk=1; jk <=nlstate ; jk++){ |
for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++) |
for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++) |
pp[jk] += freq[jk][m][i]; |
pp[jk] += freq[jk][m][i]; |
} |
} |
|
for(jk=1,pos=0,posprop=0; jk <=nlstate ; jk++){ |
for(jk=1,pos=0; jk <=nlstate ; jk++) |
|
pos += pp[jk]; |
pos += pp[jk]; |
|
posprop += prop[jk][i]; |
|
} |
for(jk=1; jk <=nlstate ; jk++){ |
for(jk=1; jk <=nlstate ; jk++){ |
if(pos>=1.e-5){ |
if(pos>=1.e-5){ |
if(first==1) |
if(first==1) |
Line 1549 void freqsummary(char fileres[], int ag
|
Line 1556 void freqsummary(char fileres[], int ag
|
} |
} |
if( i <= (int) agemax){ |
if( i <= (int) agemax){ |
if(pos>=1.e-5){ |
if(pos>=1.e-5){ |
fprintf(ficresp," %d %.5f %.0f %.0f",i,pp[jk]/pos, pp[jk],pos); |
fprintf(ficresp," %d %.5f %.0f %.0f",i,prop[jk][i]/posprop, prop[jk][i],posprop); |
probs[i][jk][j1]= pp[jk]/pos; |
probs[i][jk][j1]= pp[jk]/pos; |
/*printf("\ni=%d jk=%d j1=%d %.5f %.0f %.0f %f",i,jk,j1,pp[jk]/pos, pp[jk],pos,probs[i][jk][j1]);*/ |
/*printf("\ni=%d jk=%d j1=%d %.5f %.0f %.0f %f",i,jk,j1,pp[jk]/pos, pp[jk],pos,probs[i][jk][j1]);*/ |
} |
} |
else |
else |
fprintf(ficresp," %d NaNq %.0f %.0f",i,pp[jk],pos); |
fprintf(ficresp," %d NaNq %.0f %.0f",i,prop[jk][i],posprop); |
} |
} |
} |
} |
|
|
Line 1578 void freqsummary(char fileres[], int ag
|
Line 1585 void freqsummary(char fileres[], int ag
|
fclose(ficresp); |
fclose(ficresp); |
free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath,(int) agemin,(int) agemax+3); |
free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath,(int) agemin,(int) agemax+3); |
free_vector(pp,1,nlstate); |
free_vector(pp,1,nlstate); |
|
free_matrix(prop,1,nlstate,(int) agemin,(int) agemax+3); |
/* End of Freq */ |
/* End of Freq */ |
} |
} |
|
|
Line 1592 void prevalence(int agemin, float agemax
|
Line 1599 void prevalence(int agemin, float agemax
|
|
|
int i, m, jk, k1, i1, j1, bool, z1,z2,j; |
int i, m, jk, k1, i1, j1, bool, z1,z2,j; |
double ***freq; /* Frequencies */ |
double ***freq; /* Frequencies */ |
double *pp; |
double *pp, **prop; |
double pos; |
double pos,posprop; |
double y2; /* in fractional years */ |
double y2; /* in fractional years */ |
|
|
pp=vector(1,nlstate); |
pp=vector(1,nlstate); |
|
prop=matrix(1,nlstate,agemin,agemax+3); |
freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,agemin,agemax+3); |
freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,agemin,agemax+3); |
j1=0; |
j1=0; |
|
|
Line 1608 void prevalence(int agemin, float agemax
|
Line 1615 void prevalence(int agemin, float agemax
|
for(i1=1; i1<=ncodemax[k1];i1++){ |
for(i1=1; i1<=ncodemax[k1];i1++){ |
j1++; |
j1++; |
|
|
for (i=-1; i<=nlstate+ndeath; i++) |
for (i=1; i<=nlstate; i++) |
for (jk=-1; jk<=nlstate+ndeath; jk++) |
for(m=agemin; m <= agemax+3; m++) |
for(m=agemin; m <= agemax+3; m++) |
prop[i][m]=0; |
freq[i][jk][m]=0; |
|
|
|
for (i=1; i<=imx; i++) { /* Each individual */ |
for (i=1; i<=imx; i++) { /* Each individual */ |
bool=1; |
bool=1; |
Line 1626 void prevalence(int agemin, float agemax
|
Line 1632 void prevalence(int agemin, float agemax
|
if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */ |
if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */ |
if(agev[m][i]==0) agev[m][i]=agemax+1; |
if(agev[m][i]==0) agev[m][i]=agemax+1; |
if(agev[m][i]==1) agev[m][i]=agemax+2; |
if(agev[m][i]==1) agev[m][i]=agemax+2; |
if (m<lastpass) { |
if (s[m][i]>0 && s[m][i]<=nlstate) { |
freq[s[m][i]][s[m+1][i]][(int)agev[m][i]] += weight[i]; |
prop[s[m][i]][(int)agev[m][i]] += weight[i]; |
freq[s[m][i]][s[m+1][i]][(int)(agemax+3)] += weight[i]; |
prop[s[m][i]][(int)(agemax+3)] += weight[i]; |
} |
} |
} |
} |
} /* end selection of waves */ |
} /* end selection of waves */ |
} |
} |
} |
} |
for(i=(int)agemin; i <= (int)agemax+3; i++){ |
for(i=(int)agemin; i <= (int)agemax+3; i++){ |
for(jk=1; jk <=nlstate ; jk++){ |
|
for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++) |
|
pp[jk] += freq[jk][m][i]; |
|
} |
|
for(jk=1; jk <=nlstate ; jk++){ |
|
for(m=-1, pos=0; m <=0 ; m++) |
|
pos += freq[jk][m][i]; |
|
} |
|
|
|
for(jk=1; jk <=nlstate ; jk++){ |
for(jk=1,posprop=0; jk <=nlstate ; jk++) { |
for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++) |
posprop += prop[jk][i]; |
pp[jk] += freq[jk][m][i]; |
|
} |
} |
|
|
for(jk=1,pos=0; jk <=nlstate ; jk++) pos += pp[jk]; |
|
|
|
for(jk=1; jk <=nlstate ; jk++){ |
for(jk=1; jk <=nlstate ; jk++){ |
if( i <= (int) agemax){ |
if( i <= (int) agemax){ |
if(pos>=1.e-5){ |
if(posprop>=1.e-5){ |
probs[i][jk][j1]= pp[jk]/pos; |
probs[i][jk][j1]= prop[jk][i]/posprop; |
} |
} |
} |
} |
}/* end jk */ |
}/* end jk */ |
Line 1665 void prevalence(int agemin, float agemax
|
Line 1660 void prevalence(int agemin, float agemax
|
|
|
free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath,(int) agemin,(int) agemax+3); |
free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath,(int) agemin,(int) agemax+3); |
free_vector(pp,1,nlstate); |
free_vector(pp,1,nlstate); |
|
free_matrix(prop,1,nlstate,(int) agemin,(int) agemax+3); |
} /* End of Freq */ |
} /* End of Freq */ |
|
|
/************* Waves Concatenation ***************/ |
/************* Waves Concatenation ***************/ |
Line 1744 void concatwav(int wav[], int **dh, int
|
Line 1739 void concatwav(int wav[], int **dh, int
|
if (j >= jmax) jmax=j; |
if (j >= jmax) jmax=j; |
else if (j <= jmin)jmin=j; |
else if (j <= jmin)jmin=j; |
/* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ |
/* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ |
|
/*printf("%d %lf %d %d %d\n", i,agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]);*/ |
sum=sum+j; |
sum=sum+j; |
} |
} |
jk= j/stepm; |
jk= j/stepm; |
Line 3048 prevforecast(char fileres[], double anpr
|
Line 3044 prevforecast(char fileres[], double anpr
|
dateprev1 dateprev2 range of dates during which prevalence is computed |
dateprev1 dateprev2 range of dates during which prevalence is computed |
anproj2 year of en of projection (same day and month as proj1). |
anproj2 year of en of projection (same day and month as proj1). |
*/ |
*/ |
int yearp, stepsize, hstepm, nhstepm, j, k, c, cptcod, i, h; |
int yearp, stepsize, hstepm, nhstepm, j, k, c, cptcod, i, h, i1; |
int *popage; |
int *popage; |
double agec; /* generic age */ |
double agec; /* generic age */ |
double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; |
double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; |
Line 3093 prevforecast(char fileres[], double anpr
|
Line 3089 prevforecast(char fileres[], double anpr
|
jprojmean=yp; |
jprojmean=yp; |
if(jprojmean==0) jprojmean=1; |
if(jprojmean==0) jprojmean=1; |
if(mprojmean==0) jprojmean=1; |
if(mprojmean==0) jprojmean=1; |
|
|
|
i1=cptcoveff; |
|
if (cptcovn < 1){i1=1;} |
|
|
fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); |
fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); |
|
|
fprintf(ficresf,"#****** Routine prevforecast **\n"); |
fprintf(ficresf,"#****** Routine prevforecast **\n"); |
for(cptcov=1, k=0;cptcov<=cptcoveff;cptcov++){ |
|
|
for(cptcov=1, k=0;cptcov<=i1;cptcov++){ |
for(cptcod=1;cptcod<=ncodemax[cptcoveff];cptcod++){ |
for(cptcod=1;cptcod<=ncodemax[cptcoveff];cptcod++){ |
k=k+1; |
k=k+1; |
fprintf(ficresf,"\n#******"); |
fprintf(ficresf,"\n#******"); |