--- imach/src/imach.c 2015/09/30 17:45:14 1.203
+++ imach/src/imach.c 2015/11/17 14:31:57 1.208
@@ -1,6 +1,21 @@
-/* $Id: imach.c,v 1.203 2015/09/30 17:45:14 brouard Exp $
+/* $Id: imach.c,v 1.208 2015/11/17 14:31:57 brouard Exp $
$State: Exp $
$Log: imach.c,v $
+ Revision 1.208 2015/11/17 14:31:57 brouard
+ Summary: temporary
+
+ Revision 1.207 2015/10/27 17:36:57 brouard
+ *** empty log message ***
+
+ Revision 1.206 2015/10/24 07:14:11 brouard
+ *** empty log message ***
+
+ Revision 1.205 2015/10/23 15:50:53 brouard
+ Summary: 0.98r3 some clarification for graphs on likelihood contributions
+
+ Revision 1.204 2015/10/01 16:20:26 brouard
+ Summary: Some new graphs of contribution to likelihood
+
Revision 1.203 2015/09/30 17:45:14 brouard
Summary: looking at better estimation of the hessian
@@ -745,12 +760,12 @@ typedef struct {
#define ODIRSEPARATOR '\\'
#endif
-/* $Id: imach.c,v 1.203 2015/09/30 17:45:14 brouard Exp $ */
+/* $Id: imach.c,v 1.208 2015/11/17 14:31:57 brouard Exp $ */
/* $State: Exp $ */
#include "version.h"
char version[]=__IMACH_VERSION__;
-char copyright[]="September 2015,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015";
-char fullversion[]="$Revision: 1.203 $ $Date: 2015/09/30 17:45:14 $";
+char copyright[]="October 2015,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015";
+char fullversion[]="$Revision: 1.208 $ $Date: 2015/11/17 14:31:57 $";
char strstart[80];
char optionfilext[10], optionfilefiname[FILENAMELENGTH];
int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */
@@ -940,7 +955,7 @@ static int split( char *path, char *dirc
}
/* got dirc from getcwd*/
printf(" DIRC = %s \n",dirc);
- } else { /* strip direcotry from path */
+ } else { /* strip directory from path */
ss++; /* after this, the filename */
l2 = strlen( ss ); /* length of filename */
if ( l2 == 0 ) return( GLOCK_ERROR_NOPATH );
@@ -1954,13 +1969,30 @@ double **prevalim(double **prlim, int nl
{
/* Computes the prevalence limit in each live state at age x by left multiplying the unit
matrix by transitions matrix until convergence is reached with precision ftolpl */
-
+ /* Wx= Wx-1 Px-1= Wx-2 Px-2 Px-1 = Wx-n Px-n ... Px-2 Px-1 I */
+ /* Wx is row vector: population in state 1, population in state 2, population dead */
+ /* or prevalence in state 1, prevalence in state 2, 0 */
+ /* newm is the matrix after multiplications, its rows are identical at a factor */
+ /* Initial matrix pimij */
+ /* {0.85204250825084937, 0.13044499163996345, 0.017512500109187184, */
+ /* 0.090851990222114765, 0.88271245433047185, 0.026435555447413338, */
+ /* 0, 0 , 1} */
+ /*
+ * and after some iteration: */
+ /* {0.45504275246439968, 0.42731458730878791, 0.11764266022681241, */
+ /* 0.45201005341706885, 0.42865420071559901, 0.11933574586733192, */
+ /* 0, 0 , 1} */
+ /* And prevalence by suppressing the deaths are close to identical rows in prlim: */
+ /* {0.51571254859325999, 0.4842874514067399, */
+ /* 0.51326036147820708, 0.48673963852179264} */
+ /* If we start from prlim again, prlim tends to a constant matrix */
+
int i, ii,j,k;
double min, max, maxmin, maxmax,sumnew=0.;
/* double **matprod2(); */ /* test */
double **out, cov[NCOVMAX+1], **pmij();
double **newm;
- double agefin, delaymax=100 ; /* Max number of years to converge */
+ double agefin, delaymax=100. ; /* 100 Max number of years to converge */
int ncvloop=0;
for (ii=1;ii<=nlstate+ndeath;ii++)
@@ -2014,17 +2046,43 @@ double **prevalim(double **prlim, int nl
}
maxmin=(max-min)/(max+min)*2;
maxmax=FMAX(maxmax,maxmin);
+ /* for(i=1; i<=nlstate; i++) { */
+ /* sumnew=0.; */
+ /* sumnew+=prlim[i][j]; */
+ /* } */
+ /* prmimj = sumnew/(float)nlstate; /\* Means of various prevalence limits. */
} /* j loop */
*ncvyear= (int)age- (int)agefin;
- /* printf("maxmax=%lf maxmin=%lf ncvloop=%ld, age=%d, agefin=%d ncvyear=%d \n", maxmax, maxmin, ncvloop, (int)age, (int)agefin, *ncvyear); */
+ /* printf("maxmax=%lf maxmin=%lf ncvloop=%d, age=%d, agefin=%d ncvyear=%d \n", maxmax, maxmin, ncvloop, (int)age, (int)agefin, *ncvyear); */
if(maxmax < ftolpl){
/* printf("maxmax=%lf maxmin=%lf ncvloop=%ld, age=%d, agefin=%d ncvyear=%d \n", maxmax, maxmin, ncvloop, (int)age, (int)agefin, *ncvyear); */
return prlim;
}
} /* age loop */
- printf("Warning: the stable prevalence at age %d did not converge with the required precision %g > ftolpl=%g. \n\
-Earliest age to start was %d-%d=%d, ncvloop=%d, ncvyear=%d\n", (int)age, maxmax, ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, *ncvyear);
-/* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */
+ /* After some age loop it doesn't converge */
+ printf("Warning: the stable prevalence at age %d did not converge with the required precision %g > ftolpl=%g within %.0f years. \n\
+Earliest age to start was %d-%d=%d, ncvloop=%d, ncvyear=%d\n", (int)age, maxmax, ftolpl, delaymax, (int)age, (int)delaymax, (int)agefin, ncvloop, *ncvyear);
+ /* printf(" age= %d newm\n",(int)age); */
+ /* for(i=1; i<=nlstate+ndeath; i++) { */
+ /* for(j=1;j<=nlstate+ndeath;j++){ */
+ /* printf(" %lf", newm[i][j]); */
+ /* } */
+ /* printf("\n"); */
+ /* } */
+ /* printf("\n"); */
+ /* printf("prlim\n"); */
+ /* for(i=1; i<=nlstate; i++) { */
+ /* sumnew=0; */
+ /* for(k=1; k<=ndeath; k++) sumnew+=newm[i][nlstate+k]; */
+ /* for(j=1;j<=nlstate;j++){ */
+ /* prlim[i][j]= newm[i][j]/(1-sumnew); */
+ /* printf(" %lf", prlim[i][j]); */
+ /* } */
+ /* printf("\n"); */
+ /* } */
+ /* printf("\n"); */
+
+ /* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */
return prlim; /* should not reach here */
}
@@ -2600,9 +2658,9 @@ double funcone( double *x)
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli;
/*printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */
if(globpr){
- fprintf(ficresilk,"%9ld %6.1f %6d %2d %2d %2d %2d %3d %11.6f %8.4f\
+ fprintf(ficresilk,"%9ld %6.1f %6d %2d %2d %2d %2d %3d %11.6f %8.4f %8.3f\
%11.6f %11.6f %11.6f ", \
- num[i], agexact, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],
+ num[i], agexact, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw,
2*weight[i]*lli,out[s1][s2],savm[s1][s2]);
for(k=1,llt=0.,l=0.; k<=nlstate; k++){
llt +=ll[k]*gipmx/gsw;
@@ -2640,8 +2698,8 @@ void likelione(FILE *ficres,double p[],
printf("Problem with resultfile: %s\n", fileresilk);
fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk);
}
- fprintf(ficresilk, "#individual(line's_record) s1 s2 wave# effective_wave# number_of_matrices_product pij weight -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n");
- fprintf(ficresilk, "#num_i age i s1 s2 mi mw dh likeli weight 2wlli out sav ");
+ fprintf(ficresilk, "#individual(line's_record) count age s1 s2 wave# effective_wave# number_of_matrices_product pij weight weight/gpw -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n");
+ fprintf(ficresilk, "#num_i age i s1 s2 mi mw dh likeli weight %%weight 2wlli out sav ");
/* i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */
for(k=1; k<=nlstate; k++)
fprintf(ficresilk," -2*gipw/gsw*weight*ll[%d]++",k);
@@ -2651,11 +2709,23 @@ void likelione(FILE *ficres,double p[],
*fretone=(*funcone)(p);
if(*globpri !=0){
fclose(ficresilk);
- fprintf(fichtm,"\n
File of contributions to the likelihood computed with initial parameters and mle >= 1. You should at least run with mle >= 1 and starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: %s
\n",subdirf(fileresilk),subdirf(fileresilk));
- fprintf(fichtm,"
- The first 3 individuals are drawn with lines. The function drawn is -2Log(L) in log scale: %s.png
\
-",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"));
+ if (mle ==0)
+ fprintf(fichtm,"\n
File of contributions to the likelihood computed with initial parameters and mle = %d.",mle);
+ else if(mle >=1)
+ fprintf(fichtm,"\n
File of contributions to the likelihood computed with optimized parameters mle = %d.",mle);
+ fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: %s
\n",subdirf(fileresilk),subdirf(fileresilk));
+
+
+ for (k=1; k<= nlstate ; k++) {
+ fprintf(fichtm,"
- Probability p%dj by origin %d and destination j %s-p%dj.png
\
+",k,k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k);
+ }
+ fprintf(fichtm,"
- The function drawn is -2Log(L) in Log scale: by state of origin %s-ori.png
\
+",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"));
+ fprintf(fichtm,"
- and by state of destination %s-dest.png
\
+",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"));
fflush(fichtm);
- }
+ }
return;
}
@@ -2919,6 +2989,8 @@ double hessij( double x[], double **hess
double p2[MAXPARM+1];
int k, kmax=1;
double v1, v2, cv12, lc1, lc2;
+
+ int firstime=0;
fx=func(x);
for (k=1; k<=kmax; k=k+10) {
@@ -2940,13 +3012,14 @@ double hessij( double x[], double **hess
k4=func(p2)-fx;
res=(k1-k2-k3+k4)/4.0/delti[thetai]/k/delti[thetaj]/k/2.; /* Because of L not 2*L */
if(k1*k2*k3*k4 <0.){
+ firstime=1;
kmax=kmax+10;
- if(kmax >=10){
+ }
+ if(kmax >=10 || firstime ==1){
printf("Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; increase ftol=%.2e\n",thetai,thetaj, ftol);
fprintf(ficlog,"Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; increase ftol=%.2e\n",thetai,thetaj, ftol);
printf("%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4);
fprintf(ficlog,"%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4);
- }
}
#ifdef DEBUGHESSIJ
v1=hess[thetai][thetai];
@@ -4006,7 +4079,6 @@ void cvevsij(double ***eij, double x[],
fprintf(ficlog,"Problem with resultfile: %s\n", fileresprobmorprev);
}
printf("Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev);
-
fprintf(ficlog,"Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev);
pstamp(ficresprobmorprev);
fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm);
@@ -4017,6 +4089,7 @@ void cvevsij(double ***eij, double x[],
fprintf(ficresprobmorprev," w%1d p%-d%-d",i,i,j);
}
fprintf(ficresprobmorprev,"\n");
+
fprintf(ficgp,"\n# Routine varevsij");
fprintf(ficgp,"\nunset title \n");
/* fprintf(fichtm, "#Local time at start: %s", strstart);*/
@@ -4054,9 +4127,9 @@ void cvevsij(double ***eij, double x[],
/* For example we decided to compute the life expectancy with the smallest unit */
/* hstepm beeing the number of stepms, if hstepm=1 the length of hstepm is stepm.
nhstepm is the number of hstepm from age to agelim
- nstepm is the number of stepm from age to agelin.
- Look at function hpijx to understand why (it is linked to memory size questions) */
- /* We decided (b) to get a life expectancy respecting the most precise curvature of the
+ nstepm is the number of stepm from age to agelim.
+ Look at function hpijx to understand why (it is linked to memory size questions)
+ we decided (b) to get a life expectancy respecting the most precise curvature of the
survival function given by stepm (the optimization length). Unfortunately it
means that if the survival funtion is printed every two years of age and if
you sum them up and add 1 year (area under the trapezoids) you won't get the same
@@ -4264,7 +4337,7 @@ void cvevsij(double ***eij, double x[],
/************ Variance of prevlim ******************/
void varprevlim(char fileres[], double **varpl, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int *ncvyear, int ij, char strstart[])
{
- /* Variance of prevalence limit */
+ /* Variance of prevalence limit for each state ij using current parameters x[] and estimates of neighbourhood give by delti*/
/* double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double **savm,double ftolpl);*/
double **dnewm,**doldm;
@@ -4272,6 +4345,7 @@ void cvevsij(double ***eij, double x[],
double *xp;
double *gp, *gm;
double **gradg, **trgradg;
+ double **mgm, **mgp;
double age,agelim;
int theta;
@@ -4293,7 +4367,10 @@ void cvevsij(double ***eij, double x[],
nhstepm=(int) rint((agelim-age)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */
if (stepm >= YEARM) hstepm=1;
nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */
+ p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm);
gradg=matrix(1,npar,1,nlstate);
+ mgp=matrix(1,npar,1,nlstate);
+ mgm=matrix(1,npar,1,nlstate);
gp=vector(1,nlstate);
gm=vector(1,nlstate);
@@ -4301,16 +4378,19 @@ void cvevsij(double ***eij, double x[],
for(i=1; i<=npar; i++){ /* Computes gradient */
xp[i] = x[i] + (i==theta ?delti[theta]:0);
}
+ hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij); /* Missing or not useful because 1 year */
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyear,ij);
- for(i=1;i<=nlstate;i++)
+ for(i=1;i<=nlstate;i++){
gp[i] = prlim[i][i];
-
+ mgp[theta][i] = prlim[i][i];
+ }
for(i=1; i<=npar; i++) /* Computes gradient */
xp[i] = x[i] - (i==theta ?delti[theta]:0);
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyear,ij);
- for(i=1;i<=nlstate;i++)
+ for(i=1;i<=nlstate;i++){
gm[i] = prlim[i][i];
-
+ mgm[theta][i] = prlim[i][i];
+ }
for(i=1;i<=nlstate;i++)
gradg[theta][i]= (gp[i]-gm[i])/2./delti[theta];
} /* End theta */
@@ -4320,11 +4400,34 @@ void cvevsij(double ***eij, double x[],
for(j=1; j<=nlstate;j++)
for(theta=1; theta <=npar; theta++)
trgradg[j][theta]=gradg[theta][j];
+ if((int)age==68 ||(int)age== 69 ){
+ printf("\nmgm mgp %d ",(int)age);
+ for(j=1; j<=nlstate;j++){
+ printf("%d ",j);
+ for(theta=1; theta <=npar; theta++)
+ printf("%d %lf %lf",theta,mgm[theta][j],mgp[theta][j]);
+ printf("\n ");
+ }
+ }
+ if((int)age==68 ||(int)age== 69 ){
+ printf("\n gradg %d ",(int)age);
+ for(j=1; j<=nlstate;j++){
+ printf("%d ",j);
+ for(theta=1; theta <=npar; theta++)
+ printf("%d %lf ",theta,gradg[theta][j]);
+ printf("\n ");
+ }
+ }
for(i=1;i<=nlstate;i++)
varpl[i][(int)age] =0.;
+ if((int)age==68 ||(int)age== 69 ){
+ matprod2(dnewm,trgradg,1,nlstate,1,npar,1,npar,matcov);
+ matprod2(doldm,dnewm,1,nlstate,1,npar,1,nlstate,gradg);
+ }else{
matprod2(dnewm,trgradg,1,nlstate,1,npar,1,npar,matcov);
matprod2(doldm,dnewm,1,nlstate,1,npar,1,nlstate,gradg);
+ }
for(i=1;i<=nlstate;i++)
varpl[i][(int)age] = doldm[i][i]; /* Covariances are useless */
@@ -4334,6 +4437,8 @@ void cvevsij(double ***eij, double x[],
fprintf(ficresvpl,"\n");
free_vector(gp,1,nlstate);
free_vector(gm,1,nlstate);
+ free_matrix(mgm,1,npar,1,nlstate);
+ free_matrix(mgp,1,npar,1,nlstate);
free_matrix(gradg,1,npar,1,nlstate);
free_matrix(trgradg,1,nlstate,1,npar);
} /* End age */
@@ -4745,7 +4850,7 @@ divided by h: hPij/h : \n- Survival functions from state %d in any different live states and total.\
+ fprintf(fichtm,"
\n- Survival functions from state %d in each live state and total.\
Or probability to survive in various states (1 to %d) being in state %d at different ages.\
%s%d_%d.svg
", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,jj1,subdirf2(optionfilefiname,"LIJT_"),cpt,jj1,subdirf2(optionfilefiname,"LIJT_"),cpt,jj1);
}
@@ -4755,7 +4860,7 @@ divided by h: hPij/h : ", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,jj1,subdirf2(optionfilefiname,"P_"),cpt,jj1,subdirf2(optionfilefiname,"P_"),cpt,jj1);
}
for(cpt=1; cpt<=nlstate;cpt++) {
- fprintf(fichtm,"\n
- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) (or area under each survival functions): %s%d%d.svg
\
+ fprintf(fichtm,"\n
- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) (or area under each survival functions): %s_%d%d.svg
\
",cpt,nlstate,subdirf2(optionfilefiname,"EXP_"),cpt,jj1,subdirf2(optionfilefiname,"EXP_"),cpt,jj1,subdirf2(optionfilefiname,"EXP_"),cpt,jj1);
}
/* } /\* end i1 *\/ */
@@ -4825,15 +4930,15 @@ See page 'Matrix of variance-covariance
}
for(cpt=1; cpt<=nlstate;cpt++) {
fprintf(fichtm,"
- Observed (cross-sectional) and period (incidence based) \
-prevalence (with 95%% confidence interval) in state (%d): %s%d_%d.svg
\
-",cpt,subdirf2(optionfilefiname,"V_"),cpt,jj1,subdirf2(optionfilefiname,"V_"),cpt,jj1);
+prevalence (with 95%% confidence interval) in state (%d): %s_%d-%d.svg
\
+",cpt,subdirf2(optionfilefiname,"V_"),cpt,jj1,subdirf2(optionfilefiname,"V_"),cpt,jj1,subdirf2(optionfilefiname,"V_"),cpt,jj1);
}
fprintf(fichtm,"\n
- Total life expectancy by age and \
health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \
true period expectancies (those weighted with period prevalences are also\
drawn in addition to the population based expectancies computed using\
- observed and cahotic prevalences: %s_%d.svg
\
-",subdirf2(optionfilefiname,"E_"),jj1,subdirf2(optionfilefiname,"E_"),jj1);
+ observed and cahotic prevalences: %s_%d.svg
\
+",subdirf2(optionfilefiname,"E_"),jj1,subdirf2(optionfilefiname,"E_"),jj1,subdirf2(optionfilefiname,"E_"),jj1);
/* } /\* end i1 *\/ */
}/* End k1 */
fprintf(fichtm,"");
@@ -4862,14 +4967,27 @@ void printinggnuplot(char fileresu[], ch
fprintf(ficgp,"\n# Contributions to the Likelihood, mle >=1. For mle=4 no interpolation, pure matrix products.\n#\n");
fprintf(ficgp,"\n set log y; unset log x;set xlabel \"Age\"; set ylabel \"Likelihood (-2Log(L))\";");
/* fprintf(ficgp,"\nset ter svg size 640, 480"); */ /* Too big for svg */
- fprintf(ficgp,"\nset ter png size 640, 480");
-/* good for mle=4 plot by number of matrix products.
+ fprintf(ficgp,"\nset ter pngcairo size 640, 480");
+/* nice for mle=4 plot by number of matrix products.
replot "rrtest1/toto.txt" u 2:($4 == 1 && $5==2 ? $9 : 1/0):5 t "p12" with point lc 1 */
/* replot exp(p1+p2*x)/(1+exp(p1+p2*x)+exp(p3+p4*x)+exp(p5+p6*x)) t "p12(x)" */
/* fprintf(ficgp,"\nset out \"%s.svg\";",subdirf2(optionfilefiname,"ILK_")); */
- fprintf(ficgp,"\nset out \"%s.png\";",subdirf2(optionfilefiname,"ILK_"));
- fprintf(ficgp,"\nplot \"%s\" u 2:(-$11):3 t \"All sample, all transitions\" with dots lc variable",subdirf(fileresilk));
- fprintf(ficgp,"\nreplot \"%s\" u 2:($3 <= 3 ? -$11 : 1/0):3 t \"First 3 individuals\" with line lc variable", subdirf(fileresilk));
+ fprintf(ficgp,"\nset out \"%s-dest.png\";",subdirf2(optionfilefiname,"ILK_"));
+ fprintf(ficgp,"\nset log y;plot \"%s\" u 2:(-$12):5 t \"All sample, transitions colored by destination\" with dots lc variable; set out;\n",subdirf(fileresilk));
+ fprintf(ficgp,"\nset out \"%s-ori.png\";",subdirf2(optionfilefiname,"ILK_"));
+ fprintf(ficgp,"\nset log y;plot \"%s\" u 2:(-$12):4 t \"All sample, transitions colored by origin\" with dots lc variable; set out;\n\n",subdirf(fileresilk));
+ for (i=1; i<= nlstate ; i ++) {
+ fprintf(ficgp,"\nset out \"%s-p%dj.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i);
+ fprintf(ficgp,"unset log;\n# plot weighted, mean weight should have point size of 0.5\n plot \"%s\"",subdirf(fileresilk));
+ fprintf(ficgp," u 2:($4 == %d && $5==%d ? $9 : 1/0):($11/4.):5 t \"p%d%d\" with points pointtype 7 ps variable lc variable \\\n",i,1,i,1);
+ for (j=2; j<= nlstate+ndeath ; j ++) {
+ fprintf(ficgp,",\\\n \"\" u 2:($4 == %d && $5==%d ? $9 : 1/0):($11/4.):5 t \"p%d%d\" with points pointtype 7 ps variable lc variable ",i,j,i,j);
+ }
+ fprintf(ficgp,";\nset out; unset ylabel;\n");
+ }
+ /* unset log; plot "rrtest1_sorted_4/ILK_rrtest1_sorted_4.txt" u 2:($4 == 1 && $5==2 ? $9 : 1/0):5 t "p12" with points lc variable */
+ /* fprintf(ficgp,"\nset log y;plot \"%s\" u 2:(-$11):3 t \"All sample, all transitions\" with dots lc variable",subdirf(fileresilk)); */
+ /* fprintf(ficgp,"\nreplot \"%s\" u 2:($3 <= 3 ? -$11 : 1/0):3 t \"First 3 individuals\" with line lc variable", subdirf(fileresilk)); */
fprintf(ficgp,"\nset out;unset log\n");
/* fprintf(ficgp,"\nset out \"%s.svg\"; replot; set out; # bug gnuplot",subdirf2(optionfilefiname,"ILK_")); */
@@ -6718,14 +6836,23 @@ int main(int argc, char *argv[])
printf("\nIMaCh version %s, %s\n%s",version, copyright, fullversion);
if(argc <=1){
printf("\nEnter the parameter file name: ");
- fgets(pathr,FILENAMELENGTH,stdin);
+ if(!fgets(pathr,FILENAMELENGTH,stdin)){
+ printf("ERROR Empty parameter file name\n");
+ goto end;
+ }
i=strlen(pathr);
if(pathr[i-1]=='\n')
pathr[i-1]='\0';
i=strlen(pathr);
- if(pathr[i-1]==' ') /* This may happen when dragging on oS/X! */
+ if(i >= 1 && pathr[i-1]==' ') {/* This may happen when dragging on oS/X! */
pathr[i-1]='\0';
- for (tok = pathr; tok != NULL; ){
+ }
+ i=strlen(pathr);
+ if( i==0 ){
+ printf("ERROR Empty parameter file name\n");
+ goto end;
+ }
+ for (tok = pathr; tok != NULL; ){
printf("Pathr |%s|\n",pathr);
while ((val = strsep(&tok, "\"" )) != NULL && *val == '\0');
printf("val= |%s| pathr=%s\n",val,pathr);
@@ -7319,7 +7446,7 @@ Please run with mle=-1 to get a correct
printf("Problem with file %s",optionfilegnuplot);
}
else{
- fprintf(ficgp,"\n# %s\n", version);
+ fprintf(ficgp,"\n# IMaCh-%s\n", version);
fprintf(ficgp,"# %s\n", optionfilegnuplot);
//fprintf(ficgp,"set missing 'NaNq'\n");
fprintf(ficgp,"set datafile missing 'NaNq'\n");
@@ -7346,13 +7473,15 @@ Please run with mle=-1 to get a correct
else{
fprintf(fichtmcov,"\nIMaCh Cov %s\n %s
%s \
\n\
-Title=%s
Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s
\n",\
+Title=%s
Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s
\n",\
optionfilehtmcov,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model);
}
- fprintf(fichtm,"\nIMaCh %s\n %s
%s \
+ fprintf(fichtm,"\n\n\nIMaCh %s\n IMaCh for Interpolated Markov Chain
\nSponsored by Copyright (C) 2002-2015 INED-EUROREVES-Institut de longévité-Japan Society for the Promotion of Sciences 日本学術振興会 (Grant-in-Aid for Scientific Research 25293121) - Intel Software 2015
\
+
\n\
+IMaCh-%s
%s \
\n\
-Title=%s
Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s
\n\
+Title=%s
Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s
\n\
\n\
\
Parameter files
\n\
@@ -7619,24 +7748,30 @@ Please run with mle=-1 to get a correct
free_matrix(ximort,1,NDIM,1,NDIM);
#endif
} /* Endof if mle==-3 mortality only */
- /* Standard maximisation */
- else{ /* For mle !=- 3 */
- globpr=0;/* debug */
- /* Computes likelihood for initial parameters */
+ /* Standard */
+ else{ /* For mle !=- 3, could be 0 or 1 or 4 etc. */
+ globpr=0;/* Computes sum of likelihood for globpr=1 and funcone */
+ /* Computes likelihood for initial parameters, uses funcone to compute gpimx and gsw */
likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */
printf("First Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw);
for (k=1; k<=npar;k++)
printf(" %d %8.5f",k,p[k]);
printf("\n");
- globpr=1; /* again, to print the contributions */
+ if(mle>=1){ /* Could be 1 or 2, Real Maximization */
+ /* mlikeli uses func not funcone */
+ mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func);
+ }
+ if(mle==0) {/* No optimization, will print the likelihoods for the datafile */
+ globpr=0;/* Computes sum of likelihood for globpr=1 and funcone */
+ /* Computes likelihood for initial parameters, uses funcone to compute gpimx and gsw */
+ likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */
+ }
+ globpr=1; /* again, to print the individual contributions using computed gpimx and gsw */
likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */
printf("Second Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw);
for (k=1; k<=npar;k++)
printf(" %d %8.5f",k,p[k]);
printf("\n");
- if(mle>=1){ /* Could be 1 or 2, Real Maximisation */
- mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func);
- }
/*--------- results files --------------*/
fprintf(ficres,"title=%s datafile=%s lastobs=%d firstpass=%d lastpass=%d\nftol=%e stepm=%d ncovcol=%d nlstate=%d ndeath=%d maxwav=%d mle= 0 weight=%d\nmodel=1+age+%s.\n", title, datafile, lastobs, firstpass,lastpass,ftol, stepm, ncovcol, nlstate, ndeath, maxwav, weightopt,model);
@@ -7966,8 +8101,8 @@ Please run with mle=-1 to get a correct
printf("Problem with Health Exp. resultfile: %s\n", filerese); exit(0);
fprintf(ficlog,"Problem with Health Exp. resultfile: %s\n", filerese); exit(0);
}
- printf("Computing Health Expectancies: result on file '%s' \n", filerese);
- fprintf(ficlog,"Computing Health Expectancies: result on file '%s' \n", filerese);
+ printf("Computing Health Expectancies: result on file '%s' ...", filerese);fflush(stdout);
+ fprintf(ficlog,"Computing Health Expectancies: result on file '%s' ...", filerese);fflush(ficlog);
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/
@@ -7986,7 +8121,8 @@ Please run with mle=-1 to get a correct
/*}*/
}
fclose(ficreseij);
-
+ printf("done evsij\n");fflush(stdout);
+ fprintf(ficlog,"done evsij\n");fflush(ficlog);
/*---------- Health expectancies and variances ------------*/
@@ -7997,8 +8133,8 @@ Please run with mle=-1 to get a correct
printf("Problem with total LE resultfile: %s\n", filerest);goto end;
fprintf(ficlog,"Problem with total LE resultfile: %s\n", filerest);goto end;
}
- printf("Computing Total Life expectancies with their standard errors: file '%s' \n", filerest);
- fprintf(ficlog,"Computing Total Life expectancies with their standard errors: file '%s' \n", filerest);
+ printf("Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(stdout);
+ fprintf(ficlog,"Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(ficlog);
strcpy(fileresstde,"STDE_");
@@ -8007,8 +8143,8 @@ Please run with mle=-1 to get a correct
printf("Problem with Health Exp. and std errors resultfile: %s\n", fileresstde); exit(0);
fprintf(ficlog,"Problem with Health Exp. and std errors resultfile: %s\n", fileresstde); exit(0);
}
- printf("Computing Health Expectancies and standard errors: result on file '%s' \n", fileresstde);
- fprintf(ficlog,"Computing Health Expectancies and standard errors: result on file '%s' \n", fileresstde);
+ printf(" Computing Health Expectancies and standard errors: result on file '%s' \n", fileresstde);
+ fprintf(ficlog," Computing Health Expectancies and standard errors: result on file '%s' \n", fileresstde);
strcpy(filerescve,"CVE_");
strcat(filerescve,fileresu);
@@ -8016,8 +8152,8 @@ Please run with mle=-1 to get a correct
printf("Problem with Covar. Health Exp. resultfile: %s\n", filerescve); exit(0);
fprintf(ficlog,"Problem with Covar. Health Exp. resultfile: %s\n", filerescve); exit(0);
}
- printf("Computing Covar. of Health Expectancies: result on file '%s' \n", filerescve);
- fprintf(ficlog,"Computing Covar. of Health Expectancies: result on file '%s' \n", filerescve);
+ printf(" Computing Covar. of Health Expectancies: result on file '%s' \n", filerescve);
+ fprintf(ficlog," Computing Covar. of Health Expectancies: result on file '%s' \n", filerescve);
strcpy(fileresv,"V_");
strcat(fileresv,fileresu);
@@ -8025,96 +8161,109 @@ Please run with mle=-1 to get a correct
printf("Problem with variance resultfile: %s\n", fileresv);exit(0);
fprintf(ficlog,"Problem with variance resultfile: %s\n", fileresv);exit(0);
}
- printf("Computing Variance-covariance of DFLEs: file '%s' \n", fileresv);
- fprintf(ficlog,"Computing Variance-covariance of DFLEs: file '%s' \n", fileresv);
+ printf(" Computing Variance-covariance of DFLEs: file '%s' ... ", fileresv);fflush(stdout);
+ fprintf(ficlog," Computing Variance-covariance of DFLEs: file '%s' ... ", fileresv);fflush(ficlog);
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/
for (k=1; k <= (int) pow(2,cptcoveff); k++){
- fprintf(ficrest,"\n#****** ");
- for(j=1;j<=cptcoveff;j++)
- fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
- fprintf(ficrest,"******\n");
-
- fprintf(ficresstdeij,"\n#****** ");
- fprintf(ficrescveij,"\n#****** ");
- for(j=1;j<=cptcoveff;j++) {
- fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
- fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
- }
- fprintf(ficresstdeij,"******\n");
- fprintf(ficrescveij,"******\n");
-
- fprintf(ficresvij,"\n#****** ");
- for(j=1;j<=cptcoveff;j++)
- fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
- fprintf(ficresvij,"******\n");
-
- eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage);
- oldm=oldms;savm=savms;
- cvevsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov, strstart);
- /*
- */
- /* goto endfree; */
-
- vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage);
- pstamp(ficrest);
-
-
- for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/
- oldm=oldms;savm=savms; /* ZZ Segmentation fault */
- cptcod= 0; /* To be deleted */
- varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, ncvyear, k, estepm, cptcov,cptcod,vpopbased,mobilav, strstart); /* cptcod not initialized Intel */
- fprintf(ficrest,"# Total life expectancy with std error and decomposition into time to be expected in each health state\n# (weighted average of eij where weights are ");
- if(vpopbased==1)
- fprintf(ficrest,"the age specific prevalence observed (cross-sectionally) in the population i.e cross-sectionally\n in each health state (popbased=1) (mobilav=%d)\n",mobilav);
- else
- fprintf(ficrest,"the age specific period (stable) prevalences in each health state \n");
- fprintf(ficrest,"# Age popbased mobilav e.. (std) ");
- for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i);
- fprintf(ficrest,"\n");
- /* printf("Which p?\n"); for(i=1;i<=npar;i++)printf("p[i=%d]=%lf,",i,p[i]);printf("\n"); */
- epj=vector(1,nlstate+1);
- for(age=bage; age <=fage ;age++){
- prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyear, k); /*ZZ Is it the correct prevalim */
- if (vpopbased==1) {
- if(mobilav ==0){
- for(i=1; i<=nlstate;i++)
- prlim[i][i]=probs[(int)age][i][k];
- }else{ /* mobilav */
- for(i=1; i<=nlstate;i++)
- prlim[i][i]=mobaverage[(int)age][i][k];
- }
- }
-
- fprintf(ficrest," %4.0f %d %d",age, vpopbased, mobilav);
- /* printf(" age %4.0f ",age); */
- for(j=1, epj[nlstate+1]=0.;j <=nlstate;j++){
- for(i=1, epj[j]=0.;i <=nlstate;i++) {
- epj[j] += prlim[i][i]*eij[i][j][(int)age];
- /*ZZZ printf("%lf %lf ", prlim[i][i] ,eij[i][j][(int)age]);*/
- /* printf("%lf %lf ", prlim[i][i] ,eij[i][j][(int)age]); */
- }
- epj[nlstate+1] +=epj[j];
+ fprintf(ficrest,"\n#****** ");
+ for(j=1;j<=cptcoveff;j++)
+ fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
+ fprintf(ficrest,"******\n");
+
+ fprintf(ficresstdeij,"\n#****** ");
+ fprintf(ficrescveij,"\n#****** ");
+ for(j=1;j<=cptcoveff;j++) {
+ fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
+ fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
+ }
+ fprintf(ficresstdeij,"******\n");
+ fprintf(ficrescveij,"******\n");
+
+ fprintf(ficresvij,"\n#****** ");
+ for(j=1;j<=cptcoveff;j++)
+ fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
+ fprintf(ficresvij,"******\n");
+
+ eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage);
+ oldm=oldms;savm=savms;
+ printf(" cvevsij %d, ",k);
+ fprintf(ficlog, " cvevsij %d, ",k);
+ cvevsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov, strstart);
+ printf(" end cvevsij \n ");
+ fprintf(ficlog, " end cvevsij \n ");
+
+ /*
+ */
+ /* goto endfree; */
+
+ vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage);
+ pstamp(ficrest);
+
+
+ for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/
+ oldm=oldms;savm=savms; /* ZZ Segmentation fault */
+ cptcod= 0; /* To be deleted */
+ printf("varevsij %d \n",vpopbased);
+ fprintf(ficlog, "varevsij %d \n",vpopbased);
+ varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, ncvyear, k, estepm, cptcov,cptcod,vpopbased,mobilav, strstart); /* cptcod not initialized Intel */
+ fprintf(ficrest,"# Total life expectancy with std error and decomposition into time to be expected in each health state\n# (weighted average of eij where weights are ");
+ if(vpopbased==1)
+ fprintf(ficrest,"the age specific prevalence observed (cross-sectionally) in the population i.e cross-sectionally\n in each health state (popbased=1) (mobilav=%d)\n",mobilav);
+ else
+ fprintf(ficrest,"the age specific period (stable) prevalences in each health state \n");
+ fprintf(ficrest,"# Age popbased mobilav e.. (std) ");
+ for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i);
+ fprintf(ficrest,"\n");
+ /* printf("Which p?\n"); for(i=1;i<=npar;i++)printf("p[i=%d]=%lf,",i,p[i]);printf("\n"); */
+ epj=vector(1,nlstate+1);
+ printf("Computing age specific period (stable) prevalences in each health state \n");
+ fprintf(ficlog,"Computing age specific period (stable) prevalences in each health state \n");
+ for(age=bage; age <=fage ;age++){
+ prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyear, k); /*ZZ Is it the correct prevalim */
+ if (vpopbased==1) {
+ if(mobilav ==0){
+ for(i=1; i<=nlstate;i++)
+ prlim[i][i]=probs[(int)age][i][k];
+ }else{ /* mobilav */
+ for(i=1; i<=nlstate;i++)
+ prlim[i][i]=mobaverage[(int)age][i][k];
}
- /* printf(" age %4.0f \n",age); */
-
- for(i=1, vepp=0.;i <=nlstate;i++)
- for(j=1;j <=nlstate;j++)
- vepp += vareij[i][j][(int)age];
- fprintf(ficrest," %7.3f (%7.3f)", epj[nlstate+1],sqrt(vepp));
- for(j=1;j <=nlstate;j++){
- fprintf(ficrest," %7.3f (%7.3f)", epj[j],sqrt(vareij[j][j][(int)age]));
+ }
+
+ fprintf(ficrest," %4.0f %d %d",age, vpopbased, mobilav);
+ /* fprintf(ficrest," %4.0f %d %d %d %d",age, vpopbased, mobilav,Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); */ /* to be done */
+ /* printf(" age %4.0f ",age); */
+ for(j=1, epj[nlstate+1]=0.;j <=nlstate;j++){
+ for(i=1, epj[j]=0.;i <=nlstate;i++) {
+ epj[j] += prlim[i][i]*eij[i][j][(int)age];
+ /*ZZZ printf("%lf %lf ", prlim[i][i] ,eij[i][j][(int)age]);*/
+ /* printf("%lf %lf ", prlim[i][i] ,eij[i][j][(int)age]); */
}
- fprintf(ficrest,"\n");
+ epj[nlstate+1] +=epj[j];
}
+ /* printf(" age %4.0f \n",age); */
+
+ for(i=1, vepp=0.;i <=nlstate;i++)
+ for(j=1;j <=nlstate;j++)
+ vepp += vareij[i][j][(int)age];
+ fprintf(ficrest," %7.3f (%7.3f)", epj[nlstate+1],sqrt(vepp));
+ for(j=1;j <=nlstate;j++){
+ fprintf(ficrest," %7.3f (%7.3f)", epj[j],sqrt(vareij[j][j][(int)age]));
+ }
+ fprintf(ficrest,"\n");
}
- free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage);
- free_ma3x(vareij,1,nlstate,1,nlstate,(int) bage, (int)fage);
- free_vector(epj,1,nlstate+1);
+ } /* End vpopbased */
+ free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage);
+ free_ma3x(vareij,1,nlstate,1,nlstate,(int) bage, (int)fage);
+ free_vector(epj,1,nlstate+1);
+ printf("done \n");fflush(stdout);
+ fprintf(ficlog,"done\n");fflush(ficlog);
+
/*}*/
- }
+ } /* End k */
free_vector(weight,1,n);
free_imatrix(Tvard,1,NCOVMAX,1,2);
free_imatrix(s,1,maxwav+1,1,n);
@@ -8126,6 +8275,8 @@ Please run with mle=-1 to get a correct
fclose(ficrescveij);
fclose(ficresvij);
fclose(ficrest);
+ printf("done Health expectancies\n");fflush(stdout);
+ fprintf(ficlog,"done Health expectancies\n");fflush(ficlog);
fclose(ficpar);
/*------- Variance of period (stable) prevalence------*/
@@ -8136,7 +8287,8 @@ Please run with mle=-1 to get a correct
printf("Problem with variance of period (stable) prevalence resultfile: %s\n", fileresvpl);
exit(0);
}
- printf("Computing Variance-covariance of period (stable) prevalence: file '%s' \n", fileresvpl);
+ printf("Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(stdout);
+ fprintf(ficlog, "Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(ficlog);
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/
@@ -8155,6 +8307,8 @@ Please run with mle=-1 to get a correct
}
fclose(ficresvpl);
+ printf("done variance-covariance of period prevalence\n");fflush(stdout);
+ fprintf(ficlog,"done variance-covariance of period prevalence\n");fflush(ficlog);
/*---------- End : free ----------------*/
if (mobilav!=0) free_ma3x(mobaverage,1, AGESUP,1,NCOVMAX, 1,NCOVMAX);