--- imach/src/imach.c 2022/09/11 19:54:09 1.342
+++ imach/src/imach.c 2022/09/14 19:33:30 1.344
@@ -1,6 +1,18 @@
-/* $Id: imach.c,v 1.342 2022/09/11 19:54:09 brouard Exp $
+/* $Id: imach.c,v 1.344 2022/09/14 19:33:30 brouard Exp $
$State: Exp $
$Log: imach.c,v $
+ Revision 1.344 2022/09/14 19:33:30 brouard
+ Summary: version 0.99r40
+
+ * imach.c (Module): Fixing names of variables in T_ (thanks to Feinuo)
+
+ Revision 1.343 2022/09/14 14:22:16 brouard
+ Summary: version 0.99r39
+
+ * imach.c (Module): Version 0.99r39 with colored dummy covariates
+ (fixed or time varying), using new last columns of
+ ILK_parameter.txt file.
+
Revision 1.342 2022/09/11 19:54:09 brouard
Summary: 0.99r38
@@ -1294,6 +1306,8 @@ typedef struct {
#define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */
#define GNUPLOTPROGRAM "gnuplot"
+#define GNUPLOTVERSION 5.1
+double gnuplotversion=GNUPLOTVERSION;
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/
#define FILENAMELENGTH 256
@@ -1330,12 +1344,12 @@ typedef struct {
#define ODIRSEPARATOR '\\'
#endif
-/* $Id: imach.c,v 1.342 2022/09/11 19:54:09 brouard Exp $ */
+/* $Id: imach.c,v 1.344 2022/09/14 19:33:30 brouard Exp $ */
/* $State: Exp $ */
#include "version.h"
char version[]=__IMACH_VERSION__;
char copyright[]="September 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022";
-char fullversion[]="$Revision: 1.342 $ $Date: 2022/09/11 19:54:09 $";
+char fullversion[]="$Revision: 1.344 $ $Date: 2022/09/14 19:33:30 $";
char strstart[80];
char optionfilext[10], optionfilefiname[FILENAMELENGTH];
int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */
@@ -1543,8 +1557,8 @@ int **nbcode, *Tvar; /**< model=V2 => Tv
# States 1=Coresidence, 2 Living alone, 3 Institution
# V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi
*/
-/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */
-/* k 1 2 3 4 5 6 7 8 9 */
+/* V5+V4+ V3+V4*V3 +V5*age+V2 +V1*V2+V1*age+V1 */
+/* kmodel 1 2 3 4 5 6 7 8 9 */
/*Typevar[k]= 0 0 0 2 1 0 2 1 0 *//*0 for simple covariate (dummy, quantitative,*/
/* fixed or varying), 1 for age product, 2 for*/
/* product */
@@ -4227,7 +4241,7 @@ double func( double *x)
ipmx +=1;
sw += weight[i];
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]); */
+ /* printf("num[i]=%09ld, 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",num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
} /* end of wave */
} /* end of individual */
}else{ /* ml=5 no inter-extrapolation no jackson =0.8a */
@@ -4366,10 +4380,9 @@ double funcone( double *x)
* k= 1 2 3 4 5 6 7 8 9
* varying 1 2 3 4 5
* ncovv 1 2 3 4 5 6 7 8
- * TvarVV V3 5 1 3 3 5 1 5
+ * TvarVV[ncovv] V3 5 1 3 3 5 1 5
* TvarVVind 2 3 7 7 8 8 9 9
* TvarFind[k] 1 0 0 0 0 0 0 0 0
- * cotvar starts at ntv=2 (because of V3 V4)
*/
for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age) including individual from products */
itv=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */
@@ -4484,49 +4497,49 @@ double funcone( double *x)
sw += weight[i];
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli;
/* Printing covariates values for each contribution for checking */
- /* printf(" s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
+ /* printf("num[i]=%09ld, 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",num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
if(globpr){
fprintf(ficresilk,"%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\
%11.6f %11.6f %11.6f ", \
num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw,
2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2]));
- /* printf("%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\ */
- /* %11.6f %11.6f %11.6f ", \ */
- /* num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw, */
- /* 2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
+ /* printf("%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\ */
+ /* %11.6f %11.6f %11.6f ", \ */
+ /* num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw, */
+ /* 2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */
for(k=1,llt=0.,l=0.; k<=nlstate; k++){
llt +=ll[k]*gipmx/gsw;
fprintf(ficresilk," %10.6f",-ll[k]*gipmx/gsw);
/* printf(" %10.6f",-ll[k]*gipmx/gsw); */
}
- fprintf(ficresilk," %10.6f", -llt);
+ fprintf(ficresilk," %10.6f ", -llt);
/* printf(" %10.6f\n", -llt); */
/* if(debugILK){ /\* debugILK is set by a #d in a comment line *\/ */
- fprintf(ficresilk,"%09ld ", num[i]);
- for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */
- fprintf(ficresilk," %g",covar[Tvar[TvarFind[kf]]][i]);
- }
- for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age) including individual from products */
- ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
- if(ipos!=iposold){ /* Not a product or first of a product */
- fprintf(ficresilk," %g",cov[ioffset+ipos]);
- /* printf(" %g",cov[ioffset+ipos]); */
- }else{
- fprintf(ficresilk,"*");
- /* printf("*"); */
- }
- iposold=ipos;
+ /* fprintf(ficresilk,"%09ld ", num[i]); */ /* not necessary */
+ for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */
+ fprintf(ficresilk," %g",covar[Tvar[TvarFind[kf]]][i]);
+ }
+ for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age) including individual from products */
+ ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
+ if(ipos!=iposold){ /* Not a product or first of a product */
+ fprintf(ficresilk," %g",cov[ioffset+ipos]);
+ /* printf(" %g",cov[ioffset+ipos]); */
+ }else{
+ fprintf(ficresilk,"*");
+ /* printf("*"); */
}
- for (kk=1; kk<=cptcovage;kk++) {
- if(!FixedV[Tvar[Tage[kk]]]){
- fprintf(ficresilk," %g*age",covar[Tvar[Tage[kk]]][i]);
- /* printf(" %g*age",covar[Tvar[Tage[kk]]][i]); */
- }else{
- fprintf(ficresilk," %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */
- /* printf(" %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/ */
- }
+ iposold=ipos;
+ }
+ for (kk=1; kk<=cptcovage;kk++) {
+ if(!FixedV[Tvar[Tage[kk]]]){
+ fprintf(ficresilk," %g*age",covar[Tvar[Tage[kk]]][i]);
+ /* printf(" %g*age",covar[Tvar[Tage[kk]]][i]); */
+ }else{
+ fprintf(ficresilk," %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */
+ /* printf(" %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/ */
}
- /* printf("\n"); */
+ }
+ /* printf("\n"); */
/* } /\* End debugILK *\/ */
fprintf(ficresilk,"\n");
} /* End if globpr */
@@ -4539,7 +4552,7 @@ double funcone( double *x)
gipmx=ipmx;
gsw=sw;
}
-return -l;
+ return -l;
}
@@ -4552,7 +4565,7 @@ void likelione(FILE *ficres,double p[],
Plotting could be done.
*/
void pstamp(FILE *ficres);
- int k, kf, kk, ncovv, iposold, ipos;
+ int k, kf, kk, kvar, ncovv, iposold, ipos;
if(*globpri !=0){ /* Just counts and sums, no printings */
strcpy(fileresilk,"ILK_");
@@ -4575,14 +4588,14 @@ void likelione(FILE *ficres,double p[],
/* printf("V%d",Tvar[TvarFind[kf]]); */
}
for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){
- ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/
+ ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */
if(ipos!=iposold){ /* Not a product or first of a product */
/* printf(" %d",ipos); */
fprintf(ficresilk," V%d",TvarVV[ncovv]);
}else{
/* printf("*"); */
fprintf(ficresilk,"*");
- }
+ }
iposold=ipos;
}
for (kk=1; kk<=cptcovage;kk++) {
@@ -4609,16 +4622,68 @@ void likelione(FILE *ficres,double p[],
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));
fprintf(fichtm,"\n
Equation of the model: model=1+age+%s
\n",model);
- for (k=1; k<= nlstate ; k++) {
- fprintf(fichtm,"
- Probability p%dj by origin %d and destination j. Dot's sizes are related to corresponding weight: %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_"));
+\n",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_"));
+\n",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"));
+
+ for (k=1; k<= nlstate ; k++) {
+ fprintf(fichtm,"
- Probability p%dj by origin %d and destination j. Dot's sizes are related to corresponding weight: %s-p%dj.png
\n \
+\n",k,k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k);
+ for(kf=1; kf <= ncovf; kf++){ /* For each simple dummy covariate of the model */
+ /* kvar=Tvar[TvarFind[kf]]; */ /* variable */
+ fprintf(fichtm,"
- Probability p%dj by origin %d and destination j with colored covariate V%d. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): %s-p%dj.png
\
+",k,k,Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,Tvar[TvarFind[kf]]);
+ }
+ for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Loop on the time varying extended covariates (with extension of Vn*Vm */
+ ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */
+ kvar=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */
+ /* printf("DebugILK fichtm ncovv=%d, kvar=TvarVV[ncovv]=V%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); */
+ if(ipos!=iposold){ /* Not a product or first of a product */
+ /* fprintf(ficresilk," V%d",TvarVV[ncovv]); */
+ /* printf(" DebugILK fichtm ipos=%d != iposold=%d\n", ipos, iposold); */
+ if(Dummy[ipos]==0 && Typevar[ipos]==0){ /* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) */
+ fprintf(fichtm,"
- Probability p%dj by origin %d and destination j with colored time varying dummy covariate V%d. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): %s-p%dj.png
\
+",k,k,kvar,kvar,kvar,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,kvar);
+ } /* End only for dummies time varying (single?) */
+ }else{ /* Useless product */
+ /* printf("*"); */
+ /* fprintf(ficresilk,"*"); */
+ }
+ iposold=ipos;
+ } /* For each time varying covariate */
+ } /* End loop on states */
+
+/* if(debugILK){ */
+/* for(kf=1; kf <= ncovf; kf++){ /\* For each simple dummy covariate of the model *\/ */
+/* /\* kvar=Tvar[TvarFind[kf]]; *\/ /\* variable *\/ */
+/* for (k=1; k<= nlstate ; k++) { */
+/* fprintf(fichtm,"
- Probability p%dj by origin %d and destination j with colored covariate V%. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): %s-p%dj.png
\ */
+/* ",k,k,Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,Tvar[TvarFind[kf]]); */
+/* } */
+/* } */
+/* for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /\* Loop on the time varying extended covariates (with extension of Vn*Vm *\/ */
+/* ipos=TvarVVind[ncovv]; /\* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate *\/ */
+/* kvar=TvarVV[ncovv]; /\* TvarVV={3, 1, 3} gives the name of each varying covariate *\/ */
+/* /\* printf("DebugILK fichtm ncovv=%d, kvar=TvarVV[ncovv]=V%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); *\/ */
+/* if(ipos!=iposold){ /\* Not a product or first of a product *\/ */
+/* /\* fprintf(ficresilk," V%d",TvarVV[ncovv]); *\/ */
+/* /\* printf(" DebugILK fichtm ipos=%d != iposold=%d\n", ipos, iposold); *\/ */
+/* if(Dummy[ipos]==0 && Typevar[ipos]==0){ /\* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) *\/ */
+/* for (k=1; k<= nlstate ; k++) { */
+/* fprintf(fichtm,"
- Probability p%dj by origin %d and destination j. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): %s-p%dj.png
\ */
+/* ",k,k,kvar,kvar,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,kvar); */
+/* } /\* End state *\/ */
+/* } /\* End only for dummies time varying (single?) *\/ */
+/* }else{ /\* Useless product *\/ */
+/* /\* printf("*"); *\/ */
+/* /\* fprintf(ficresilk,"*"); *\/ */
+/* } */
+/* iposold=ipos; */
+/* } /\* For each time varying covariate *\/ */
+/* }/\* End debugILK *\/ */
fflush(fichtm);
- }
+ }/* End globpri */
return;
}
@@ -6187,7 +6252,7 @@ void concatwav(int wav[], int **dh, int
/* Loop on covariates without age and products and no quantitative variable */
for (k=1; k<=cptcovt; k++) { /* cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */
for (j=-1; (j < maxncov); j++) Ndum[j]=0;
- printf("Testing k=%d, cptcovt=%d\n",k, cptcovt);
+ /* printf("Testing k=%d, cptcovt=%d\n",k, cptcovt); */
if(Dummy[k]==0 && Typevar[k] !=1 && Typevar[k] != 2){ /* Dummy covariate and not age product nor fixed product */
switch(Fixed[k]) {
case 0: /* Testing on fixed dummy covariate, simple or product of fixed */
@@ -6751,6 +6816,7 @@ void concatwav(int wav[], int **dh, int
/* fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */
/* } */
for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ /* To be done*/
+ /* fprintf(ficresprobmorprev," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); */
fprintf(ficresprobmorprev," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]);
}
/* for(j=1;j<=cptcoveff;j++) */
@@ -7401,7 +7467,7 @@ To be simple, these graphs help to under
/* Including quantitative variables of the resultline to be done */
for (z1=1; z1<=cptcovs; z1++){ /* Loop on each variable of this resultline */
- printf("Varprob modelresult[%d][%d]=%d model=1+age+%s \n",nres, z1, modelresult[nres][z1], model);
+ /* printf("Varprob modelresult[%d][%d]=%d model=1+age+%s \n",nres, z1, modelresult[nres][z1], model); */
fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=1+age+%s \n",nres, z1, modelresult[nres][z1], model);
/* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=1+age+%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */
if(Dummy[modelresult[nres][z1]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to z1 in resultline */
@@ -8060,7 +8126,7 @@ void printinggnuplot(char fileresu[], ch
char dirfileres[132],optfileres[132];
char gplotcondition[132], gplotlabel[132];
- int cpt=0,k1=0,i=0,k=0,j=0,jk=0,k2=0,k3=0,k4=0,ij=0, ijp=0, l=0;
+ int cpt=0,k1=0,i=0,k=0,j=0,jk=0,k2=0,k3=0,k4=0,kf=0,kvar=0,kk=0,ipos=0,iposold=0,ij=0, ijp=0, l=0;
int lv=0, vlv=0, kl=0;
int ng=0;
int vpopbased;
@@ -8086,7 +8152,7 @@ void printinggnuplot(char fileresu[], ch
fprintf(ficgp,"yoff=(%d > 2? 0:1);\n",nlstate);
fprintf(ficgp,"\n#Peripheral arrows\nset for [i=1:%d] for [j=1:%d] arrow i*10+j from cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.95*(cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) - cos(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta2:0)), -0.95*(sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) - sin(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d))+( i!=j?(i-j)/abs(i-j)*delta2:0)) ls (i < j? 1:2)\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
- fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
+ fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] for [j=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate, nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
fprintf(ficgp,"\n#show arrow\nunset label\n");
fprintf(ficgp,"\n#States labels, starting from 2 (2-i) instead of (1-i), was (i-1)\nset for [i=1:%d] label i sprintf(\"State %%d\",i) center at cos(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)), yoff+sin(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)) font \"helvetica, 16\" tc rgbcolor \"blue\"\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate);
fprintf(ficgp,"\nset label %d+1 sprintf(\"State %%d\",%d+1) center at 0.,0. font \"helvetica, 16\" tc rgbcolor \"red\"\n",nlstate,nlstate);
@@ -8123,6 +8189,78 @@ void printinggnuplot(char fileresu[], ch
fprintf(ficgp,"\nset out;unset log\n");
/* fprintf(ficgp,"\nset out \"%s.svg\"; replot; set out; # bug gnuplot",subdirf2(optionfilefiname,"ILK_")); */
+ /* Plot the probability implied in the likelihood by covariate value */
+ fprintf(ficgp,"\nset ter pngcairo size 640, 480");
+ /* if(debugILK==1){ */
+ for(kf=1; kf <= ncovf; kf++){ /* For each simple dummy covariate of the model */
+ kvar=Tvar[TvarFind[kf]]; /* variable */
+ k=18+Tvar[TvarFind[kf]];/*offset because there are 18 columns in the ILK_ file */
+ for (i=1; i<= nlstate ; i ++) {
+ fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar);
+ fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk));
+ fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar);
+ for (j=2; j<= nlstate+ndeath ; j ++) {
+ fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar);
+ }
+ fprintf(ficgp,";\nset out; unset ylabel;\n");
+ }
+ } /* End of each covariate dummy */
+ for(ncovv=1, iposold=0, kk=0; ncovv <= ncovvt ; ncovv++){
+ /* Other example V1 + V3 + V5 + age*V1 + age*V3 + age*V5 + V1*V3 + V3*V5 + V1*V5
+ * kmodel = 1 2 3 4 5 6 7 8 9
+ * varying 1 2 3 4 5
+ * ncovv 1 2 3 4 5 6 7 8
+ * TvarVV[ncovv] V3 5 1 3 3 5 1 5
+ * TvarVVind[ncovv]=kmodel 2 3 7 7 8 8 9 9
+ * TvarFind[kmodel] 1 0 0 0 0 0 0 0 0
+ * kdata ncovcol=[V1 V2] nqv=0 ntv=[V3 V4] nqtv=V5
+ * Dummy[kmodel] 0 0 1 2 2 3 1 1 1
+ */
+ ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */
+ kvar=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */
+ /* printf("DebugILK ficgp ncovv=%d, kvar=TvarVV[ncovv]=%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); */
+ if(ipos!=iposold){ /* Not a product or first of a product */
+ /* printf(" %d",ipos); */
+ /* fprintf(ficresilk," V%d",TvarVV[ncovv]); */
+ /* printf(" DebugILK ficgp suite ipos=%d != iposold=%d\n", ipos, iposold); */
+ kk++; /* Position of the ncovv column in ILK_ */
+ k=18+ncovf+kk; /*offset because there are 18 columns in the ILK_ file plus ncovf fixed covariate */
+ if(Dummy[ipos]==0 && Typevar[ipos]==0){ /* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) */
+ for (i=1; i<= nlstate ; i ++) {
+ fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar);
+ fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk));
+
+ if(gnuplotversion >=5.2){ /* Former gnuplot versions do not have variable pointsize!! */
+ /* printf("DebugILK gnuplotversion=%g >=5.2\n",gnuplotversion); */
+ fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar);
+ for (j=2; j<= nlstate+ndeath ; j ++) {
+ fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar);
+ }
+ }else{
+ /* printf("DebugILK gnuplotversion=%g <5.2\n",gnuplotversion); */
+ fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable \\\n",i,1,k,i,1,kvar);
+ for (j=2; j<= nlstate+ndeath ; j ++) {
+ fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable ",i,j,k,i,j,kvar);
+ }
+ }
+ fprintf(ficgp,";\nset out; unset ylabel;\n");
+ }
+ }/* End if dummy varying */
+ }else{ /*Product */
+ /* printf("*"); */
+ /* fprintf(ficresilk,"*"); */
+ }
+ iposold=ipos;
+ } /* For each time varying covariate */
+ /* } /\* debugILK==1 *\/ */
+ /* 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_")); */
+
+
+
strcpy(dirfileres,optionfilefiname);
strcpy(optfileres,"vpl");
/* 1eme*/
@@ -10832,7 +10970,7 @@ int decoderesult( char resultline[], int
/* k counting number of combination of single dummies in the equation model */
/* k4 counting single dummies in the equation model */
/* k4q counting single quantitatives in the equation model */
- if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, k1 is sorting according to MODEL, but k3 to resultline */
+ if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, fixed or timevarying, k1 is sorting according to MODEL, but k3 to resultline */
/* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */
/* modelresult[k3]=k1: k3th position in the result line corresponds to the k1 position in the model line (doesn't work with products)*/
/* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */
@@ -11144,7 +11282,7 @@ Fixed[k] 0=fixed (product or simple), 1
Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model);
for(k=-1;k<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;}
for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;}
- for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt */
+ for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt loop on k from model */
if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */
Fixed[k]= 0;
Dummy[k]= 0;
@@ -12571,7 +12709,7 @@ int main(int argc, char *argv[])
if(line[1]=='q'){ /* This #q will quit imach (the answer is q) */
z[0]=line[1];
}else if(line[1]=='d'){ /* For debugging individual values of covariates in ficresilk */
- debugILK=1;
+ debugILK=1;printf("DebugILK\n");
}
/* printf("****line [1] = %c \n",line[1]); */
fputs(line, stdout);
@@ -14220,9 +14358,10 @@ Please run with mle=-1 to get a correct
/* printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]); /\* end if dummy or quanti *\/ */
if(Dummy[modelresult[nres][j]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to j in resultline */
- printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */
- fprintf(ficlog,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */
- fprintf(ficrest,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */
+ /* printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /\* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline *\/ */ /* TinvDoQresult[nres][Name of the variable] */
+ printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordered by the covariate values in the resultline */
+ fprintf(ficlog,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */
+ fprintf(ficrest,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */
if(Fixed[modelresult[nres][j]]==0){ /* Fixed */
printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed ");
}else{