|
|
| version 1.72, 2003/03/28 13:33:56 | 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.93, 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#******"); |