/* $Id$
$State$
$Log$
+ Revision 1.250 2016/09/08 16:07:27 brouard
+ Summary: continue
+
Revision 1.249 2016/09/07 17:14:18 brouard
Summary: Starting values from frequencies
/* #include <libintl.h> */
/* #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 "..\\gp37mgw\\wgnuplot"*/
}
/************ 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 firstpass, int lastpass, int stepm, int weightopt, char model[])
{ /* Some frequencies as well as proposing some starting values */
double agebegin, ageend;
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 */
pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */
/* prop=matrix(1,nlstate,iagemin,iagemax+3); */
}
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);
+ freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+4+AGEMARGE);
j1=0;
/* j=ncoveff; /\* Only fixed dummy covariates *\/ */
dateintsum=0;
k2cpt=0;
- for (j = 0; j <= cptcoveff; j+=cptcoveff){
- 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 (j = 0; j <= cptcoveff; j+=cptcoveff){ /* j= 0 constant model */
+ 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++)
- freq[i][jk][m]=0;
-
- for (i=1; i<=nlstate; i++) {
- for(m=iagemin; m <= iagemax+3; m++)
- prop[i][m]=0;
- posprop[i]=0;
- pospropt[i]=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 */
- for (iind=1; iind<=imx; iind++) { /* For each individual iind */
- bool=1;
- if(j !=0){
- 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<= nqfveff; z1++) { */
- /* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */
- /* } */
- for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */
- /* if(Tvaraff[z1] ==-20){ */
- /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */
- /* }else if(Tvaraff[z1] ==-10){ */
- /* /\* sumnew+=coqvar[z1][iind]; *\/ */
- /* }else */
- if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */
- /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */
- bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */
- /* 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",
- bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),
- j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/
- /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/
- } /* Onlyf fixed */
- } /* end z1 */
- } /* cptcovn > 0 */
- } /* end any */
- }/* end j==0 */
- if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */
- /* for(m=firstpass; m<=lastpass; m++){ */
- for(mi=1; mi<wav[iind];mi++){ /* For that wave */
- m=mw[mi][iind];
- if(j!=0){
- if(anyvaryingduminmodel==1){ /* Some are varying covariates */
- for (z1=1; z1<=cptcoveff; z1++) {
- if( Fixed[Tmodelind[z1]]==1){
- iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;
- if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's
- value is -1, we don't select. It differs from the
- constant and age model which counts them. */
- bool=0; /* not selected */
- }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */
- if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) {
- bool=0;
+ prop[i][m]=0;
+ posprop[i]=0;
+ pospropt[i]=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 */
+ for (iind=1; iind<=imx; iind++) { /* For each individual iind */
+ bool=1;
+ if(j !=0){
+ 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<= nqfveff; z1++) { */
+ /* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */
+ /* } */
+ for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */
+ /* if(Tvaraff[z1] ==-20){ */
+ /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */
+ /* }else if(Tvaraff[z1] ==-10){ */
+ /* /\* sumnew+=coqvar[z1][iind]; *\/ */
+ /* }else */
+ if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */
+ /* Tests if this individual iind responded to combination j1 (V4=1 V3=0) */
+ bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */
+ /* 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",
+ bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),
+ j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/
+ /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/
+ } /* Onlyf fixed */
+ } /* end z1 */
+ } /* cptcovn > 0 */
+ } /* end any */
+ }/* end j==0 */
+ if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */
+ /* for(m=firstpass; m<=lastpass; m++){ */
+ for(mi=1; mi<wav[iind];mi++){ /* For that wave */
+ m=mw[mi][iind];
+ if(j!=0){
+ if(anyvaryingduminmodel==1){ /* Some are varying covariates */
+ for (z1=1; z1<=cptcoveff; z1++) {
+ if( Fixed[Tmodelind[z1]]==1){
+ iv= Tvar[Tmodelind[z1]]-ncovcol-nqv;
+ if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's
+ value is -1, we don't select. It differs from the
+ constant and age model which counts them. */
+ 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); */
}
- }
- }/* 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{
+ bool=1;
+ }/* end bool 2 */
+ } /* end m */
+ } /* end bool */
+ } /* end iind = 1 to imx */
+ /* 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 */
+
+
+ /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/
+ pstamp(ficresp);
+ if (cptcoveff>0 && j!=0){
+ printf( "\n#********** Variable ");
+ fprintf(ficresp, "\n#********** Variable ");
+ fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable ");
+ fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable ");
+ fprintf(ficlog, "\n#********** Variable ");
+ for (z1=1; z1<=cptcoveff; z1++){
+ if(!FixedV[Tvaraff[z1]]){
+ printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ 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)]);
}else{
- bool=1;
- }/* end bool 2 */
- } /* end m */
- } /* end bool */
- } /* end iind = 1 to imx */
- /* 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 */
-
-
- /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/
- pstamp(ficresp);
- if (cptcoveff>0 && j!=0){
- fprintf(ficresp, "\n#********** Variable ");
- fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable ");
- fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable ");
- fprintf(ficlog, "\n#********** Variable ");
- for (z1=1; z1<=cptcoveff; z1++){
- if(DummyV[z1]){
- fprintf(ficresp, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
- fprintf(ficresphtm, "V%d (fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
- 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)]);
- }else{
- fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
- fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
- fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
- fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]);
+ }
}
+ printf( "**********\n#");
+ fprintf(ficresp, "**********\n#");
+ fprintf(ficresphtm, "**********</h3>\n");
+ fprintf(ficresphtmfr, "**********</h3>\n");
+ fprintf(ficlog, "**********\n");
}
- 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(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(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(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,"<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){
+ 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){
- 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; 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++){
- 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
+ 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] */
- 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){
- 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]);*/
+ 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);
}
- 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);
+ 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];
- } /* end loop jk */
- /* pospropt=0.; */
- for(jk=-1; jk <=nlstate+ndeath; jk++){
- for(m=-1; m <=nlstate+ndeath; m++){
- if(freq[jk][m][iage] !=0 ) { /* minimizing output */
- if(first==1){
- printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]);
+ pospropt[jk] +=posprop[jk];
+ } /* end loop jk */
+ /* pospropt=0.; */
+ for(jk=-1; jk <=nlstate+ndeath; jk++){
+ for(m=-1; m <=nlstate+ndeath; m++){
+ if(freq[jk][m][iage] !=0 ) { /* minimizing output */
+ if(first==1){
+ 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)
- fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]);
+ } /* 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)
+ 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)
- printf("Others in log...\n");
- fprintf(ficlog,"\n");
- } /* end loop age iage */
- fprintf(ficresphtm,"<tr><th>Tot</th>");
- for(jk=1; jk <=nlstate ; jk++){
+ fprintf(ficresphtm,"</tr>\n");
+ fprintf(ficresphtm,"</table>\n");
+ fprintf(ficresphtmfr,"</table>\n");
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{
- 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(ficresphtm,"</tr>\n");
- fprintf(ficresphtm,"</table>\n");
- fprintf(ficresphtmfr,"</table>\n");
- if(posproptt < 1.e-5){
- 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{
- fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1);
- invalidvarcomb[j1]=0;
- }
- fprintf(ficresphtmfr,"</table>\n");
- } /* end selected combination of covariate j1 */
- if(j==0){ /* We can estimate starting values from the occurences in each case */
- printf("#Freqsummary\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++){
- if(jj==1){
- 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]));
- 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]));
+ fprintf(ficresphtmfr,"</table>\n");
+ fprintf(ficlog,"\n");
+ if(j!=0){
+ printf("#Freqsummary: Starting values for combination j1=%d:\n", j1);
+ 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++){ /* For counting jk */
+ if(jj==1){ /* Constant case */
+ if(j1==1){ /* All dummy covariates to zero */
+ freq[i][k][iagemax+4]=freq[i][k][iagemax+3]; /* Stores case 0 0 0 */
+ freq[i][i][iagemax+4]=freq[i][i][iagemax+3]; /* Stores case 0 0 0 */
+ }
+ 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]));
+ 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]));
+ pstart[jk]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]);
+ }else if( (log(j1-1)/log(2)+1 == jj -2 -nagesqr) && Dummy[jj-2-nagesqr]==0){ /* We want only if the position, jj, in model corresponds to unique covariate equal to 1 in j1 combination */
+ pstart[jk]= log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]));
+ 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 if(jj==2 || nagesqr==1){ /* age or age*age parameter */
+ ;
+ }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 */
+ printf("\n");
+ fprintf(ficlog,"\n");
+ } /* 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++){
+ if(jj==1){
+ 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]); */
- /* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */
- jk++;
+ printf("\n");
+ fprintf(ficlog,"\n");
}
- printf("\n");
- fprintf(ficlog,"\n");
}
}
- }
- printf("#Freqsummary\n");
- fprintf(ficlog,"\n");
- for(jk=-1; jk <=nlstate+ndeath; jk++){
- for(m=-1; m <=nlstate+ndeath; m++){
- /* param[i]|j][k]= freq[jk][m][iagemax+3] */
+ printf("#Freqsummary\n");
+ fprintf(ficlog,"\n");
+ for(jk=-1; jk <=nlstate+ndeath; jk++){
+ for(m=-1; m <=nlstate+ndeath; m++){
+ /* param[i]|j][k]= 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]);
- /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */
- /* printf(" %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 */
- printf("\n");
- fprintf(ficlog,"\n");
- } /* if j=0 */
+ /* if(freq[jk][m][iage] !=0 ) { /\* minimizing output *\/ */
+ /* printf(" %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 */
+
+ printf("\n");
+ fprintf(ficlog,"\n");
+ } /* end j=0 */
} /* end j */
dateintmean=dateintsum/k2cpt;
fclose(ficresphtmfr);
free_vector(meanq,1,nqfveff);
free_matrix(meanqt,1,lastpass,1,nqtveff);
- free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+3+AGEMARGE);
+ free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+4+AGEMARGE);
free_vector(pospropt,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);
/* End of freqsummary */
}
iagemin= (int) agemin;
iagemax= (int) agemax;
/*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);*/
j1=0;
first=1;
for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */
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;
printf("Prevalence combination of varying and fixed dummies %d\n",j1);
/* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */
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]==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);
exit(1);
}
/* free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/
/*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 */
/************* Waves Concatenation ***************/
double **prlim;
double **bprlim;
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 **hess; /* Hessian matrix */
double ***delti3; /* Scale */
ungetc(c,ficpar);
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++){
j=0;
for(jj=1; jj <=nlstate+ndeath; jj++){
}
fflush(ficlog);
- /* Reads scales values */
+ /* Reads parameters values */
p=param[1][1];
+ pstart=paramstart[1][1];
/* Reads comments: lines beginning with '#' */
while((c=getc(ficpar))=='#' && c!= EOF){
/* Calculates basic frequencies. Computes observed prevalence at single age
and for any valid combination of covariates
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);
fprintf(fichtm,"\n");