--- imach/src/imach.c 2015/09/07 14:09:23 1.199
+++ imach/src/imach.c 2015/09/09 16:53:55 1.200
@@ -1,6 +1,11 @@
-/* $Id: imach.c,v 1.199 2015/09/07 14:09:23 brouard Exp $
+/* $Id: imach.c,v 1.200 2015/09/09 16:53:55 brouard Exp $
$State: Exp $
$Log: imach.c,v $
+ Revision 1.200 2015/09/09 16:53:55 brouard
+ Summary: Big bug thanks to Flavia
+
+ Even model=1+age+V2. did not work anymore
+
Revision 1.199 2015/09/07 14:09:23 brouard
Summary: 0.98q6 changing default small png format for graph to vectorized svg.
@@ -720,12 +725,12 @@ typedef struct {
#define ODIRSEPARATOR '\\'
#endif
-/* $Id: imach.c,v 1.199 2015/09/07 14:09:23 brouard Exp $ */
+/* $Id: imach.c,v 1.200 2015/09/09 16:53:55 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.199 $ $Date: 2015/09/07 14:09:23 $";
+char fullversion[]="$Revision: 1.200 $ $Date: 2015/09/09 16:53:55 $";
char strstart[80];
char optionfilext[10], optionfilefiname[FILENAMELENGTH];
int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */
@@ -881,7 +886,7 @@ double idx;
int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */
int *Tage;
int *Ndum; /** Freq of modality (tricode */
-int **codtab; /**< codtab=imatrix(1,100,1,10); */
+/* int **codtab;*/ /**< codtab=imatrix(1,100,1,10); */
int **Tvard, *Tprod, cptcovprod, *Tvaraff;
double *lsurv, *lpop, *tpop;
@@ -1917,13 +1922,16 @@ double **prevalim(double **prlim, int nl
if(nagesqr==1)
cov[3]= agefin*agefin;;
for (k=1; k<=cptcovn;k++) {
- cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])];
+ /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; */
+ cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)];
/* printf("prevalim ij=%d k=%d Tvar[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, Tvar[k],nbcode[Tvar[k]][codtabm(ij,Tvar[k])],cov[2+k], ij, k, codtabm(ij,Tvar[k])]); */
}
/*wrong? for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */
- for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]*cov[2];
+ /* for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]*cov[2]; */
+ for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,k)]*cov[2];
for (k=1; k<=cptcovprod;k++) /* Useless */
- cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])];
+ /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */
+ cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)];
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/
@@ -2096,12 +2104,15 @@ double ***hpxij(double ***po, int nhstep
if(nagesqr==1)
cov[3]= agexact*agexact;
for (k=1; k<=cptcovn;k++)
- cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])];
+ cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)];
+ /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; */
for (k=1; k<=cptcovage;k++) /* Should start at cptcovn+1 */
/* cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */
- cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2];
+ cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2];
+ /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */
for (k=1; k<=cptcovprod;k++) /* Useless because included in cptcovn */
- cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])];
+ cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)];
+ /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/
@@ -3842,7 +3853,8 @@ void varevsij(char optionfilefiname[], d
}
fprintf(ficresprobmorprev,"\n");
fprintf(ficgp,"\n# Routine varevsij");
- /* fprintf(fichtm, "#Local time at start: %s", strstart);*/
+ fprintf(ficgp,"\nunset title \n");
+/* fprintf(fichtm, "#Local time at start: %s", strstart);*/
fprintf(fichtm,"\n
Computing probabilities of dying over estepm months as a weighted average (i.e global mortality independent of initial healh state)
\n");
fprintf(fichtm,"\n
%s
\n",digitp);
/* } */
@@ -4058,6 +4070,7 @@ void varevsij(char optionfilefiname[], d
fprintf(ficgp,"\nunset parametric;unset label; set ter svg size 640, 480");
/* for(j=nlstate+1; j<= nlstate+ndeath; j++){ *//* Only the first actually */
fprintf(ficgp,"\n set log y; unset log x;set xlabel \"Age\"; set ylabel \"Force of mortality (year-1)\";");
+ fprintf(ficgp,"\nset out \"%s%s.svg\";",subdirf3(optionfilefiname,"varmuptjgr",digitp),digit);
/* fprintf(ficgp,"\n plot \"%s\" u 1:($3*%6.3f) not w l 1 ",fileresprobmorprev,YEARM/estepm); */
/* fprintf(ficgp,"\n replot \"%s\" u 1:(($3+1.96*$4)*%6.3f) t \"95\%% interval\" w l 2 ",fileresprobmorprev,YEARM/estepm); */
/* fprintf(ficgp,"\n replot \"%s\" u 1:(($3-1.96*$4)*%6.3f) not w l 2 ",fileresprobmorprev,YEARM/estepm); */
@@ -4069,7 +4082,7 @@ void varevsij(char optionfilefiname[], d
/* fprintf(fichtm,"\n
Probability is computed over estepm=%d months and then divided by estepm and multiplied by %.0f in order to have the probability to die over a year
\n", stepm,YEARM,digitp,digit);
*/
/* fprintf(ficgp,"\nset out \"varmuptjgr%s%s%s.svg\";replot;",digitp,optionfilefiname,digit); */
- fprintf(ficgp,"\nset out \"%s%s.svg\";replot;\n",subdirf3(optionfilefiname,"varmuptjgr",digitp),digit);
+ fprintf(ficgp,"\nset out;\nset out \"%s%s.svg\";replot;set out;\n",subdirf3(optionfilefiname,"varmuptjgr",digitp),digit);
free_vector(xp,1,npar);
free_matrix(doldm,1,nlstate,1,nlstate);
@@ -4242,7 +4255,7 @@ void varprob(char optionfilefiname[], do
fprintf(fichtm,"\n Computing and drawing one step probabilities with their confidence intervals
\n");
fprintf(fichtm,"\n");
- fprintf(fichtm,"\nthis page is important in order to visualize confidence intervals and especially correlation between disability and recovery\n",optionfilehtmcov);
+ fprintf(fichtm,"\n this page is important in order to visualize confidence intervals and especially correlation between disability and recovery, or more generally, way in and way back.\n",optionfilehtmcov);
fprintf(fichtmcov,"Current page is file %s
\n\nMatrix of variance-covariance of pairs of step probabilities
\n",optionfilehtmcov, optionfilehtmcov);
fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (pij, pkl) are estimated \
and drawn. It helps understanding how is the covariance between two incidences.\
@@ -4294,7 +4307,8 @@ To be simple, these graphs help to under
if(nagesqr==1)
cov[3]= age*age;
for (k=1; k<=cptcovn;k++) {
- cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];/* j1 1 2 3 4
+ cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)];
+ /*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*//* j1 1 2 3 4
* 1 1 1 1 1
* 2 2 1 1 1
* 3 1 2 1 1
@@ -4302,9 +4316,9 @@ To be simple, these graphs help to under
/* nbcode[1][1]=0 nbcode[1][2]=1;*/
}
/* for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */
- for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2];
+ for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2];
for (k=1; k<=cptcovprod;k++)
- cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])];
+ cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)];
for(theta=1; theta <=npar; theta++){
@@ -4452,6 +4466,7 @@ To be simple, these graphs help to under
/* mu2+ v21*lc1*cost + v22*lc2*sin(t) */
if(first==1){
first=0;
+ fprintf(ficgp,"\n# Ellipsoids of confidence\n#\n");
fprintf(ficgp,"\nset parametric;unset label");
fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2);
fprintf(ficgp,"\nset ter svg size 640, 480");
@@ -4479,7 +4494,7 @@ To be simple, these graphs help to under
}/* if first */
} /* age mod 5 */
} /* end loop age */
- fprintf(ficgp,"\nset out \"%s%d%1d%1d-%1d%1d.svg\";replot;",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
+ fprintf(ficgp,"\nset out;\nset out \"%s%d%1d%1d-%1d%1d.svg\";replot;set out;",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
first=1;
} /*l12 */
} /* k12 */
@@ -4790,7 +4805,7 @@ plot [%.f:%.f] ", ageminpar, agemaxpar)
fprintf(ficgp,"##############\n#\n");
/*goto avoid;*/
- fprintf(ficgp,"\n##############\n#Graphics of of probabilities or incidences\n#############\n");
+ fprintf(ficgp,"\n##############\n#Graphics of probabilities or incidences\n#############\n");
fprintf(ficgp,"# logi(p12/p11)=a12+b12*age+c12age*age+d12*V1+e12*V1*age\n");
fprintf(ficgp,"# logi(p12/p11)=p1 +p2*age +p3*age*age+ p4*V1+ p5*V1*age\n");
fprintf(ficgp,"# logi(p13/p11)=a13+b13*age+c13age*age+d13*V1+e13*V1*age\n");
@@ -4813,7 +4828,7 @@ plot [%.f:%.f] ", ageminpar, agemaxpar)
if (ng==2)
fprintf(ficgp,"\nset ylabel \"Quasi-incidence per year\"\n");
else
- fprintf(ficgp,"\nset title \"Probability\"\n");
+ fprintf(ficgp,"\nunset title \n");
fprintf(ficgp,"\nset ter svg size 640, 480\nset log y\nplot [%.f:%.f] ",ageminpar,agemaxpar);
i=1;
for(k2=1; k2<=nlstate; k2++) {
@@ -4835,7 +4850,8 @@ plot [%.f:%.f] ", ageminpar, agemaxpar)
/* printf("Tage[%d]=%d, j=%d\n", ij, Tage[ij], j); */
if(ij <=cptcovage) { /* Bug valgrind */
if((j-2)==Tage[ij]) { /* Bug valgrind */
- fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]);
+ fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,j-2)]);
+ /* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]); */
ij++;
}
}
@@ -4854,7 +4870,8 @@ plot [%.f:%.f] ", ageminpar, agemaxpar)
for(j=3; j <=ncovmodel-nagesqr; j++){
if(ij <=cptcovage) { /* Bug valgrind */
if((j-2)==Tage[ij]) { /* Bug valgrind */
- fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]);
+ fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,j-2)]);
+ /* fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]); */
ij++;
}
}
@@ -6179,9 +6196,9 @@ int prevalence_limit(double *p, double *
k=k+1;
/* to clean */
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));
- fprintf(ficrespl,"\n#******");
- printf("\n#******");
- fprintf(ficlog,"\n#******");
+ fprintf(ficrespl,"#******");
+ printf("#******");
+ fprintf(ficlog,"#******");
for(j=1;j<=cptcoveff;j++) {
fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
@@ -6193,7 +6210,7 @@ int prevalence_limit(double *p, double *
fprintf(ficrespl,"#Age ");
for(j=1;j<=cptcoveff;j++) {
- fprintf(ficrespl,"V%d %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
+ fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
}
for(i=1; i<=nlstate;i++) fprintf(ficrespl,"%d-%d ",i,i);
fprintf(ficrespl,"\n");
@@ -6921,7 +6938,7 @@ Please run with mle=-1 to get a correct
V2+V1*age, there are 3 covariates Tvar[2]=1 (V1).*/
/* 1 to ncodemax[j] is the maximum value of this jth covariate */
- codtab=imatrix(1,100,1,10); /* codtab[h,k]=( (h-1) - mod(k-1,2**(k-1) )/2**(k-1) */
+ /* codtab=imatrix(1,100,1,10);*/ /* codtab[h,k]=( (h-1) - mod(k-1,2**(k-1) )/2**(k-1) */
/*printf(" codtab[1,1],codtab[100,10]=%d,%d\n", codtab[1][1],codtabm(100,10));*/
/* codtab gives the value 1 or 2 of the hth combination of k covariates (1 or 2).*/
h=0;
@@ -6956,10 +6973,10 @@ Please run with mle=-1 to get a correct
*/
for(h=1; h <=100 ;h++){
/* printf("h=%2d ", h); */
- for(k=1; k <=10; k++){
+ /* for(k=1; k <=10; k++){ */
/* printf("k=%d %d ",k,codtabm(h,k)); */
- codtab[h][k]=codtabm(h,k);
- }
+ /* codtab[h][k]=codtabm(h,k); */
+ /* } */
/* printf("\n"); */
}
/* for(k=1;k<=cptcoveff; k++){ /\* scans any effective covariate *\/ */
@@ -7653,7 +7670,7 @@ Please run with mle=-1 to get a correct
for (k=1; k <= (int) pow(2,cptcoveff); k++){
fprintf(ficreseij,"\n#****** ");
for(j=1;j<=cptcoveff;j++) {
- fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
+ fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
}
fprintf(ficreseij,"******\n");
@@ -7713,21 +7730,21 @@ Please run with mle=-1 to get a correct
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]][codtab[k][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]][codtab[k][j]]);
- fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][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]][codtab[k][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);
@@ -7823,7 +7840,7 @@ Please run with mle=-1 to get a correct
for (k=1; k <= (int) pow(2,cptcoveff); k++){
fprintf(ficresvpl,"\n#****** ");
for(j=1;j<=cptcoveff;j++)
- fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtab[k][j]]);
+ fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]);
fprintf(ficresvpl,"******\n");
varpl=matrix(1,nlstate,(int) bage, (int) fage);
@@ -7860,7 +7877,7 @@ Please run with mle=-1 to get a correct
free_ivector(Tage,1,NCOVMAX);
free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX);
- free_imatrix(codtab,1,100,1,10);
+ /* free_imatrix(codtab,1,100,1,10); */
fflush(fichtm);
fflush(ficgp);