|
|
| version 1.250, 2016/09/08 16:07:27 | version 1.259, 2017/04/04 13:01:16 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.259 2017/04/04 13:01:16 brouard | |
| Summary: Some errors to warnings only if date of death is unknown but status is death we could set to pi3 | |
| Revision 1.258 2017/04/03 10:17:47 brouard | |
| Summary: Version 0.99r12 | |
| Some cleanings, conformed with updated documentation. | |
| Revision 1.257 2017/03/29 16:53:30 brouard | |
| Summary: Temp | |
| Revision 1.256 2017/03/27 05:50:23 brouard | |
| Summary: Temporary | |
| Revision 1.255 2017/03/08 16:02:28 brouard | |
| Summary: IMaCh version 0.99r10 bugs in gnuplot fixed | |
| Revision 1.254 2017/03/08 07:13:00 brouard | |
| Summary: Fixing data parameter line | |
| Revision 1.253 2016/12/15 11:59:41 brouard | |
| Summary: 0.99 in progress | |
| Revision 1.252 2016/09/15 21:15:37 brouard | |
| *** empty log message *** | |
| Revision 1.251 2016/09/15 15:01:13 brouard | |
| Summary: not working | |
| Revision 1.250 2016/09/08 16:07:27 brouard | Revision 1.250 2016/09/08 16:07:27 brouard |
| Summary: continue | Summary: continue |
| Line 125 | Line 154 |
| Author: Nicolas Brouard | Author: Nicolas Brouard |
| Revision 1.210 2015/11/18 17:41:20 brouard | Revision 1.210 2015/11/18 17:41:20 brouard |
| Summary: Start working on projected prevalences | Summary: Start working on projected prevalences Revision 1.209 2015/11/17 22:12:03 brouard |
| Revision 1.209 2015/11/17 22:12:03 brouard | |
| Summary: Adding ftolpl parameter | Summary: Adding ftolpl parameter |
| Author: N Brouard | Author: N Brouard |
| Line 915 typedef struct { | Line 942 typedef struct { |
| /* #include <libintl.h> */ | /* #include <libintl.h> */ |
| /* #define _(String) gettext (String) */ | /* #define _(String) gettext (String) */ |
| #define MAXLINE 1024 /* Was 256. Overflow with 312 with 2 states and 4 covariates. Should be ok */ | #define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */ |
| #define GNUPLOTPROGRAM "gnuplot" | #define GNUPLOTPROGRAM "gnuplot" |
| /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ | /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
| Line 1158 int *TvarsQind; | Line 1185 int *TvarsQind; |
| #define MAXRESULTLINES 10 | #define MAXRESULTLINES 10 |
| int nresult=0; | int nresult=0; |
| int parameterline=0; /* # of the parameter (type) line */ | |
| int TKresult[MAXRESULTLINES]; | int TKresult[MAXRESULTLINES]; |
| int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ | int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
| int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ | int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
| Line 2390 void powell(double p[], double **xi, int | Line 2418 void powell(double p[], double **xi, int |
| flatd++; | flatd++; |
| } | } |
| if(flatd >0){ | if(flatd >0){ |
| printf("%d flat directions\n",flatd); | printf("%d flat directions: ",flatd); |
| fprintf(ficlog,"%d flat directions\n",flatd); | fprintf(ficlog,"%d flat directions :",flatd); |
| for (j=1;j<=n;j++) { | for (j=1;j<=n;j++) { |
| if(flatdir[j]>0){ | if(flatdir[j]>0){ |
| printf("%d ",j); | printf("%d ",j); |
| Line 4119 void ludcmp(double **a, int n, int *indx | Line 4147 void ludcmp(double **a, int n, int *indx |
| big=0.0; | big=0.0; |
| for (j=1;j<=n;j++) | for (j=1;j<=n;j++) |
| if ((temp=fabs(a[i][j])) > big) big=temp; | if ((temp=fabs(a[i][j])) > big) big=temp; |
| if (big == 0.0) nrerror("Singular matrix in routine ludcmp"); | if (big == 0.0){ |
| printf(" Singular Hessian matrix at row %d:\n",i); | |
| for (j=1;j<=n;j++) { | |
| printf(" a[%d][%d]=%f,",i,j,a[i][j]); | |
| fprintf(ficlog," a[%d][%d]=%f,",i,j,a[i][j]); | |
| } | |
| fflush(ficlog); | |
| fclose(ficlog); | |
| nrerror("Singular matrix in routine ludcmp"); | |
| } | |
| vv[i]=1.0/big; | vv[i]=1.0/big; |
| } | } |
| for (j=1;j<=n;j++) { | for (j=1;j<=n;j++) { |
| Line 4185 void pstamp(FILE *fichier) | Line 4222 void pstamp(FILE *fichier) |
| fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); | fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); |
| } | } |
| int linreg(int ifi, int ila, int *no, const double x[], const double y[], double* a, double* b, double* r, double* sa, double * sb) { | |
| /* y=a+bx regression */ | |
| double sumx = 0.0; /* sum of x */ | |
| double sumx2 = 0.0; /* sum of x**2 */ | |
| double sumxy = 0.0; /* sum of x * y */ | |
| double sumy = 0.0; /* sum of y */ | |
| double sumy2 = 0.0; /* sum of y**2 */ | |
| double sume2; /* sum of square or residuals */ | |
| double yhat; | |
| double denom=0; | |
| int i; | |
| int ne=*no; | |
| for ( i=ifi, ne=0;i<=ila;i++) { | |
| if(!isfinite(x[i]) || !isfinite(y[i])){ | |
| /* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */ | |
| continue; | |
| } | |
| ne=ne+1; | |
| sumx += x[i]; | |
| sumx2 += x[i]*x[i]; | |
| sumxy += x[i] * y[i]; | |
| sumy += y[i]; | |
| sumy2 += y[i]*y[i]; | |
| denom = (ne * sumx2 - sumx*sumx); | |
| /* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */ | |
| } | |
| denom = (ne * sumx2 - sumx*sumx); | |
| if (denom == 0) { | |
| // vertical, slope m is infinity | |
| *b = INFINITY; | |
| *a = 0; | |
| if (r) *r = 0; | |
| return 1; | |
| } | |
| *b = (ne * sumxy - sumx * sumy) / denom; | |
| *a = (sumy * sumx2 - sumx * sumxy) / denom; | |
| if (r!=NULL) { | |
| *r = (sumxy - sumx * sumy / ne) / /* compute correlation coeff */ | |
| sqrt((sumx2 - sumx*sumx/ne) * | |
| (sumy2 - sumy*sumy/ne)); | |
| } | |
| *no=ne; | |
| for ( i=ifi, ne=0;i<=ila;i++) { | |
| if(!isfinite(x[i]) || !isfinite(y[i])){ | |
| /* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */ | |
| continue; | |
| } | |
| ne=ne+1; | |
| yhat = y[i] - *a -*b* x[i]; | |
| sume2 += yhat * yhat ; | |
| denom = (ne * sumx2 - sumx*sumx); | |
| /* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */ | |
| } | |
| *sb = sqrt(sume2/(ne-2)/(sumx2 - sumx * sumx /ne)); | |
| *sa= *sb * sqrt(sumx2/ne); | |
| return 0; | |
| } | |
| /************ Frequencies ********************/ | /************ Frequencies ********************/ |
| void freqsummary(char fileres[], double p[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \ | void freqsummary(char fileres[], double p[], double pstart[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \ |
| int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ | int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ |
| int firstpass, int lastpass, int stepm, int weightopt, char model[]) | int firstpass, int lastpass, int stepm, int weightopt, char model[]) |
| { /* Some frequencies as well as proposing some starting values */ | { /* Some frequencies as well as proposing some starting values */ |
| int i, m, jk, j1, bool, z1,j, k, iv, jj=0; | int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0; |
| int iind=0, iage=0; | int iind=0, iage=0; |
| int mi; /* Effective wave */ | int mi; /* Effective wave */ |
| int first; | int first; |
| double ***freq; /* Frequencies */ | double ***freq; /* Frequencies */ |
| double *x, *y, a,b,r, sa, sb; /* for regression, y=b+m*x and r is the correlation coefficient */ | |
| int no; | |
| double *meanq; | double *meanq; |
| double **meanqt; | double **meanqt; |
| double *pp, **prop, *posprop, *pospropt; | double *pp, **prop, *posprop, *pospropt; |
| Line 4204 void freqsummary(char fileres[], double | Line 4308 void freqsummary(char fileres[], double |
| double agebegin, ageend; | double agebegin, ageend; |
| pp=vector(1,nlstate); | pp=vector(1,nlstate); |
| prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE); | prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
| posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ | posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ |
| pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ | pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ |
| /* prop=matrix(1,nlstate,iagemin,iagemax+3); */ | /* prop=matrix(1,nlstate,iagemin,iagemax+3); */ |
| Line 4248 Title=%s <br>Datafile=%s Firstpass=%d La | Line 4352 Title=%s <br>Datafile=%s Firstpass=%d La |
| } | } |
| fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr); | fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr); |
| freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+3+AGEMARGE); | y= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
| x= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); | |
| freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+4+AGEMARGE); | |
| j1=0; | j1=0; |
| /* j=ncoveff; /\* Only fixed dummy covariates *\/ */ | /* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
| Line 4265 Title=%s <br>Datafile=%s Firstpass=%d La | Line 4371 Title=%s <br>Datafile=%s Firstpass=%d La |
| dateintsum=0; | dateintsum=0; |
| k2cpt=0; | k2cpt=0; |
| for (j = 0; j <= cptcoveff; j+=cptcoveff){ | if(cptcoveff == 0 ) |
| first=1; | nl=1; /* Constant model only */ |
| for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */ | else |
| posproptt=0.; | nl=2; |
| /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); | for (nj = 1; nj <= nl; nj++){ /* nj= 1 constant model, nl number of loops. */ |
| scanf("%d", i);*/ | if(nj==1) |
| for (i=-5; i<=nlstate+ndeath; i++) | j=0; /* First pass for the constant */ |
| for (jk=-5; jk<=nlstate+ndeath; jk++) | else |
| j=cptcoveff; /* Other passes for the covariate values */ | |
| first=1; | |
| for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */ | |
| posproptt=0.; | |
| /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); | |
| scanf("%d", i);*/ | |
| for (i=-5; i<=nlstate+ndeath; i++) | |
| for (jk=-5; jk<=nlstate+ndeath; jk++) | |
| for(m=iagemin; m <= iagemax+3; m++) | |
| freq[i][jk][m]=0; | |
| for (i=1; i<=nlstate; i++) { | |
| for(m=iagemin; m <= iagemax+3; m++) | for(m=iagemin; m <= iagemax+3; m++) |
| freq[i][jk][m]=0; | prop[i][m]=0; |
| posprop[i]=0; | |
| for (i=1; i<=nlstate; i++) { | pospropt[i]=0; |
| for(m=iagemin; m <= iagemax+3; m++) | } |
| prop[i][m]=0; | /* for (z1=1; z1<= nqfveff; z1++) { */ |
| posprop[i]=0; | /* meanq[z1]+=0.; */ |
| pospropt[i]=0; | /* for(m=1;m<=lastpass;m++){ */ |
| } | /* meanqt[m][z1]=0.; */ |
| /* for (z1=1; z1<= nqfveff; z1++) { */ | /* } */ |
| /* meanq[z1]+=0.; */ | /* } */ |
| /* for(m=1;m<=lastpass;m++){ */ | |
| /* meanqt[m][z1]=0.; */ | /* dateintsum=0; */ |
| /* } */ | /* k2cpt=0; */ |
| /* } */ | |
| /* For that combination of covariate j1, we count and print the frequencies in one pass */ | |
| /* dateintsum=0; */ | for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
| /* k2cpt=0; */ | bool=1; |
| if(j !=0){ | |
| /* For that combination of covariate j1, we count and print the frequencies in one pass */ | if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
| for (iind=1; iind<=imx; iind++) { /* For each individual iind */ | if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
| bool=1; | /* for (z1=1; z1<= nqfveff; z1++) { */ |
| if(j !=0){ | /* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ |
| if(anyvaryingduminmodel==0){ /* If All fixed covariates */ | /* } */ |
| if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ | for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */ |
| /* for (z1=1; z1<= nqfveff; z1++) { */ | /* if(Tvaraff[z1] ==-20){ */ |
| /* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ | /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
| /* } */ | /* }else if(Tvaraff[z1] ==-10){ */ |
| for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */ | /* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
| /* if(Tvaraff[z1] ==-20){ */ | /* }else */ |
| /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ | if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */ |
| /* }else if(Tvaraff[z1] ==-10){ */ | /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */ |
| /* /\* sumnew+=coqvar[z1][iind]; *\/ */ | bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ |
| /* }else */ | /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */ | bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), |
| /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */ | j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ |
| bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ | /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
| /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", | } /* Onlyf fixed */ |
| bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), | } /* end z1 */ |
| j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ | } /* cptcovn > 0 */ |
| /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ | } /* end any */ |
| } /* Onlyf fixed */ | }/* end j==0 */ |
| } /* end z1 */ | if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
| } /* cptcovn > 0 */ | /* for(m=firstpass; m<=lastpass; m++){ */ |
| } /* end any */ | for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
| }/* end j==0 */ | m=mw[mi][iind]; |
| if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ | if(j!=0){ |
| /* for(m=firstpass; m<=lastpass; m++){ */ | if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
| for(mi=1; mi<wav[iind];mi++){ /* For that wave */ | for (z1=1; z1<=cptcoveff; z1++) { |
| m=mw[mi][iind]; | if( Fixed[Tmodelind[z1]]==1){ |
| if(j!=0){ | iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
| if(anyvaryingduminmodel==1){ /* Some are varying covariates */ | if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's |
| for (z1=1; z1<=cptcoveff; z1++) { | value is -1, we don't select. It differs from the |
| if( Fixed[Tmodelind[z1]]==1){ | constant and age model which counts them. */ |
| iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; | bool=0; /* not selected */ |
| if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's | }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
| value is -1, we don't select. It differs from the | if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
| constant and age model which counts them. */ | bool=0; |
| bool=0; /* not selected */ | } |
| }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ | } |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { | |
| bool=0; | |
| } | } |
| }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ | |
| } /* end j==0 */ | |
| /* bool =0 we keep that guy which corresponds to the combination of dummy values */ | |
| if(bool==1){ | |
| /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] | |
| and mw[mi+1][iind]. dh depends on stepm. */ | |
| agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/ | |
| ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */ | |
| if(m >=firstpass && m <=lastpass){ | |
| k2=anint[m][iind]+(mint[m][iind]/12.); | |
| /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/ | |
| if(agev[m][iind]==0) agev[m][iind]=iagemax+1; /* All ages equal to 0 are in iagemax+1 */ | |
| if(agev[m][iind]==1) agev[m][iind]=iagemax+2; /* All ages equal to 1 are in iagemax+2 */ | |
| if (s[m][iind]>0 && s[m][iind]<=nlstate) /* If status at wave m is known and a live state */ | |
| prop[s[m][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ | |
| if (m<lastpass) { | |
| /* if(s[m][iind]==4 && s[m+1][iind]==4) */ | |
| /* printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */ | |
| if(s[m][iind]==-1) | |
| printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.)); | |
| freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ | |
| /* if((int)agev[m][iind] == 55) */ | |
| /* printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */ | |
| /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */ | |
| freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */ | |
| } | |
| } /* end if between passes */ | |
| if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) { | |
| dateintsum=dateintsum+k2; /* on all covariates ?*/ | |
| k2cpt++; | |
| /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ | |
| } | } |
| } | }else{ |
| }/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ | bool=1; |
| } /* end j==0 */ | }/* end bool 2 */ |
| /* bool =0 we keep that guy which corresponds to the combination of dummy values */ | } /* end m */ |
| if(bool==1){ | } /* end bool */ |
| /* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] | } /* end iind = 1 to imx */ |
| and mw[mi+1][iind]. dh depends on stepm. */ | /* prop[s][age] is feeded for any initial and valid live state as well as |
| agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/ | freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ |
| ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */ | |
| if(m >=firstpass && m <=lastpass){ | |
| k2=anint[m][iind]+(mint[m][iind]/12.); | /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
| /*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/ | pstamp(ficresp); |
| if(agev[m][iind]==0) agev[m][iind]=iagemax+1; /* All ages equal to 0 are in iagemax+1 */ | if (cptcoveff>0 && j!=0){ |
| if(agev[m][iind]==1) agev[m][iind]=iagemax+2; /* All ages equal to 1 are in iagemax+2 */ | printf( "\n#********** Variable "); |
| if (s[m][iind]>0 && s[m][iind]<=nlstate) /* If status at wave m is known and a live state */ | fprintf(ficresp, "\n#********** Variable "); |
| prop[s[m][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ | fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
| if (m<lastpass) { | fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
| /* if(s[m][iind]==4 && s[m+1][iind]==4) */ | fprintf(ficlog, "\n#********** Variable "); |
| /* printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind]); */ | for (z1=1; z1<=cptcoveff; z1++){ |
| if(s[m][iind]==-1) | if(!FixedV[Tvaraff[z1]]){ |
| printf(" num=%ld m=%d, iind=%d s1=%d s2=%d agev at m=%d agebegin=%.2f ageend=%.2f, agemed=%d\n", num[iind], m, iind,s[m][iind],s[m+1][iind], (int)agev[m][iind],agebegin, ageend, (int)((agebegin+ageend)/2.)); | printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ | fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| /* if((int)agev[m][iind] == 55) */ | fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| /* printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */ | fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| /* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */ | fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */ | |
| } | |
| } /* end if between passes */ | |
| if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) { | |
| dateintsum=dateintsum+k2; /* on all covariates ?*/ | |
| k2cpt++; | |
| /* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ | |
| } | |
| }else{ | }else{ |
| bool=1; | printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| }/* end bool 2 */ | fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| } /* end m */ | fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| } /* end bool */ | fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| } /* end iind = 1 to imx */ | fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
| /* prop[s][age] is feeded for any initial and valid live state as well as | } |
| freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ | } |
| printf( "**********\n#"); | |
| fprintf(ficresp, "**********\n#"); | |
| /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ | fprintf(ficresphtm, "**********</h3>\n"); |
| pstamp(ficresp); | fprintf(ficresphtmfr, "**********</h3>\n"); |
| if (cptcoveff>0 && j!=0){ | fprintf(ficlog, "**********\n"); |
| fprintf(ficresp, "\n#********** Variable "); | } |
| fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); | fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
| fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); | for(i=1; i<=nlstate;i++) { |
| fprintf(ficlog, "\n#********** Variable "); | fprintf(ficresp, " Age Prev(%d) N(%d) N ",i,i); |
| for (z1=1; z1<=cptcoveff; z1++){ | fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
| if(DummyV[z1]){ | } |
| fprintf(ficresp, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | fprintf(ficresp, "\n"); |
| fprintf(ficresphtm, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | fprintf(ficresphtm, "\n"); |
| fprintf(ficresphtmfr, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | |
| fprintf(ficlog, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | /* Header of frequency table by age */ |
| }else{ | fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">"); |
| fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | fprintf(ficresphtmfr,"<th>Age</th> "); |
| fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | for(jk=-1; jk <=nlstate+ndeath; jk++){ |
| fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | for(m=-1; m <=nlstate+ndeath; m++){ |
| fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); | if(jk!=0 && m!=0) |
| } | fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m); |
| } | |
| fprintf(ficresp, "**********\n#"); | |
| fprintf(ficresphtm, "**********</h3>\n"); | |
| fprintf(ficresphtmfr, "**********</h3>\n"); | |
| fprintf(ficlog, "**********\n"); | |
| } | |
| fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); | |
| for(i=1; i<=nlstate;i++) { | |
| fprintf(ficresp, " Age Prev(%d) N(%d) N ",i,i); | |
| fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); | |
| } | |
| fprintf(ficresp, "\n"); | |
| fprintf(ficresphtm, "\n"); | |
| /* Header of frequency table by age */ | |
| fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">"); | |
| fprintf(ficresphtmfr,"<th>Age</th> "); | |
| for(jk=-1; jk <=nlstate+ndeath; jk++){ | |
| for(m=-1; m <=nlstate+ndeath; m++){ | |
| if(jk!=0 && m!=0) | |
| fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m); | |
| } | |
| } | |
| fprintf(ficresphtmfr, "\n"); | |
| /* For each age */ | |
| for(iage=iagemin; iage <= iagemax+3; iage++){ | |
| fprintf(ficresphtm,"<tr>"); | |
| if(iage==iagemax+1){ | |
| fprintf(ficlog,"1"); | |
| fprintf(ficresphtmfr,"<tr><th>0</th> "); | |
| }else if(iage==iagemax+2){ | |
| fprintf(ficlog,"0"); | |
| fprintf(ficresphtmfr,"<tr><th>Unknown</th> "); | |
| }else if(iage==iagemax+3){ | |
| fprintf(ficlog,"Total"); | |
| fprintf(ficresphtmfr,"<tr><th>Total</th> "); | |
| }else{ | |
| if(first==1){ | |
| first=0; | |
| printf("See log file for details...\n"); | |
| } | } |
| fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage); | |
| fprintf(ficlog,"Age %d", iage); | |
| } | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++) | |
| pp[jk] += freq[jk][m][iage]; | |
| } | } |
| for(jk=1; jk <=nlstate ; jk++){ | fprintf(ficresphtmfr, "\n"); |
| for(m=-1, pos=0; m <=0 ; m++) | |
| pos += freq[jk][m][iage]; | /* For each age */ |
| if(pp[jk]>=1.e-10){ | for(iage=iagemin; iage <= iagemax+3; iage++){ |
| fprintf(ficresphtm,"<tr>"); | |
| if(iage==iagemax+1){ | |
| fprintf(ficlog,"1"); | |
| fprintf(ficresphtmfr,"<tr><th>0</th> "); | |
| }else if(iage==iagemax+2){ | |
| fprintf(ficlog,"0"); | |
| fprintf(ficresphtmfr,"<tr><th>Unknown</th> "); | |
| }else if(iage==iagemax+3){ | |
| fprintf(ficlog,"Total"); | |
| fprintf(ficresphtmfr,"<tr><th>Total</th> "); | |
| }else{ | |
| if(first==1){ | if(first==1){ |
| printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); | first=0; |
| printf("See log file for details...\n"); | |
| } | |
| fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage); | |
| fprintf(ficlog,"Age %d", iage); | |
| } | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++) | |
| pp[jk] += freq[jk][m][iage]; | |
| } | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| for(m=-1, pos=0; m <=0 ; m++) | |
| pos += freq[jk][m][iage]; | |
| if(pp[jk]>=1.e-10){ | |
| if(first==1){ | |
| printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); | |
| } | |
| fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); | |
| }else{ | |
| if(first==1) | |
| printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); | |
| fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); | |
| } | } |
| fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); | |
| }else{ | |
| if(first==1) | |
| printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); | |
| fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); | |
| } | } |
| } | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| /* posprop[jk]=0; */ | |
| for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */ | |
| pp[jk] += freq[jk][m][iage]; | |
| } /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */ | |
| for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){ | for(jk=1; jk <=nlstate ; jk++){ |
| pos += pp[jk]; /* pos is the total number of transitions until this age */ | /* posprop[jk]=0; */ |
| posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state | for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */ |
| pp[jk] += freq[jk][m][iage]; | |
| } /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */ | |
| for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){ | |
| pos += pp[jk]; /* pos is the total number of transitions until this age */ | |
| posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state | |
| from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ | |
| pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state | |
| from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ | from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ |
| pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state | |
| from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ | |
| } | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| if(pos>=1.e-5){ | |
| if(first==1) | |
| printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); | |
| fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); | |
| }else{ | |
| if(first==1) | |
| printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); | |
| fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); | |
| } | } |
| if( iage <= iagemax){ | for(jk=1; jk <=nlstate ; jk++){ |
| if(pos>=1.e-5){ | if(pos>=1.e-5){ |
| fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); | if(first==1) |
| fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); | printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); |
| /*probs[iage][jk][j1]= pp[jk]/pos;*/ | fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); |
| /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/ | }else{ |
| } | if(first==1) |
| else{ | printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); |
| fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta); | fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); |
| fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta); | } |
| if( iage <= iagemax){ | |
| if(pos>=1.e-5){ | |
| fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); | |
| fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); | |
| /*probs[iage][jk][j1]= pp[jk]/pos;*/ | |
| /*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/ | |
| } | |
| else{ | |
| fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta); | |
| fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta); | |
| } | |
| } | } |
| } | pospropt[jk] +=posprop[jk]; |
| pospropt[jk] +=posprop[jk]; | } /* end loop jk */ |
| } /* end loop jk */ | /* pospropt=0.; */ |
| /* pospropt=0.; */ | for(jk=-1; jk <=nlstate+ndeath; jk++){ |
| for(jk=-1; jk <=nlstate+ndeath; jk++){ | for(m=-1; m <=nlstate+ndeath; m++){ |
| for(m=-1; m <=nlstate+ndeath; m++){ | if(freq[jk][m][iage] !=0 ) { /* minimizing output */ |
| if(freq[jk][m][iage] !=0 ) { /* minimizing output */ | if(first==1){ |
| if(first==1){ | printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); |
| printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); | } |
| /* printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); */ | |
| fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]); | |
| } | } |
| fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]); | if(jk!=0 && m!=0) |
| fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]); | |
| } | } |
| if(jk!=0 && m!=0) | } /* end loop jk */ |
| fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]); | posproptt=0.; |
| for(jk=1; jk <=nlstate; jk++){ | |
| posproptt += pospropt[jk]; | |
| } | |
| fprintf(ficresphtmfr,"</tr>\n "); | |
| if(iage <= iagemax){ | |
| fprintf(ficresp,"\n"); | |
| fprintf(ficresphtm,"</tr>\n"); | |
| } | |
| if(first==1) | |
| printf("Others in log...\n"); | |
| fprintf(ficlog,"\n"); | |
| } /* end loop age iage */ | |
| fprintf(ficresphtm,"<tr><th>Tot</th>"); | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| if(posproptt < 1.e-5){ | |
| fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt); | |
| }else{ | |
| fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt); | |
| } | } |
| } /* end loop jk */ | |
| posproptt=0.; | |
| for(jk=1; jk <=nlstate; jk++){ | |
| posproptt += pospropt[jk]; | |
| } | |
| fprintf(ficresphtmfr,"</tr>\n "); | |
| if(iage <= iagemax){ | |
| fprintf(ficresp,"\n"); | |
| fprintf(ficresphtm,"</tr>\n"); | |
| } | } |
| if(first==1) | fprintf(ficresphtm,"</tr>\n"); |
| printf("Others in log...\n"); | fprintf(ficresphtm,"</table>\n"); |
| fprintf(ficlog,"\n"); | fprintf(ficresphtmfr,"</table>\n"); |
| } /* end loop age iage */ | |
| fprintf(ficresphtm,"<tr><th>Tot</th>"); | |
| for(jk=1; jk <=nlstate ; jk++){ | |
| if(posproptt < 1.e-5){ | if(posproptt < 1.e-5){ |
| fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt); | fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); |
| fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); | |
| fprintf(ficres,"\n This combination (%d) is not valid and no result will be produced\n\n",j1); | |
| invalidvarcomb[j1]=1; | |
| }else{ | }else{ |
| fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt); | fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1); |
| invalidvarcomb[j1]=0; | |
| } | } |
| } | fprintf(ficresphtmfr,"</table>\n"); |
| fprintf(ficresphtm,"</tr>\n"); | fprintf(ficlog,"\n"); |
| fprintf(ficresphtm,"</table>\n"); | if(j!=0){ |
| fprintf(ficresphtmfr,"</table>\n"); | printf("#Freqsummary: Starting values for combination j1=%d:\n", j1); |
| if(posproptt < 1.e-5){ | for(i=1,jk=1; i <=nlstate; i++){ |
| fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); | for(k=1; k <=(nlstate+ndeath); k++){ |
| fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); | if (k != i) { |
| fprintf(ficres,"\n This combination (%d) is not valid and no result will be produced\n\n",j1); | for(jj=1; jj <=ncovmodel; jj++){ /* For counting jk */ |
| invalidvarcomb[j1]=1; | if(jj==1){ /* Constant case (in fact cste + age) */ |
| }else{ | if(j1==1){ /* All dummy covariates to zero */ |
| fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1); | freq[i][k][iagemax+4]=freq[i][k][iagemax+3]; /* Stores case 0 0 0 */ |
| invalidvarcomb[j1]=0; | freq[i][i][iagemax+4]=freq[i][i][iagemax+3]; /* Stores case 0 0 0 */ |
| } | printf("%d%d ",i,k); |
| fprintf(ficresphtmfr,"</table>\n"); | fprintf(ficlog,"%d%d ",i,k); |
| } /* end selected combination of covariate j1 */ | printf("%12.7f ln(%.0f/%.0f)= %f, OR=%f sd=%f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]),freq[i][k][iagemax+3]/freq[i][i][iagemax+3], sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3])); |
| if(j==0){ /* We can estimate starting values from the occurences in each case */ | fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f \n",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); |
| printf("#Freqsummary\n"); | pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]); |
| fprintf(ficlog,"\n"); | } |
| for(i=1,jk=1; i <=nlstate; i++){ | }else if((j1==1) && (jj==2 || nagesqr==1)){ /* age or age*age parameter without covariate V4*age (to be done later) */ |
| for(k=1; k <=(nlstate+ndeath); k++){ | for(iage=iagemin; iage <= iagemax+3; iage++){ |
| if (k != i) { | x[iage]= (double)iage; |
| printf("%d%d ",i,k); | y[iage]= log(freq[i][k][iage]/freq[i][i][iage]); |
| fprintf(ficlog,"%d%d ",i,k); | /* printf("i=%d, k=%d, jk=%d, j1=%d, jj=%d, y[%d]=%f\n",i,k,jk,j1,jj, iage, y[iage]); */ |
| for(jj=1; jj <=ncovmodel; jj++){ | } |
| if(jj==1){ | linreg(iagemin,iagemax,&no,x,y,&a,&b,&r, &sa, &sb ); /* y= a+b*x with standard errors */ |
| printf("%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); | pstart[jk]=b; |
| fprintf(ficlog,"%12.7f ln(%12.1f/%12.1f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); | pstart[jk-1]=a; |
| }else if( j1!=1 && (j1==2 || (log(j1-1.)/log(2.)-(int)(log(j1-1.)/log(2.))) <0.010) && ( TvarsDind[(int)(log(j1-1.)/log(2.))+1]+2+nagesqr == jj) && Dummy[jj-2-nagesqr]==0){ /* We want only if the position, jj, in model corresponds to unique covariate equal to 1 in j1 combination */ | |
| printf("j1=%d, jj=%d, (int)(log(j1-1.)/log(2.))+1=%d, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(int)(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]); | |
| printf("j1=%d, jj=%d, (log(j1-1.)/log(2.))+1=%f, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]); | |
| pstart[jk]= log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])); | |
| printf("%d%d ",i,k); | |
| fprintf(ficlog,"%d%d ",i,k); | |
| printf("jk=%d,i=%d,k=%d,p[%d]=%12.7f ln((%.0f/%.0f)/(%.0f/%.0f))= %f, OR=%f sd=%f \n",jk,i,k,jk,p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3],freq[i][k][iagemax+4],freq[i][i][iagemax+4], log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])),(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]), sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]+1/freq[i][k][iagemax+4]+1/freq[i][i][iagemax+4])); | |
| }else{ /* Other cases, like quantitative fixed or varying covariates */ | |
| ; | |
| } | |
| /* printf("%12.7f )", param[i][jj][k]); */ | |
| /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */ | |
| jk++; | |
| } /* end jj */ | |
| } /* end k!= i */ | |
| } /* end k */ | |
| } /* end i, jk */ | |
| } /* end j !=0 */ | |
| } /* end selected combination of covariate j1 */ | |
| if(j==0){ /* We can estimate starting values from the occurences in each case */ | |
| printf("#Freqsummary: Starting values for the constants:\n"); | |
| fprintf(ficlog,"\n"); | |
| for(i=1,jk=1; i <=nlstate; i++){ | |
| for(k=1; k <=(nlstate+ndeath); k++){ | |
| if (k != i) { | |
| printf("%d%d ",i,k); | |
| fprintf(ficlog,"%d%d ",i,k); | |
| for(jj=1; jj <=ncovmodel; jj++){ | |
| pstart[jk]=p[jk]; /* Setting pstart to p values by default */ | |
| if(jj==1){ /* Age has to be done */ | |
| pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]); | |
| printf("%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); | |
| fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f ",p[jk],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); | |
| } | |
| /* printf("%12.7f )", param[i][jj][k]); */ | |
| /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */ | |
| jk++; | |
| } | } |
| /* printf("%12.7f )", param[i][jj][k]); */ | printf("\n"); |
| /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */ | fprintf(ficlog,"\n"); |
| jk++; | |
| } | } |
| printf("\n"); | |
| fprintf(ficlog,"\n"); | |
| } | } |
| } | } |
| } | printf("#Freqsummary\n"); |
| printf("#Freqsummary\n"); | fprintf(ficlog,"\n"); |
| fprintf(ficlog,"\n"); | for(jk=-1; jk <=nlstate+ndeath; jk++){ |
| for(jk=-1; jk <=nlstate+ndeath; jk++){ | for(m=-1; m <=nlstate+ndeath; m++){ |
| for(m=-1; m <=nlstate+ndeath; m++){ | /* param[i]|j][k]= freq[jk][m][iagemax+3] */ |
| /* param[i]|j][k]= freq[jk][m][iagemax+3] */ | |
| printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); | printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); |
| fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); | fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); |
| /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */ | /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */ |
| /* printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */ | /* printf(" %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */ |
| /* fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */ | /* fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iagemax+3]); */ |
| /* } */ | /* } */ |
| } | } |
| } /* end loop jk */ | } /* end loop jk */ |
| printf("\n"); | |
| fprintf(ficlog,"\n"); | printf("\n"); |
| } /* if j=0 */ | fprintf(ficlog,"\n"); |
| } /* end j=0 */ | |
| } /* end j */ | } /* end j */ |
| if(mle == -2){ /* We want to use these values as starting values */ | |
| for(i=1, jk=1; i <=nlstate; i++){ | |
| for(j=1; j <=nlstate+ndeath; j++){ | |
| if(j!=i){ | |
| /*ca[0]= k+'a'-1;ca[1]='\0';*/ | |
| printf("%1d%1d",i,j); | |
| fprintf(ficparo,"%1d%1d",i,j); | |
| for(k=1; k<=ncovmodel;k++){ | |
| /* printf(" %lf",param[i][j][k]); */ | |
| /* fprintf(ficparo," %lf",param[i][j][k]); */ | |
| p[jk]=pstart[jk]; | |
| printf(" %f ",pstart[jk]); | |
| fprintf(ficparo," %f ",pstart[jk]); | |
| jk++; | |
| } | |
| printf("\n"); | |
| fprintf(ficparo,"\n"); | |
| } | |
| } | |
| } | |
| } /* end mle=-2 */ | |
| dateintmean=dateintsum/k2cpt; | dateintmean=dateintsum/k2cpt; |
| fclose(ficresp); | fclose(ficresp); |
| Line 4594 Title=%s <br>Datafile=%s Firstpass=%d La | Line 4782 Title=%s <br>Datafile=%s Firstpass=%d La |
| fclose(ficresphtmfr); | fclose(ficresphtmfr); |
| free_vector(meanq,1,nqfveff); | free_vector(meanq,1,nqfveff); |
| free_matrix(meanqt,1,lastpass,1,nqtveff); | free_matrix(meanqt,1,lastpass,1,nqtveff); |
| free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+3+AGEMARGE); | free_vector(x, iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
| free_vector(y, iagemin-AGEMARGE, iagemax+4+AGEMARGE); | |
| free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+4+AGEMARGE); | |
| free_vector(pospropt,1,nlstate); | free_vector(pospropt,1,nlstate); |
| free_vector(posprop,1,nlstate); | free_vector(posprop,1,nlstate); |
| free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+3+AGEMARGE); | free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
| free_vector(pp,1,nlstate); | free_vector(pp,1,nlstate); |
| /* End of freqsummary */ | /* End of freqsummary */ |
| } | } |
| Line 4624 void prevalence(double ***probs, double | Line 4814 void prevalence(double ***probs, double |
| iagemin= (int) agemin; | iagemin= (int) agemin; |
| iagemax= (int) agemax; | iagemax= (int) agemax; |
| /*pp=vector(1,nlstate);*/ | /*pp=vector(1,nlstate);*/ |
| prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE); | prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
| /* freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/ | /* freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/ |
| j1=0; | j1=0; |
| Line 4634 void prevalence(double ***probs, double | Line 4824 void prevalence(double ***probs, double |
| first=1; | first=1; |
| for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */ | for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */ |
| for (i=1; i<=nlstate; i++) | for (i=1; i<=nlstate; i++) |
| for(iage=iagemin-AGEMARGE; iage <= iagemax+3+AGEMARGE; iage++) | for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++) |
| prop[i][iage]=0.0; | prop[i][iage]=0.0; |
| printf("Prevalence combination of varying and fixed dummies %d\n",j1); | printf("Prevalence combination of varying and fixed dummies %d\n",j1); |
| /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */ | /* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */ |
| Line 4665 void prevalence(double ***probs, double | Line 4855 void prevalence(double ***probs, double |
| 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]=iagemax+1; | if(agev[m][i]==0) agev[m][i]=iagemax+1; |
| if(agev[m][i]==1) agev[m][i]=iagemax+2; | if(agev[m][i]==1) agev[m][i]=iagemax+2; |
| if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+3+AGEMARGE){ | if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+4+AGEMARGE){ |
| printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); | printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); |
| exit(1); | exit(1); |
| } | } |
| Line 4702 void prevalence(double ***probs, double | Line 4892 void prevalence(double ***probs, double |
| /* free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/ | /* free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/ |
| /*free_vector(pp,1,nlstate);*/ | /*free_vector(pp,1,nlstate);*/ |
| free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+3+AGEMARGE); | free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
| } /* End of prevalence */ | } /* End of prevalence */ |
| /************* Waves Concatenation ***************/ | /************* Waves Concatenation ***************/ |
| Line 4781 void concatwav(int wav[], int **dh, int | Line 4971 void concatwav(int wav[], int **dh, int |
| /* if(mi==0) never been interviewed correctly before death */ | /* if(mi==0) never been interviewed correctly before death */ |
| /* Only death is a correct wave */ | /* Only death is a correct wave */ |
| mw[mi][i]=m; | mw[mi][i]=m; |
| } | } /* else not in a death state */ |
| #ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE | #ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE |
| else if ((int) andc[i] != 9999) { /* Status is negative. A death occured after lastpass, we can't take it into account because of potential bias */ | else if ((int) andc[i] != 9999) { /* Date of death is known */ |
| /* m++; */ | |
| /* mi++; */ | |
| /* s[m][i]=nlstate+1; /\* We are setting the status to the last of non live state *\/ */ | |
| /* mw[mi][i]=m; */ | |
| if ((int)anint[m][i]!= 9999) { /* date of last interview is known */ | if ((int)anint[m][i]!= 9999) { /* date of last interview is known */ |
| if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */ | if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */ |
| nbwarn++; | nbwarn++; |
| Line 4800 void concatwav(int wav[], int **dh, int | Line 4986 void concatwav(int wav[], int **dh, int |
| }else{ /* Death occured afer last wave potential bias */ | }else{ /* Death occured afer last wave potential bias */ |
| nberr++; | nberr++; |
| if(firstwo==0){ | if(firstwo==0){ |
| printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); | printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
| firstwo=1; | firstwo=1; |
| } | } |
| fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); | fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\n\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
| } | } |
| }else{ /* end date of interview is known */ | }else{ /* if date of interview is unknown */ |
| /* death is known but not confirmed by death status at any wave */ | /* death is known but not confirmed by death status at any wave */ |
| if(firstfour==0){ | if(firstfour==0){ |
| printf("Error! Death for individual %ld line=%d occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); | printf("Error! Death for individual %ld line=%d occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
| Line 6198 To be simple, these graphs help to under | Line 6384 To be simple, these graphs help to under |
| void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ | void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ |
| int lastpass, int stepm, int weightopt, char model[],\ | int lastpass, int stepm, int weightopt, char model[],\ |
| int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ | int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ |
| int popforecast, int prevfcast, int backcast, int estepm , \ | int popforecast, int mobilav, int prevfcast, int mobilavproj, int backcast, int estepm , \ |
| double jprev1, double mprev1,double anprev1, double dateprev1, \ | double jprev1, double mprev1,double anprev1, double dateprev1, \ |
| double jprev2, double mprev2,double anprev2, double dateprev2){ | double jprev2, double mprev2,double anprev2, double dateprev2){ |
| int jj1, k1, i1, cpt, k4, nres; | int jj1, k1, i1, cpt, k4, nres; |
| Line 6245 void printinghtml(char fileresu[], char | Line 6431 void printinghtml(char fileresu[], char |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ | for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| /* for(i1=1; i1<=ncodemax[k1];i1++){ */ | /* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
| Line 6272 void printinghtml(char fileresu[], char | Line 6458 void printinghtml(char fileresu[], char |
| } | } |
| } | } |
| /* aij, bij */ | /* aij, bij */ |
| fprintf(fichtm,"<br>- Logit model (yours is: 1+age+%s), for example: logit(pij)=log(pij/pii)= aij+ bij age + V1 age + etc. as a function of age: <a href=\"%s_%d-1-%d.svg\">%s_%d-1-%d.svg</a><br> \ | fprintf(fichtm,"<br>- Logit model (yours is: logit(pij)=log(pij/pii)= aij+ bij age+%s) as a function of age: <a href=\"%s_%d-1-%d.svg\">%s_%d-1-%d.svg</a><br> \ |
| <img src=\"%s_%d-1-%d.svg\">",model,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); | <img src=\"%s_%d-1-%d.svg\">",model,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
| /* Pij */ | /* Pij */ |
| fprintf(fichtm,"<br>\n- P<sub>ij</sub> or conditional probabilities to be observed in state j being in state i, %d (stepm) months before: <a href=\"%s_%d-2-%d.svg\">%s_%d-2-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- P<sub>ij</sub> or conditional probabilities to be observed in state j being in state i, %d (stepm) months before: <a href=\"%s_%d-2-%d.svg\">%s_%d-2-%d.svg</a><br> \ |
| Line 6296 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 6482 divided by h: <sub>h</sub>P<sub>ij</sub> |
| } | } |
| /* Period (stable) prevalence in each health state */ | /* Period (stable) prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d some years earlier, knowing that we will be in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
| } | } |
| if(backcast==1){ | if(backcast==1){ |
| /* Period (stable) back prevalence in each health state */ | /* Period (stable) back prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Convergence to period (stable) back prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability to be in state %d at a younger age, knowing that we will be in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); |
| } | } |
| } | } |
| if(prevfcast==1){ | if(prevfcast==1){ |
| /* Projection of prevalence up to period (stable) prevalence in each health state */ | /* Projection of prevalence up to period (stable) prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f) up to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d) up to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
| <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); |
| } | } |
| } | } |
| Line 6377 See page 'Matrix of variance-covariance | Line 6563 See page 'Matrix of variance-covariance |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ | for(k1=1; k1<=m;k1++){ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| /* for(i1=1; i1<=ncodemax[k1];i1++){ */ | /* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
| jj1++; | jj1++; |
| Line 6398 See page 'Matrix of variance-covariance | Line 6584 See page 'Matrix of variance-covariance |
| } | } |
| } | } |
| for(cpt=1; cpt<=nlstate;cpt++) { | for(cpt=1; cpt<=nlstate;cpt++) { |
| fprintf(fichtm,"\n<br>- Observed (cross-sectional) and period (incidence based) \ | fprintf(fichtm,"\n<br>- Observed (cross-sectional with mov_average=%d) and period (incidence based) \ |
| prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>\n <br>\ | prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>\n <br>\ |
| <img src=\"%s_%d-%d-%d.svg\">",cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres); | <img src=\"%s_%d-%d-%d.svg\">",mobilav,cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
| } | } |
| fprintf(fichtm,"\n<br>- Total life expectancy by age and \ | fprintf(fichtm,"\n<br>- Total life expectancy by age and \ |
| health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \ | health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \ |
| Line 6473 void printinggnuplot(char fileresu[], ch | Line 6659 void printinggnuplot(char fileresu[], ch |
| for (k1=1; k1<= m ; k1 ++){ /* For each valid combination of covariate */ | for (k1=1; k1<= m ; k1 ++){ /* For each valid combination of covariate */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ | /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| /* We are interested in selected combination by the resultline */ | /* We are interested in selected combination by the resultline */ |
| /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */ | /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */ |
| Line 6555 void printinggnuplot(char fileresu[], ch | Line 6741 void printinggnuplot(char fileresu[], ch |
| /*2 eme*/ | /*2 eme*/ |
| for (k1=1; k1<= m ; k1 ++){ | for (k1=1; k1<= m ; k1 ++){ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); | fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
| Line 6615 void printinggnuplot(char fileresu[], ch | Line 6801 void printinggnuplot(char fileresu[], ch |
| /*3eme*/ | /*3eme*/ |
| for (k1=1; k1<= m ; k1 ++){ | for (k1=1; k1<= m ; k1 ++){ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<= nlstate ; cpt ++) { | for (cpt=1; cpt<= nlstate ; cpt ++) { |
| Line 6664 plot [%.f:%.f] \"%s\" every :::%d::%d u | Line 6850 plot [%.f:%.f] \"%s\" every :::%d::%d u |
| /* Survival functions (period) from state i in state j by initial state i */ | /* Survival functions (period) from state i in state j by initial state i */ |
| for (k1=1; k1<=m; k1++){ /* For each covariate and each value */ | for (k1=1; k1<=m; k1++){ /* For each covariate and each value */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ |
| fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
| Line 6710 set ter svg size 640, 480\nunset log y\n | Line 6896 set ter svg size 640, 480\nunset log y\n |
| /* Survival functions (period) from state i in state j by final state j */ | /* Survival functions (period) from state i in state j by final state j */ |
| for (k1=1; k1<= m ; k1++){ /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1++){ /* For each covariate combination if any */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
| fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); |
| Line 6764 set ter svg size 640, 480\nunset log y\n | Line 6950 set ter svg size 640, 480\nunset log y\n |
| /* CV preval stable (period) for each covariate */ | /* CV preval stable (period) for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state of arrival */ |
| fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
| Line 6790 set ter svg size 640, 480\nunset log y\n | Line 6976 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ | fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
| set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); | set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
| k=3; /* Offset */ | k=3; /* Offset */ |
| for (i=1; i<= nlstate ; i ++){ | for (i=1; i<= nlstate ; i ++){ /* State of origin */ |
| if(i==1) | if(i==1) |
| fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); | fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
| else | else |
| fprintf(ficgp,", '' "); | fprintf(ficgp,", '' "); |
| l=(nlstate+ndeath)*(i-1)+1; | l=(nlstate+ndeath)*(i-1)+1; /* 1, 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
| fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); | fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); |
| for (j=2; j<= nlstate ; j ++) | for (j=2; j<= nlstate ; j ++) |
| fprintf(ficgp,"+$%d",k+l+j-1); | fprintf(ficgp,"+$%d",k+l+j-1); |
| Line 6811 set ter svg size 640, 480\nunset log y\n | Line 6997 set ter svg size 640, 480\nunset log y\n |
| /* CV back preval stable (period) for each covariate */ | /* CV back preval stable (period) for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life ending state */ |
| fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pijb' files, covariatecombination#=%d state=%d",k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| Line 6836 set ter svg size 640, 480\nunset log y\n | Line 7022 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ | fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
| set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); | set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
| k=3; /* Offset */ | k=3; /* Offset */ |
| for (i=1; i<= nlstate ; i ++){ | for (i=1; i<= nlstate ; i ++){ /* State of origin */ |
| if(i==1) | if(i==1) |
| fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_")); | fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_")); |
| else | else |
| fprintf(ficgp,", '' "); | fprintf(ficgp,", '' "); |
| /* l=(nlstate+ndeath)*(i-1)+1; */ | /* l=(nlstate+ndeath)*(i-1)+1; */ |
| l=(nlstate+ndeath)*(cpt-1)+1; | l=(nlstate+ndeath)*(cpt-1)+1; /* fixed for i; cpt=1 1, cpt=2 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
| /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ | /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ |
| /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ | /* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ |
| fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+(cpt-1)+i-1); /* a vérifier */ | fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+i-1); /* To be verified */ |
| /* for (j=2; j<= nlstate ; j ++) */ | /* for (j=2; j<= nlstate ; j ++) */ |
| /* fprintf(ficgp,"+$%d",k+l+j-1); */ | /* fprintf(ficgp,"+$%d",k+l+j-1); */ |
| /* /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */ | /* /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */ |
| Line 6862 set ter svg size 640, 480\nunset log y\n | Line 7048 set ter svg size 640, 480\nunset log y\n |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k1) | if(m != 1 && TKresult[nres]!= k1) |
| continue; | continue; |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
| fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
| Line 6993 set ter svg size 640, 480\nunset log y\n | Line 7179 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"# jk=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ | fprintf(ficgp,"# jk=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ |
| for(jk=1; jk <=m; jk++) /* For each combination of covariate */ | for(jk=1; jk <=m; jk++) /* For each combination of covariate */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= jk) | if(m != 1 && TKresult[nres]!= jk) |
| continue; | continue; |
| fprintf(ficgp,"# Combination of dummy jk=%d and ",jk); | fprintf(ficgp,"# Combination of dummy jk=%d and ",jk); |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
| Line 7355 set ter svg size 640, 480\nunset log y\n | Line 7541 set ter svg size 640, 480\nunset log y\n |
| /* if (h==(int)(YEARM*yearp)){ */ | /* if (h==(int)(YEARM*yearp)){ */ |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ | for(k=1; k<=i1;k++){ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| if(invalidvarcomb[k]){ | if(invalidvarcomb[k]){ |
| printf("\nCombination (%d) projection ignored because no cases \n",k); | printf("\nCombination (%d) projection ignored because no cases \n",k); |
| Line 8306 int decoderesult ( char resultline[], in | Line 8492 int decoderesult ( char resultline[], in |
| if (strlen(resultsav) >1){ | if (strlen(resultsav) >1){ |
| j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */ | j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */ |
| } | } |
| if(j == 0){ /* Resultline but no = */ | |
| TKresult[nres]=0; /* Combination for the nresult and the model */ | |
| return (0); | |
| } | |
| if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ | if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
| printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); | printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); |
| fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); | fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); |
| Line 8917 int calandcheckages(int imx, int maxwav, | Line 9108 int calandcheckages(int imx, int maxwav, |
| s[m][i]=-1; | s[m][i]=-1; |
| } | } |
| if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ | if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ |
| *nberr = *nberr + 1; | *nbwarn = *nbwarn + 1; |
| if(firstone == 0){ | if(firstone == 0){ |
| firstone=1; | firstone=1; |
| printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results can be biased (%d) because status is a death state %d at wave %d. Wave dropped.\nOther similar cases in log file\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr,s[m][i],m); | printf("Warning (#%d)! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown but status is a death state %d at wave %d. If you don't know the vital status, please enter -2. If he/she is still alive but don't know the state, please code with '-1 or '.'. Here, we believe in a death.\nOther similar cases in log file\n", *nbwarn,(int)moisdc[i],(int)andc[i],num[i],i,s[m][i],m); |
| } | } |
| fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results can be biased (%d) because status is a death state %d at wave %d. Wave dropped.\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr,s[m][i],m); | fprintf(ficlog,"Warning (#%d)! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown but status is a death state %d at wave %d. If you don't know the vital status, please enter -2. If he/she is still alive but don't know the state, please code with '-1 or '.'. Here, we believe in a death.\nOther similar cases in log file\n", *nbwarn,(int)moisdc[i],(int)andc[i],num[i],i,s[m][i],m); |
| s[m][i]=-1; | /* s[m][i]=-1; */ /* Keeping the death status */ |
| } | } |
| if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ | if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
| (*nberr)++; | (*nberr)++; |
| printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); | printf("Error (#%d)! Month of death of individual %ld on line %d was unknown (%2d) (year of death is %4d) and status is a death state %d at wave %d. Please impute an arbitrary (or not) month and rerun. Currently this transition to death will be skipped (status is set to -2).\nOther similar cases in log file\n", *nberr, num[i],i,(int)moisdc[i],(int)andc[i],s[m][i],m); |
| fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); | fprintf(ficlog,"Error (#%d)! Month of death of individual %ld on line %d was unknown (%2d) (year of death is %4d) and status is a death state %d at wave %d. Please impute an arbitrary (or not) month and rerun. Currently this transition to death will be skipped (status is set to -2).\nOther similar cases in log file\n", *nberr, num[i],i,(int)moisdc[i],(int)andc[i],s[m][i],m); |
| s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ | s[m][i]=-2; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
| } | } |
| } | } |
| } | } |
| Line 9242 int prevalence_limit(double *p, double * | Line 9433 int prevalence_limit(double *p, double * |
| for(k=1; k<=i1;k++){ /* For each combination k of dummy covariates in the model */ | for(k=1; k<=i1;k++){ /* For each combination k of dummy covariates in the model */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ | /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
| Line 9339 int back_prevalence_limit(double *p, dou | Line 9530 int back_prevalence_limit(double *p, dou |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); | //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
| fprintf(ficresplb,"#******"); | fprintf(ficresplb,"#******"); |
| Line 9398 int back_prevalence_limit(double *p, dou | Line 9589 int back_prevalence_limit(double *p, dou |
| fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp); | fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp); |
| } /* Age */ | } /* Age */ |
| /* was end of cptcod */ | /* was end of cptcod */ |
| /*fprintf(ficresplb,"\n");*/ /* Seems to be necessary for gnuplot only if two result lines and no covariate. */ | |
| } /* end of any combination */ | } /* end of any combination */ |
| } /* end of nres */ | } /* end of nres */ |
| /* hBijx(p, bage, fage); */ | /* hBijx(p, bage, fage); */ |
| Line 9442 int hPijx(double *p, int bage, int fage) | Line 9634 int hPijx(double *p, int bage, int fage) |
| /* k=k+1; */ | /* k=k+1; */ |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ | for(k=1; k<=i1;k++){ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| fprintf(ficrespij,"\n#****** "); | fprintf(ficrespij,"\n#****** "); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| Line 9514 int hPijx(double *p, int bage, int fage) | Line 9706 int hPijx(double *p, int bage, int fage) |
| /* hstepm=1; aff par mois*/ | /* hstepm=1; aff par mois*/ |
| pstamp(ficrespijb); | pstamp(ficrespijb); |
| fprintf(ficrespijb,"#****** h Pij x Back Probability to be in state i at age x-h being in j at x "); | fprintf(ficrespijb,"#****** h Bij x Back probability to be in state i at age x-h being in j at x: B1j+B2j+...=1 "); |
| i1= pow(2,cptcoveff); | i1= pow(2,cptcoveff); |
| /* 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++){*\/ */ |
| /* k=k+1; */ | /* k=k+1; */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| fprintf(ficrespijb,"\n#****** "); | fprintf(ficrespijb,"\n#****** "); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| Line 9548 int hPijx(double *p, int bage, int fage) | Line 9740 int hPijx(double *p, int bage, int fage) |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ | /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
| hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k); | hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k); |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ | /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ |
| fprintf(ficrespijb,"# Cov Agex agex-h hpijx with i,j="); | fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j="); |
| for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) |
| for(j=1; j<=nlstate+ndeath;j++) | for(j=1; j<=nlstate+ndeath;j++) |
| fprintf(ficrespijb," %1d-%1d",i,j); | fprintf(ficrespijb," %1d-%1d",i,j); |
| Line 9594 int main(int argc, char *argv[]) | Line 9786 int main(int argc, char *argv[]) |
| int NDIM=2; | int NDIM=2; |
| int vpopbased=0; | int vpopbased=0; |
| int nres=0; | int nres=0; |
| int endishere=0; | |
| char ca[32], cb[32]; | char ca[32], cb[32]; |
| /* FILE *fichtm; *//* Html File */ | /* FILE *fichtm; *//* Html File */ |
| Line 9638 int main(int argc, char *argv[]) | Line 9831 int main(int argc, char *argv[]) |
| double **prlim; | double **prlim; |
| double **bprlim; | double **bprlim; |
| double ***param; /* Matrix of parameters */ | double ***param; /* Matrix of parameters */ |
| double *p; | double ***paramstart; /* Matrix of starting parameter values */ |
| double *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */ | |
| double **matcov; /* Matrix of covariance */ | double **matcov; /* Matrix of covariance */ |
| double **hess; /* Hessian matrix */ | double **hess; /* Hessian matrix */ |
| double ***delti3; /* Scale */ | double ***delti3; /* Scale */ |
| Line 9963 int main(int argc, char *argv[]) | Line 10157 int main(int argc, char *argv[]) |
| fclose (ficlog); | fclose (ficlog); |
| goto end; | goto end; |
| exit(0); | exit(0); |
| } else if(mle==-2) { /* Guessing from means */ | |
| prwizard(ncovmodel, nlstate, ndeath, model, ficparo); | |
| printf(" You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso); | |
| fprintf(ficlog," You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso); | |
| } else if(mle==-5) { /* Main Wizard */ | } else if(mle==-5) { /* Main Wizard */ |
| prwizard(ncovmodel, nlstate, ndeath, model, ficparo); | prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
| printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso); | printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso); |
| Line 9989 int main(int argc, char *argv[]) | Line 10178 int main(int argc, char *argv[]) |
| ungetc(c,ficpar); | ungetc(c,ficpar); |
| param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); | param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
| paramstart= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); | |
| for(i=1; i <=nlstate; i++){ | for(i=1; i <=nlstate; i++){ |
| j=0; | j=0; |
| for(jj=1; jj <=nlstate+ndeath; jj++){ | for(jj=1; jj <=nlstate+ndeath; jj++){ |
| Line 10025 run imach with mle=-1 to get a correct t | Line 10215 run imach with mle=-1 to get a correct t |
| } | } |
| fflush(ficlog); | fflush(ficlog); |
| /* Reads scales values */ | /* Reads parameters values */ |
| p=param[1][1]; | p=param[1][1]; |
| pstart=paramstart[1][1]; | |
| /* Reads comments: lines beginning with '#' */ | /* Reads comments: lines beginning with '#' */ |
| while((c=getc(ficpar))=='#' && c!= EOF){ | while((c=getc(ficpar))=='#' && c!= EOF){ |
| Line 10472 Title=%s <br>Datafile=%s Firstpass=%d La | Line 10663 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 for any valid combination of covariates | and for any valid combination of covariates |
| and prints on file fileres'p'. */ | and prints on file fileres'p'. */ |
| freqsummary(fileres, p, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \ | freqsummary(fileres, p, pstart, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \ |
| firstpass, lastpass, stepm, weightopt, model); | firstpass, lastpass, stepm, weightopt, model); |
| fprintf(fichtm,"\n"); | fprintf(fichtm,"\n"); |
| Line 10951 Please run with mle=-1 to get a correct | Line 11142 Please run with mle=-1 to get a correct |
| fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl); | fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl); |
| /* Other stuffs, more or less useful */ | /* Other stuffs, more or less useful */ |
| while((c=getc(ficpar))=='#' && c!= EOF){ | while(fgets(line, MAXLINE, ficpar)) { |
| ungetc(c,ficpar); | /* If line starts with a # it is a comment */ |
| fgets(line, MAXLINE, ficpar); | if (line[0] == '#') { |
| fputs(line,stdout); | numlinepar++; |
| fputs(line,ficparo); | fputs(line,stdout); |
| } | fputs(line,ficparo); |
| ungetc(c,ficpar); | fputs(line,ficlog); |
| continue; | |
| fscanf(ficpar,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav); | }else |
| fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); | break; |
| fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); | |
| printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); | |
| fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); | |
| while((c=getc(ficpar))=='#' && c!= EOF){ | |
| ungetc(c,ficpar); | |
| fgets(line, MAXLINE, ficpar); | |
| fputs(line,stdout); | |
| fputs(line,ficparo); | |
| } | |
| ungetc(c,ficpar); | |
| dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.; | |
| dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.; | |
| fscanf(ficpar,"pop_based=%d\n",&popbased); | |
| fprintf(ficlog,"pop_based=%d\n",popbased); | |
| fprintf(ficparo,"pop_based=%d\n",popbased); | |
| fprintf(ficres,"pop_based=%d\n",popbased); | |
| while((c=getc(ficpar))=='#' && c!= EOF){ | |
| ungetc(c,ficpar); | |
| fgets(line, MAXLINE, ficpar); | |
| fputs(line,stdout); | |
| fputs(line,ficres); | |
| fputs(line,ficparo); | |
| } | } |
| ungetc(c,ficpar); | |
| if((num_filled=sscanf(line,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav)) !=EOF){ | |
| fscanf(ficpar,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj); | |
| fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | if (num_filled != 7) { |
| printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | printf("Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
| fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | fprintf(ficlog,"Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
| fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | goto end; |
| /* day and month of proj2 are not used but only year anproj2.*/ | } |
| printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); | |
| while((c=getc(ficpar))=='#' && c!= EOF){ | fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
| ungetc(c,ficpar); | fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
| fgets(line, MAXLINE, ficpar); | fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
| fputs(line,stdout); | |
| fputs(line,ficparo); | |
| fputs(line,ficres); | |
| } | } |
| ungetc(c,ficpar); | |
| fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj); | |
| fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| /* day and month of proj2 are not used but only year anproj2.*/ | |
| /* Results */ | |
| nresult=0; | |
| while(fgets(line, MAXLINE, ficpar)) { | while(fgets(line, MAXLINE, ficpar)) { |
| /* If line starts with a # it is a comment */ | /* If line starts with a # it is a comment */ |
| if (line[0] == '#') { | if (line[0] == '#') { |
| Line 11022 Please run with mle=-1 to get a correct | Line 11174 Please run with mle=-1 to get a correct |
| fputs(line,stdout); | fputs(line,stdout); |
| fputs(line,ficparo); | fputs(line,ficparo); |
| fputs(line,ficlog); | fputs(line,ficlog); |
| fputs(line,ficres); | |
| continue; | continue; |
| }else | }else |
| break; | break; |
| } | } |
| if (!feof(ficpar)) | |
| while((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ | |
| if (num_filled == 0){ | dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.; |
| resultline[0]='\0'; | dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.; |
| break; | |
| } else if (num_filled != 1){ | if((num_filled=sscanf(line,"pop_based=%d\n",&popbased)) !=EOF){ |
| printf("ERROR %d: result line should be at minimum 'result=' %s\n",num_filled, line); | if (num_filled != 1) { |
| } | printf("Error: Not 1 (data)parameters in line but %d, for example:pop_based=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
| nresult++; /* Sum of resultlines */ | fprintf(ficlog,"Error: Not 1 (data)parameters in line but %d, for example: pop_based=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
| printf("Result %d: result=%s\n",nresult, resultline); | |
| if(nresult > MAXRESULTLINES){ | |
| printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); | |
| fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); | |
| goto end; | goto end; |
| } | } |
| decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ | printf("pop_based=%d\n",popbased); |
| fprintf(ficparo,"result: %s\n",resultline); | fprintf(ficlog,"pop_based=%d\n",popbased); |
| fprintf(ficres,"result: %s\n",resultline); | fprintf(ficparo,"pop_based=%d\n",popbased); |
| fprintf(ficlog,"result: %s\n",resultline); | fprintf(ficres,"pop_based=%d\n",popbased); |
| while(fgets(line, MAXLINE, ficpar)) { | } |
| /* Results */ | |
| nresult=0; | |
| do{ | |
| if(!fgets(line, MAXLINE, ficpar)){ | |
| endishere=1; | |
| parameterline=14; | |
| }else if (line[0] == '#') { | |
| /* If line starts with a # it is a comment */ | /* If line starts with a # it is a comment */ |
| if (line[0] == '#') { | numlinepar++; |
| numlinepar++; | fputs(line,stdout); |
| fputs(line,stdout); | fputs(line,ficparo); |
| fputs(line,ficparo); | fputs(line,ficlog); |
| fputs(line,ficres); | continue; |
| fputs(line,ficlog); | }else if(sscanf(line,"prevforecast=%[^\n]\n",modeltemp)) |
| continue; | parameterline=11; |
| }else | else if(sscanf(line,"backcast=%[^\n]\n",modeltemp)) |
| break; | parameterline=12; |
| else if(sscanf(line,"result:%[^\n]\n",modeltemp)) | |
| parameterline=13; | |
| else{ | |
| parameterline=14; | |
| } | } |
| if (feof(ficpar)) | switch (parameterline){ |
| case 11: | |
| if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF){ | |
| if (num_filled != 8) { | |
| printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| goto end; | |
| } | |
| fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | |
| printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | |
| fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | |
| fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); | |
| /* day and month of proj2 are not used but only year anproj2.*/ | |
| } | |
| break; | break; |
| else{ /* Processess output results for this combination of covariate values */ | case 12: |
| } | /*fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);*/ |
| } /* end while */ | if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){ |
| if (num_filled != 8) { | |
| printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); | |
| goto end; | |
| } | |
| printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); | |
| /* day and month of proj2 are not used but only year anproj2.*/ | |
| } | |
| break; | |
| case 13: | |
| if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ | |
| if (num_filled == 0){ | |
| resultline[0]='\0'; | |
| printf("Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line); | |
| fprintf(ficlog,"Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line); | |
| break; | |
| } else if (num_filled != 1){ | |
| printf("ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line); | |
| fprintf(ficlog,"ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line); | |
| } | |
| nresult++; /* Sum of resultlines */ | |
| printf("Result %d: result=%s\n",nresult, resultline); | |
| if(nresult > MAXRESULTLINES){ | |
| printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); | |
| fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); | |
| goto end; | |
| } | |
| decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ | |
| fprintf(ficparo,"result: %s\n",resultline); | |
| fprintf(ficres,"result: %s\n",resultline); | |
| fprintf(ficlog,"result: %s\n",resultline); | |
| break; | |
| case 14: | |
| if(ncovmodel >2 && nresult==0 ){ | |
| printf("ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line); | |
| goto end; | |
| } | |
| break; | |
| default: | |
| nresult=1; | |
| decoderesult(".",nresult ); /* No covariate */ | |
| } | |
| } /* End switch parameterline */ | |
| }while(endishere==0); /* End do */ | |
| /* 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); */ |
| /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ | /* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ |
| Line 11081 Please run with mle=-1 to get a correct | Line 11298 Please run with mle=-1 to get a correct |
| printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p); | printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p); |
| } | } |
| printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ | printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ |
| model,imx,jmin,jmax,jmean,rfileres,popforecast,prevfcast,backcast, estepm, \ | model,imx,jmin,jmax,jmean,rfileres,popforecast,mobilav,prevfcast,mobilavproj,backcast, estepm, \ |
| jprev1,mprev1,anprev1,dateprev1,jprev2,mprev2,anprev2,dateprev2); | jprev1,mprev1,anprev1,dateprev1,jprev2,mprev2,anprev2,dateprev2); |
| /*------------ free_vector -------------*/ | /*------------ free_vector -------------*/ |
| Line 11134 Please run with mle=-1 to get a correct | Line 11351 Please run with mle=-1 to get a correct |
| mobaverage=mobaverages; | mobaverage=mobaverages; |
| if (mobilav!=0) { | if (mobilav!=0) { |
| printf("Movingaveraging observed prevalence\n"); | printf("Movingaveraging observed prevalence\n"); |
| fprintf(ficlog,"Movingaveraging observed prevalence\n"); | |
| if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){ | if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){ |
| fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav); | fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav); |
| printf(" Error in movingaverage mobilav=%d\n",mobilav); | printf(" Error in movingaverage mobilav=%d\n",mobilav); |
| Line 11143 Please run with mle=-1 to get a correct | Line 11361 Please run with mle=-1 to get a correct |
| /* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ | /* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
| else if (mobilavproj !=0) { | else if (mobilavproj !=0) { |
| printf("Movingaveraging projected observed prevalence\n"); | printf("Movingaveraging projected observed prevalence\n"); |
| fprintf(ficlog,"Movingaveraging projected observed prevalence\n"); | |
| if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){ | if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){ |
| fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj); | fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj); |
| printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj); | printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj); |
| Line 11205 Please run with mle=-1 to get a correct | Line 11424 Please run with mle=-1 to get a correct |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| fprintf(ficreseij,"\n#****** "); | fprintf(ficreseij,"\n#****** "); |
| printf("\n#****** "); | printf("\n#****** "); |
| Line 11278 Please run with mle=-1 to get a correct | Line 11497 Please run with mle=-1 to get a correct |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| printf("\n#****** Result for:"); | printf("\n#****** Result for:"); |
| fprintf(ficrest,"\n#****** Result for:"); | fprintf(ficrest,"\n#****** Result for:"); |
| Line 11419 Please run with mle=-1 to get a correct | Line 11638 Please run with mle=-1 to get a correct |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ | for(k=1; k<=i1;k++){ |
| if(TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| fprintf(ficresvpl,"\n#****** "); | fprintf(ficresvpl,"\n#****** "); |
| printf("\n#****** "); | printf("\n#****** "); |