version 1.232, 2016/08/22 14:20:21
|
version 1.237, 2016/08/26 09:20:19
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.237 2016/08/26 09:20:19 brouard |
|
Summary: to valgrind |
|
|
|
Revision 1.236 2016/08/25 10:50:18 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.235 2016/08/25 06:59:23 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.234 2016/08/23 16:51:20 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.233 2016/08/23 07:40:50 brouard |
|
Summary: not working |
|
|
Revision 1.232 2016/08/22 14:20:21 brouard |
Revision 1.232 2016/08/22 14:20:21 brouard |
Summary: not working |
Summary: not working |
|
|
Line 914 int cptcovsnq=0; /**< cptcovsnq number o
|
Line 929 int cptcovsnq=0; /**< cptcovsnq number o
|
int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ |
int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ |
int cptcovprodnoage=0; /**< Number of covariate products without age */ |
int cptcovprodnoage=0; /**< Number of covariate products without age */ |
int cptcoveff=0; /* Total number of covariates to vary for printing results */ |
int cptcoveff=0; /* Total number of covariates to vary for printing results */ |
int ncovf=0; /* Total number of effective fixed covariates (dummy of quantitative) in the model */ |
int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ |
int ncovv=0; /* Total number of effective (wave) varying covariates (dummy of quantitative) in the model */ |
int ncovv=0; /* Total number of effective (wave) varying covariates (dummy or quantitative) in the model */ |
int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
|
int nsd=0; /**< Total number of single dummy variables (output) */ |
|
int nsq=0; /**< Total number of single quantitative variables (output) */ |
int ncoveff=0; /* Total number of effective fixed dummy covariates in the model */ |
int ncoveff=0; /* Total number of effective fixed dummy covariates in the model */ |
int nqfveff=0; /**< nqfveff Number of Quantitative Fixed Variables Effective */ |
int nqfveff=0; /**< nqfveff Number of Quantitative Fixed Variables Effective */ |
int ntveff=0; /**< ntveff number of effective time varying variables */ |
int ntveff=0; /**< ntveff number of effective time varying variables */ |
Line 975 char fileresv[FILENAMELENGTH];
|
Line 991 char fileresv[FILENAMELENGTH];
|
FILE *ficresvpl; |
FILE *ficresvpl; |
char fileresvpl[FILENAMELENGTH]; |
char fileresvpl[FILENAMELENGTH]; |
char title[MAXLINE]; |
char title[MAXLINE]; |
|
char model[MAXLINE]; /**< The model line */ |
char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH], fileresplb[FILENAMELENGTH]; |
char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH], fileresplb[FILENAMELENGTH]; |
char plotcmd[FILENAMELENGTH], pplotcmd[FILENAMELENGTH]; |
char plotcmd[FILENAMELENGTH], pplotcmd[FILENAMELENGTH]; |
char tmpout[FILENAMELENGTH], tmpout2[FILENAMELENGTH]; |
char tmpout[FILENAMELENGTH], tmpout2[FILENAMELENGTH]; |
Line 1074 double ***cotvar; /* Time varying covari
|
Line 1091 double ***cotvar; /* Time varying covari
|
double ***cotqvar; /* Time varying quantitative covariate itqv */ |
double ***cotqvar; /* Time varying quantitative covariate itqv */ |
double idx; |
double idx; |
int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ |
int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ |
|
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
/*k 1 2 3 4 5 6 7 8 9 */ |
|
/*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ |
|
/* Tndvar[k] 1 2 3 4 5 */ |
|
/*TDvar 4 3 6 7 1 */ /* For outputs only; combination of dummies fixed or varying */ |
|
/* Tns[k] 1 2 2 4 5 */ /* Number of single cova */ |
|
/* TvarsD[k] 1 2 3 */ /* Number of single dummy cova */ |
|
/* TvarsDind 2 3 9 */ /* position K of single dummy cova */ |
|
/* TvarsQ[k] 1 2 */ /* Number of single quantitative cova */ |
|
/* TvarsQind 1 6 */ /* position K of single quantitative cova */ |
|
/* Tprod[i]=k 4 7 */ |
|
/* Tage[i]=k 5 8 */ |
|
/* */ |
|
/* Type */ |
|
/* V 1 2 3 4 5 */ |
|
/* F F V V V */ |
|
/* D Q D D Q */ |
|
/* */ |
|
int *TvarsD; |
|
int *TvarsDind; |
|
int *TvarsQ; |
|
int *TvarsQind; |
|
|
|
#define MAXRESULTLINES 10 |
|
int nresult=0; |
|
int TKresult[MAXRESULTLINES]; |
|
int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
|
int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
|
int Tvresult[MAXRESULTLINES][NCOVMAX]; /* For dummy variable , variable # (output) */ |
|
double Tqresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , value (output) */ |
|
double Tqinvresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , value (output) */ |
|
int Tvqresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , variable # (output) */ |
|
|
|
/* int *TDvar; /\**< TDvar[1]=4, TDvarF[2]=3, TDvar[3]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
int *TvarF; /**< TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarF; /**< TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFind; /**< TvarFind[1]=6, TvarFind[2]=7, Tvarind[3]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFind; /**< TvarFind[1]=6, TvarFind[2]=7, Tvarind[3]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarV; /**< TvarV[1]=Tvar[1]=5, TvarV[2]=Tvar[2]=4 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarV; /**< TvarV[1]=Tvar[1]=5, TvarV[2]=Tvar[2]=4 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
Line 1333 int nbocc(char *s, char occ)
|
Line 1384 int nbocc(char *s, char occ)
|
i=0; |
i=0; |
lg=strlen(s); |
lg=strlen(s); |
for(i=0; i<= lg; i++) { |
for(i=0; i<= lg; i++) { |
if (s[i] == occ ) j++; |
if (s[i] == occ ) j++; |
} |
} |
return j; |
return j; |
} |
} |
Line 2224 void powell(double p[], double **xi, int
|
Line 2275 void powell(double p[], double **xi, int
|
if (directest < 0.0) { /* Then we use it for new direction */ |
if (directest < 0.0) { /* Then we use it for new direction */ |
#endif |
#endif |
#ifdef DEBUGLINMIN |
#ifdef DEBUGLINMIN |
printf("Before linmin in direction P%d-P0\n",n); |
printf("Before linmin in direction P%d-P0\n",n); |
for (j=1;j<=n;j++) { |
for (j=1;j<=n;j++) { |
printf(" Before xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
printf(" Before xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
fprintf(ficlog," Before xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
fprintf(ficlog," Before xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
if(j % ncovmodel == 0){ |
if(j % ncovmodel == 0){ |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
} |
} |
} |
} |
#endif |
#endif |
#ifdef LINMINORIGINAL |
#ifdef LINMINORIGINAL |
linmin(p,xit,n,fret,func); /* computes minimum on the extrapolated direction: changes p and rescales xit.*/ |
linmin(p,xit,n,fret,func); /* computes minimum on the extrapolated direction: changes p and rescales xit.*/ |
#else |
#else |
linmin(p,xit,n,fret,func,&flat); /* computes minimum on the extrapolated direction: changes p and rescales xit.*/ |
linmin(p,xit,n,fret,func,&flat); /* computes minimum on the extrapolated direction: changes p and rescales xit.*/ |
flatdir[i]=flat; /* Function is vanishing in that direction i */ |
flatdir[i]=flat; /* Function is vanishing in that direction i */ |
#endif |
#endif |
|
|
#ifdef DEBUGLINMIN |
#ifdef DEBUGLINMIN |
for (j=1;j<=n;j++) { |
for (j=1;j<=n;j++) { |
printf("After xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
printf("After xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
fprintf(ficlog,"After xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
fprintf(ficlog,"After xit[%d]= %12.7f p[%d]= %12.7f",j,xit[j],j,p[j]); |
if(j % ncovmodel == 0){ |
if(j % ncovmodel == 0){ |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
} |
} |
} |
} |
#endif |
#endif |
for (j=1;j<=n;j++) { |
for (j=1;j<=n;j++) { |
xi[j][ibig]=xi[j][n]; /* Replace direction with biggest decrease by last direction n */ |
xi[j][ibig]=xi[j][n]; /* Replace direction with biggest decrease by last direction n */ |
xi[j][n]=xit[j]; /* and this nth direction by the by the average p_0 p_n */ |
xi[j][n]=xit[j]; /* and this nth direction by the by the average p_0 p_n */ |
} |
} |
#ifdef LINMINORIGINAL |
#ifdef LINMINORIGINAL |
#else |
#else |
for (j=1, flatd=0;j<=n;j++) { |
for (j=1, flatd=0;j<=n;j++) { |
if(flatdir[j]>0) |
if(flatdir[j]>0) |
flatd++; |
flatd++; |
} |
} |
if(flatd >0){ |
if(flatd >0){ |
printf("%d flat directions\n",flatd); |
printf("%d flat directions\n",flatd); |
fprintf(ficlog,"%d flat directions\n",flatd); |
fprintf(ficlog,"%d flat directions\n",flatd); |
for (j=1;j<=n;j++) { |
for (j=1;j<=n;j++) { |
if(flatdir[j]>0){ |
if(flatdir[j]>0){ |
printf("%d ",j); |
printf("%d ",j); |
fprintf(ficlog,"%d ",j); |
fprintf(ficlog,"%d ",j); |
} |
} |
} |
} |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
} |
} |
#endif |
#endif |
printf("Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
printf("Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
fprintf(ficlog,"Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
fprintf(ficlog,"Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
|
|
#ifdef DEBUG |
#ifdef DEBUG |
printf("Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
printf("Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
fprintf(ficlog,"Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
fprintf(ficlog,"Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
for(j=1;j<=n;j++){ |
for(j=1;j<=n;j++){ |
printf(" %lf",xit[j]); |
printf(" %lf",xit[j]); |
fprintf(ficlog," %lf",xit[j]); |
fprintf(ficlog," %lf",xit[j]); |
} |
} |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
#endif |
#endif |
} /* end of t or directest negative */ |
} /* end of t or directest negative */ |
#ifdef POWELLNOF3INFF1TEST |
#ifdef POWELLNOF3INFF1TEST |
#else |
#else |
} /* end if (fptt < fp) */ |
} /* end if (fptt < fp) */ |
#endif |
#endif |
#ifdef NODIRECTIONCHANGEDUNTILNITER /* No change in drections until some iterations are done */ |
#ifdef NODIRECTIONCHANGEDUNTILNITER /* No change in drections until some iterations are done */ |
} /*NODIRECTIONCHANGEDUNTILNITER No change in drections until some iterations are done */ |
} /*NODIRECTIONCHANGEDUNTILNITER No change in drections until some iterations are done */ |
#else |
#else |
#endif |
#endif |
} /* loop iteration */ |
} /* loop iteration */ |
} |
} |
|
|
/**** Prevalence limit (stable or period prevalence) ****************/ |
/**** Prevalence limit (stable or period prevalence) ****************/ |
|
|
double **prevalim(double **prlim, int nlstate, double x[], double age, double **oldm, double **savm, double ftolpl, int *ncvyear, int ij) |
double **prevalim(double **prlim, int nlstate, double x[], double age, double **oldm, double **savm, double ftolpl, int *ncvyear, int ij, int nres) |
{ |
{ |
/* Computes the prevalence limit in each live state at age x and for covariate ij by left multiplying the unit |
/* Computes the prevalence limit in each live state at age x and for covariate combination ij |
matrix by transitions matrix until convergence is reached with precision ftolpl */ |
(and selected quantitative values in nres) |
|
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= 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 */ |
/* Wx is row vector: population in state 1, population in state 2, population dead */ |
/* or prevalence in state 1, prevalence in state 2, 0 */ |
/* or prevalence in state 1, prevalence in state 2, 0 */ |
Line 2322 double **prevalim(double **prlim, int nl
|
Line 2375 double **prevalim(double **prlim, int nl
|
/* {0.51571254859325999, 0.4842874514067399, */ |
/* {0.51571254859325999, 0.4842874514067399, */ |
/* 0.51326036147820708, 0.48673963852179264} */ |
/* 0.51326036147820708, 0.48673963852179264} */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
|
|
int i, ii,j,k; |
int i, ii,j,k; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
/* double **matprod2(); */ /* test */ |
/* double **matprod2(); */ /* test */ |
Line 2352 double **prevalim(double **prlim, int nl
|
Line 2405 double **prevalim(double **prlim, int nl
|
cov[2]=agefin; |
cov[2]=agefin; |
if(nagesqr==1) |
if(nagesqr==1) |
cov[3]= agefin*agefin;; |
cov[3]= agefin*agefin;; |
for (k=1; k<=cptcovn;k++) { |
for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; */ |
/* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ |
/* Here comes the value of the covariate 'ij' */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; |
/* printf("prevalim Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],cov[2+nagesqr+TvarsDind[k]], ij, 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])]); */ |
} |
|
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
|
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
|
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
|
/* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovage;k++){ /* For product with age */ |
|
if(Dummy[Tvar[Tage[k]]]){ |
|
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
|
} else{ |
|
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
|
} |
|
/* printf("prevalim Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovprod;k++){ /* For product without age */ |
|
/* printf("prevalim Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); */ |
|
if(Dummy[Tvard[k][1]==0]){ |
|
if(Dummy[Tvard[k][2]==0]){ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
|
}else{ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; |
|
} |
|
}else{ |
|
if(Dummy[Tvard[k][2]==0]){ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; |
|
}else{ |
|
cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; |
|
} |
|
} |
} |
} |
/*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,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,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
|
|
|
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/ |
/*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]);*/ |
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/ |
/*printf("ij=%d cov[3]=%lf \n",ij, cov[3]);*/ |
/*printf("ij=%d cov[3]=%lf \n",ij, cov[3]);*/ |
Line 2486 Earliest age to start was %d-%d=%d, ncvl
|
Line 2560 Earliest age to start was %d-%d=%d, ncvl
|
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,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])]); */ |
/* 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,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 */ |
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])]; */ |
Line 2514 Earliest age to start was %d-%d=%d, ncvl
|
Line 2586 Earliest age to start was %d-%d=%d, ncvl
|
} |
} |
for(j=1; j<=nlstate; j++){ |
for(j=1; j<=nlstate; j++){ |
for(i=1;i<=nlstate;i++){ |
for(i=1;i<=nlstate;i++){ |
/* bprlim[i][j]= newm[i][j]/(1-sumnew); */ |
/* bprlim[i][j]= newm[i][j]/(1-sumnew); */ |
bprlim[i][j]= newm[i][j]; |
bprlim[i][j]= newm[i][j]; |
max[i]=FMAX(max[i],bprlim[i][j]); /* Max in line */ |
max[i]=FMAX(max[i],bprlim[i][j]); /* Max in line */ |
min[i]=FMIN(min[i],bprlim[i][j]); |
min[i]=FMIN(min[i],bprlim[i][j]); |
} |
} |
} |
} |
|
|
Line 2712 double **bpmij(double **ps, double *cov,
|
Line 2784 double **bpmij(double **ps, double *cov,
|
/*double t34;*/ |
/*double t34;*/ |
int i,j, nc, ii, jj; |
int i,j, nc, ii, jj; |
|
|
for(i=1; i<= nlstate; i++){ |
for(i=1; i<= nlstate; i++){ |
for(j=1; j<i;j++){ |
for(j=1; j<i;j++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
/*lnpijopii += param[i][j][nc]*cov[nc];*/ |
/*lnpijopii += param[i][j][nc]*cov[nc];*/ |
lnpijopii += x[nc+((i-1)*(nlstate+ndeath-1)+j-1)*ncovmodel]*cov[nc]; |
lnpijopii += x[nc+((i-1)*(nlstate+ndeath-1)+j-1)*ncovmodel]*cov[nc]; |
/* printf("Int j<i s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
/* printf("Int j<i s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
} |
} |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
/* printf("s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
/* printf("s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
} |
} |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
/*lnpijopii += x[(i-1)*nlstate*ncovmodel+(j-2)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc];*/ |
/*lnpijopii += x[(i-1)*nlstate*ncovmodel+(j-2)*ncovmodel+nc+(i-1)*(ndeath-1)*ncovmodel]*cov[nc];*/ |
lnpijopii += x[nc + ((i-1)*(nlstate+ndeath-1)+(j-2))*ncovmodel]*cov[nc]; |
lnpijopii += x[nc + ((i-1)*(nlstate+ndeath-1)+(j-2))*ncovmodel]*cov[nc]; |
/* printf("Int j>i s1=%.17e, lnpijopii=%.17e %lx %lx\n",s1,lnpijopii,s1,lnpijopii); */ |
/* printf("Int j>i s1=%.17e, lnpijopii=%.17e %lx %lx\n",s1,lnpijopii,s1,lnpijopii); */ |
} |
} |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
} |
} |
} |
} |
|
|
for(i=1; i<= nlstate; i++){ |
for(i=1; i<= nlstate; i++){ |
s1=0; |
s1=0; |
for(j=1; j<i; j++){ |
for(j=1; j<i; j++){ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
/*printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
/*printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
} |
} |
for(j=i+1; j<=nlstate+ndeath; j++){ |
for(j=i+1; j<=nlstate+ndeath; j++){ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
/*printf("debug2 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
/*printf("debug2 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
} |
} |
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
ps[i][i]=1./(s1+1.); |
ps[i][i]=1./(s1+1.); |
/* Computing other pijs */ |
/* Computing other pijs */ |
for(j=1; j<i; j++) |
for(j=1; j<i; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
for(j=i+1; j<=nlstate+ndeath; j++) |
for(j=i+1; j<=nlstate+ndeath; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
} /* end i */ |
} /* end i */ |
|
|
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
ps[ii][jj]=0; |
ps[ii][jj]=0; |
ps[ii][ii]=1; |
ps[ii][ii]=1; |
} |
} |
} |
} |
/* Added for backcast */ /* Transposed matrix too */ |
/* Added for backcast */ /* Transposed matrix too */ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
s1=0.; |
s1=0.; |
for(ii=1; ii<= nlstate+ndeath; ii++){ |
for(ii=1; ii<= nlstate+ndeath; ii++){ |
s1+=ps[ii][jj]; |
s1+=ps[ii][jj]; |
} |
} |
for(ii=1; ii<= nlstate; ii++){ |
for(ii=1; ii<= nlstate; ii++){ |
ps[ii][jj]=ps[ii][jj]/s1; |
ps[ii][jj]=ps[ii][jj]/s1; |
} |
} |
} |
} |
/* Transposition */ |
/* Transposition */ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
for(jj=1; jj<= nlstate+ndeath; jj++){ |
for(ii=jj; ii<= nlstate+ndeath; ii++){ |
for(ii=jj; ii<= nlstate+ndeath; ii++){ |
s1=ps[ii][jj]; |
s1=ps[ii][jj]; |
ps[ii][jj]=ps[jj][ii]; |
ps[ii][jj]=ps[jj][ii]; |
ps[jj][ii]=s1; |
ps[jj][ii]=s1; |
} |
} |
} |
} |
/* for(ii=1; ii<= nlstate+ndeath; ii++){ */ |
/* for(ii=1; ii<= nlstate+ndeath; ii++){ */ |
/* for(jj=1; jj<= nlstate+ndeath; jj++){ */ |
/* for(jj=1; jj<= nlstate+ndeath; jj++){ */ |
/* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ |
/* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ |
/* } */ |
/* } */ |
/* printf("\n "); */ |
/* printf("\n "); */ |
/* } */ |
/* } */ |
/* printf("\n ");printf("%lf ",cov[2]);*/ |
/* printf("\n ");printf("%lf ",cov[2]);*/ |
/* |
/* |
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
goto end;*/ |
goto end;*/ |
return ps; |
return ps; |
} |
} |
|
|
|
|
Line 2812 double **matprod2(double **out, double *
|
Line 2884 double **matprod2(double **out, double *
|
|
|
/************* Higher Matrix Product ***************/ |
/************* Higher Matrix Product ***************/ |
|
|
double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij ) |
double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij, int nres ) |
{ |
{ |
/* Computes the transition matrix starting at age 'age' and combination of covariate values corresponding to ij over |
/* Computes the transition matrix starting at age 'age' and combination of covariate values corresponding to ij over |
'nhstepm*hstepm*stepm' months (i.e. until |
'nhstepm*hstepm*stepm' months (i.e. until |
Line 2848 double ***hpxij(double ***po, int nhstep
|
Line 2920 double ***hpxij(double ***po, int nhstep
|
cov[2]=agexact; |
cov[2]=agexact; |
if(nagesqr==1) |
if(nagesqr==1) |
cov[3]= agexact*agexact; |
cov[3]= agexact*agexact; |
for (k=1; k<=cptcovn;k++) |
for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ |
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; |
/* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
for (k=1; k<=cptcovage;k++) /* Should start at cptcovn+1 */ |
/* printf("hpxij Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
/* cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ |
} |
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ |
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
for (k=1; k<=cptcovprod;k++) /* Useless because included in cptcovn */ |
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; |
/* printf("hPxij Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
} |
|
for (k=1; k<=cptcovage;k++){ |
|
if(Dummy[Tvar[Tage[k]]]){ |
|
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
|
} else{ |
|
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
|
} |
|
/* printf("hPxij Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovprod;k++){ /* */ |
|
/* printf("hPxij Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); */ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
|
} |
|
/* for (k=1; k<=cptcovn;k++) */ |
|
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
|
/* for (k=1; k<=cptcovage;k++) /\* Should start at cptcovn+1 *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,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,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; */ |
|
|
|
|
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
Line 3037 double func( double *x)
|
Line 3127 double func( double *x)
|
to be observed in j being in i according to the model. |
to be observed in j being in i according to the model. |
*/ |
*/ |
ioffset=2+nagesqr+cptcovage; |
ioffset=2+nagesqr+cptcovage; |
/* for (k=1; k<=cptcovn;k++){ /\* Simple and product covariates without age* products *\/ */ |
/* Fixed */ |
for (k=1; k<=ncoveff;k++){ /* Simple and product covariates without age* products */ |
for (k=1; k<=ncovf;k++){ /* Simple and product fixed covariates without age* products */ |
cov[++ioffset]=covar[Tvar[k]][i]; |
cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (k=6)*/ |
} |
|
for(iqv=1; iqv <= nqfveff; iqv++){ /* Quantitatives and Fixed covariates */ |
|
cov[++ioffset]=coqvar[Tvar[iqv]][i]; |
|
} |
} |
|
|
/* In model V2+V1*V4+age*V3+V3*V2 Tvar[1] is V2, Tvar[2=V1*V4] |
/* In model V2+V1*V4+age*V3+V3*V2 Tvar[1] is V2, Tvar[2=V1*V4] |
is 6, Tvar[3=age*V3] should not be computed because of age Tvar[4=V3*V2] |
is 6, Tvar[3=age*V3] should not be computed because of age Tvar[4=V3*V2] |
has been calculated etc */ |
has been calculated etc */ |
Line 3058 double func( double *x)
|
Line 3144 double func( double *x)
|
meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] |
meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] |
*/ |
*/ |
for(mi=1; mi<= wav[i]-1; mi++){ |
for(mi=1; mi<= wav[i]-1; mi++){ |
for(itv=1; itv <= ntveff; itv++){ /* Varying dummy covariates */ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ |
/* cov[ioffset+itv]=cotvar[mw[mi][i]][Tvar[itv]][i]; /\* Not sure, Tvar V4+V3+V5 Tvaraff ? *\/ */ |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; |
cov[ioffset+itv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; |
} |
} |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for(iqtv=1; iqtv <= nqtveff; iqtv++){ /* Varying quantitatives covariates */ |
for (j=1;j<=nlstate+ndeath;j++){ |
if(cotqvar[mw[mi][i]][iqtv][i] == -1){ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
printf("i=%d, mi=%d, iqtv=%d, cotqvar[mw[mi][i]][iqtv][i]=%f",i,mi,iqtv,cotqvar[mw[mi][i]][iqtv][i]); |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
} |
} |
cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]; |
for(d=0; d<dh[mi][i]; d++){ |
/* cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][iqtv][i]; */ |
newm=savm; |
} |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
/* ioffset=2+nagesqr+cptcovn+nqv+ntv+nqtv; */ |
cov[2]=agexact; |
for (ii=1;ii<=nlstate+ndeath;ii++) |
if(nagesqr==1) |
for (j=1;j<=nlstate+ndeath;j++){ |
cov[3]= agexact*agexact; /* Should be changed here */ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
for (kk=1; kk<=cptcovage;kk++) { |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
} |
} |
for(d=0; d<dh[mi][i]; d++){ |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
newm=savm; |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
savm=oldm; |
cov[2]=agexact; |
oldm=newm; |
if(nagesqr==1) |
} /* end mult */ |
cov[3]= agexact*agexact; /* Should be changed here */ |
|
for (kk=1; kk<=cptcovage;kk++) { |
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
/* But now since version 0.9 we anticipate for bias at large stepm. |
} |
* If stepm is larger than one month (smallest stepm) and if the exact delay |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
* (in months) between two waves is not a multiple of stepm, we rounded to |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
* the nearest (and in case of equal distance, to the lowest) interval but now |
savm=oldm; |
* we keep into memory the bias bh[mi][i] and also the previous matrix product |
oldm=newm; |
* (i.e to dh[mi][i]-1) saved in 'savm'. Then we inter(extra)polate the |
} /* end mult */ |
* probability in order to take into account the bias as a fraction of the way |
|
|
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
|
/* But now since version 0.9 we anticipate for bias at large stepm. |
|
* If stepm is larger than one month (smallest stepm) and if the exact delay |
|
* (in months) between two waves is not a multiple of stepm, we rounded to |
|
* the nearest (and in case of equal distance, to the lowest) interval but now |
|
* we keep into memory the bias bh[mi][i] and also the previous matrix product |
|
* (i.e to dh[mi][i]-1) saved in 'savm'. Then we inter(extra)polate the |
|
* probability in order to take into account the bias as a fraction of the way |
|
* from savm to out if bh is negative or even beyond if bh is positive. bh varies |
* from savm to out if bh is negative or even beyond if bh is positive. bh varies |
* -stepm/2 to stepm/2 . |
* -stepm/2 to stepm/2 . |
* For stepm=1 the results are the same as for previous versions of Imach. |
* For stepm=1 the results are the same as for previous versions of Imach. |
* For stepm > 1 the results are less biased than in previous versions. |
* For stepm > 1 the results are less biased than in previous versions. |
*/ |
*/ |
s1=s[mw[mi][i]][i]; |
s1=s[mw[mi][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
s2=s[mw[mi+1][i]][i]; |
bbh=(double)bh[mi][i]/(double)stepm; |
bbh=(double)bh[mi][i]/(double)stepm; |
/* bias bh is positive if real duration |
/* bias bh is positive if real duration |
* is higher than the multiple of stepm and negative otherwise. |
* is higher than the multiple of stepm and negative otherwise. |
*/ |
*/ |
/* lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.+bbh)*out[s1][s2]));*/ |
/* lli= (savm[s1][s2]>1.e-8 ?(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]):log((1.+bbh)*out[s1][s2]));*/ |
if( s2 > nlstate){ |
if( s2 > nlstate){ |
/* i.e. if s2 is a death state and if the date of death is known |
/* i.e. if s2 is a death state and if the date of death is known |
then the contribution to the likelihood is the probability to |
then the contribution to the likelihood is the probability to |
die between last step unit time and current step unit time, |
die between last step unit time and current step unit time, |
which is also equal to probability to die before dh |
which is also equal to probability to die before dh |
minus probability to die before dh-stepm . |
minus probability to die before dh-stepm . |
In version up to 0.92 likelihood was computed |
In version up to 0.92 likelihood was computed |
as if date of death was unknown. Death was treated as any other |
as if date of death was unknown. Death was treated as any other |
health state: the date of the interview describes the actual state |
health state: the date of the interview describes the actual state |
and not the date of a change in health state. The former idea was |
and not the date of a change in health state. The former idea was |
to consider that at each interview the state was recorded |
to consider that at each interview the state was recorded |
(healthy, disable or death) and IMaCh was corrected; but when we |
(healthy, disable or death) and IMaCh was corrected; but when we |
introduced the exact date of death then we should have modified |
introduced the exact date of death then we should have modified |
the contribution of an exact death to the likelihood. This new |
the contribution of an exact death to the likelihood. This new |
contribution is smaller and very dependent of the step unit |
contribution is smaller and very dependent of the step unit |
stepm. It is no more the probability to die between last interview |
stepm. It is no more the probability to die between last interview |
and month of death but the probability to survive from last |
and month of death but the probability to survive from last |
interview up to one month before death multiplied by the |
interview up to one month before death multiplied by the |
probability to die within a month. Thanks to Chris |
probability to die within a month. Thanks to Chris |
Jackson for correcting this bug. Former versions increased |
Jackson for correcting this bug. Former versions increased |
mortality artificially. The bad side is that we add another loop |
mortality artificially. The bad side is that we add another loop |
which slows down the processing. The difference can be up to 10% |
which slows down the processing. The difference can be up to 10% |
lower mortality. |
lower mortality. |
*/ |
*/ |
/* If, at the beginning of the maximization mostly, the |
/* If, at the beginning of the maximization mostly, the |
cumulative probability or probability to be dead is |
cumulative probability or probability to be dead is |
constant (ie = 1) over time d, the difference is equal to |
constant (ie = 1) over time d, the difference is equal to |
0. out[s1][3] = savm[s1][3]: probability, being at state |
0. out[s1][3] = savm[s1][3]: probability, being at state |
s1 at precedent wave, to be dead a month before current |
s1 at precedent wave, to be dead a month before current |
wave is equal to probability, being at state s1 at |
wave is equal to probability, being at state s1 at |
precedent wave, to be dead at mont of the current |
precedent wave, to be dead at mont of the current |
wave. Then the observed probability (that this person died) |
wave. Then the observed probability (that this person died) |
is null according to current estimated parameter. In fact, |
is null according to current estimated parameter. In fact, |
it should be very low but not zero otherwise the log go to |
it should be very low but not zero otherwise the log go to |
infinity. |
infinity. |
*/ |
*/ |
/* #ifdef INFINITYORIGINAL */ |
/* #ifdef INFINITYORIGINAL */ |
/* lli=log(out[s1][s2] - savm[s1][s2]); */ |
/* lli=log(out[s1][s2] - savm[s1][s2]); */ |
/* #else */ |
/* #else */ |
Line 3387 double funcone( double *x)
|
Line 3464 double funcone( double *x)
|
/* cov[++ioffset]=coqvar[Tvar[iqv]][i]; /\* Only V2 k=6 and V1*V2 7 *\/ */ |
/* cov[++ioffset]=coqvar[Tvar[iqv]][i]; /\* Only V2 k=6 and V1*V2 7 *\/ */ |
/* } */ |
/* } */ |
|
|
/* Wave varying (but not age varying) */ |
|
for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ |
for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ |
|
/* Wave varying (but not age varying) */ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarFind[k]]][i]; |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; |
} |
} |
/* for(itv=1; itv <= ntveff; itv++){ /\* Varying dummy covariates (single??)*\/ */ |
/* for(itv=1; itv <= ntveff; itv++){ /\* Varying dummy covariates (single??)*\/ */ |
/* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; /\* Counting the # varying covariate from 1 to ntveff *\/ */ |
/* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; /\* Counting the # varying covariate from 1 to ntveff *\/ */ |
Line 4026 void freqsummary(char fileres[], int ia
|
Line 4104 void freqsummary(char fileres[], int ia
|
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
fileresphtm,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
fileresphtm,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
} |
} |
fprintf(ficresphtm,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies and prevalence by age at begin of transition</h4>\n",fileresphtm, fileresphtm); |
fprintf(ficresphtm,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies and prevalence by age at begin of transition and dummy covariate value at beginning of transition</h4>\n",fileresphtm, fileresphtm); |
|
|
strcpy(fileresphtmfr,subdirfext(optionfilefiname,"PHTMFR_",".htm")); |
strcpy(fileresphtmfr,subdirfext(optionfilefiname,"PHTMFR_",".htm")); |
if((ficresphtmfr=fopen(fileresphtmfr,"w"))==NULL) { |
if((ficresphtmfr=fopen(fileresphtmfr,"w"))==NULL) { |
Line 4087 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4165 Title=%s <br>Datafile=%s Firstpass=%d La
|
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
bool=1; |
bool=1; |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
/* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ |
/* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ |
/* } */ |
/* } */ |
for (z1=1; z1<=cptcoveff; z1++) { |
for (z1=1; z1<=cptcoveff; z1++) { |
/* if(Tvaraff[z1] ==-20){ */ |
/* if(Tvaraff[z1] ==-20){ */ |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
/* }else if(Tvaraff[z1] ==-10){ */ |
/* }else if(Tvaraff[z1] ==-10){ */ |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
/* }else */ |
/* }else */ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ |
/* Tests if this individual iind responded to j1 (V4=1 V3=0) */ |
/* Tests if this individual iind responded to j1 (V4=1 V3=0) */ |
bool=0; |
bool=0; |
/* 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", |
/* 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), |
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);*/ |
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*/ |
/* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
} /* Onlyf fixed */ |
} /* Onlyf fixed */ |
} /* end z1 */ |
} /* end z1 */ |
} /* cptcovn > 0 */ |
} /* cptcovn > 0 */ |
} /* end any */ |
} /* end any */ |
if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
/* for(m=firstpass; m<=lastpass; m++){ */ |
/* for(m=firstpass; m<=lastpass; m++){ */ |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
m=mw[mi][iind]; |
m=mw[mi][iind]; |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
for (z1=1; z1<=cptcoveff; z1++) { |
for (z1=1; z1<=cptcoveff; z1++) { |
if( Fixed[Tmodelind[z1]]==1){ |
if( Fixed[Tmodelind[z1]]==1){ |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
bool=0; |
bool=0; |
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
bool=0; |
bool=0; |
} |
} |
} |
} |
} |
} |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
if(bool==1){ |
if(bool==1){ |
/* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] |
/* 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. */ |
and mw[mi+1][iind]. dh depends on stepm. */ |
agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/ |
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 */ |
ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */ |
if(m >=firstpass && m <=lastpass){ |
if(m >=firstpass && m <=lastpass){ |
k2=anint[m][iind]+(mint[m][iind]/12.); |
k2=anint[m][iind]+(mint[m][iind]/12.); |
/*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/ |
/*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]==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(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 */ |
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 */ |
prop[s[m][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
if (m<lastpass) { |
if (m<lastpass) { |
/* if(s[m][iind]==4 && s[m+1][iind]==4) */ |
/* 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]); */ |
/* 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) |
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.)); |
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 */ |
freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
/* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */ |
/* 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 */ |
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 */ |
} /* end if between passes */ |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99)) { |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99)) { |
dateintsum=dateintsum+k2; |
dateintsum=dateintsum+k2; |
k2cpt++; |
k2cpt++; |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
} |
} |
} /* end bool 2 */ |
} /* end bool 2 */ |
} /* end m */ |
} /* end m */ |
} /* end bool */ |
} /* end bool */ |
} /* end iind = 1 to imx */ |
} /* end iind = 1 to imx */ |
/* prop[s][age] is feeded for any initial and valid live state as well as |
/* prop[s][age] is feeded for any initial and valid live state as well as |
Line 4169 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4247 Title=%s <br>Datafile=%s Firstpass=%d La
|
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++){ |
for (z1=1; z1<=cptcoveff; z1++){ |
fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtmfr, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtmfr, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
} |
} |
fprintf(ficresp, "**********\n#"); |
fprintf(ficresp, "**********\n#"); |
fprintf(ficresphtm, "**********</h3>\n"); |
fprintf(ficresphtm, "**********</h3>\n"); |
Line 4193 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4271 Title=%s <br>Datafile=%s Firstpass=%d La
|
fprintf(ficresphtmfr,"<th>Age</th> "); |
fprintf(ficresphtmfr,"<th>Age</th> "); |
for(jk=-1; jk <=nlstate+ndeath; jk++){ |
for(jk=-1; jk <=nlstate+ndeath; jk++){ |
for(m=-1; m <=nlstate+ndeath; m++){ |
for(m=-1; m <=nlstate+ndeath; m++){ |
if(jk!=0 && m!=0) |
if(jk!=0 && m!=0) |
fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m); |
fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m); |
} |
} |
} |
} |
fprintf(ficresphtmfr, "\n"); |
fprintf(ficresphtmfr, "\n"); |
Line 4830 void concatwav(int wav[], int **dh, int
|
Line 4908 void concatwav(int wav[], int **dh, int
|
|
|
/*********** Health Expectancies ****************/ |
/*********** Health Expectancies ****************/ |
|
|
void evsij(double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int cij, int estepm,char strstart[] ) |
void evsij(double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int cij, int estepm,char strstart[], int nres ) |
|
|
{ |
{ |
/* Health expectancies, no variances */ |
/* Health expectancies, no variances */ |
Line 4903 void evsij(double ***eij, double x[], in
|
Line 4981 void evsij(double ***eij, double x[], in
|
/* Computed by stepm unit matrices, product of hstepma matrices, stored |
/* Computed by stepm unit matrices, product of hstepma matrices, stored |
in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ |
in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ |
|
|
hpxij(p3mat,nhstepma,age,hstepm,x,nlstate,stepm,oldm, savm, cij); |
hpxij(p3mat,nhstepma,age,hstepm,x,nlstate,stepm,oldm, savm, cij, nres); |
|
|
hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
|
|
Line 4938 void evsij(double ***eij, double x[], in
|
Line 5016 void evsij(double ***eij, double x[], in
|
|
|
} |
} |
|
|
void cvevsij(double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int cij, int estepm,double delti[],double **matcov,char strstart[] ) |
void cvevsij(double ***eij, double x[], int nlstate, int stepm, int bage, int fage, double **oldm, double **savm, int cij, int estepm,double delti[],double **matcov,char strstart[], int nres ) |
|
|
{ |
{ |
/* Covariances of health expectancies eij and of total life expectancies according |
/* Covariances of health expectancies eij and of total life expectancies according |
Line 5051 void cvevsij(double ***eij, double x[],
|
Line 5129 void cvevsij(double ***eij, double x[],
|
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
xm[i] = x[i] - (i==theta ?delti[theta]:0); |
xm[i] = x[i] - (i==theta ?delti[theta]:0); |
} |
} |
hpxij(p3matp,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, cij); |
hpxij(p3matp,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, cij, nres); |
hpxij(p3matm,nhstepm,age,hstepm,xm,nlstate,stepm,oldm,savm, cij); |
hpxij(p3matm,nhstepm,age,hstepm,xm,nlstate,stepm,oldm,savm, cij, nres); |
|
|
for(j=1; j<= nlstate; j++){ |
for(j=1; j<= nlstate; j++){ |
for(i=1; i<=nlstate; i++){ |
for(i=1; i<=nlstate; i++){ |
Line 5093 void cvevsij(double ***eij, double x[],
|
Line 5171 void cvevsij(double ***eij, double x[],
|
} |
} |
|
|
/* Computing expectancies */ |
/* Computing expectancies */ |
hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij); |
hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij,nres); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
for(j=1; j<=nlstate;j++) |
for(j=1; j<=nlstate;j++) |
for (h=0, eij[i][j][(int)age]=0; h<=nhstepm-1; h++){ |
for (h=0, eij[i][j][(int)age]=0; h<=nhstepm-1; h++){ |
Line 5148 void cvevsij(double ***eij, double x[],
|
Line 5226 void cvevsij(double ***eij, double x[],
|
} |
} |
|
|
/************ Variance ******************/ |
/************ Variance ******************/ |
void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int *ncvyearp, int ij, int estepm, int cptcov, int cptcod, int popbased, int mobilav, char strstart[]) |
void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **prlim, double ftolpl, int *ncvyearp, int ij, int estepm, int cptcov, int cptcod, int popbased, int mobilav, char strstart[], int nres) |
{ |
{ |
/* Variance of health expectancies */ |
/* Variance of health expectancies */ |
/* double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ |
/* double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ |
Line 5274 void cvevsij(double ***eij, double x[],
|
Line 5352 void cvevsij(double ***eij, double x[],
|
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
} |
} |
|
|
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij, nresult); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5286 void cvevsij(double ***eij, double x[],
|
Line 5364 void cvevsij(double ***eij, double x[],
|
} |
} |
} |
} |
|
|
hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij); /* Returns p3mat[i][j][h] for h=1 to nhstepm */ |
hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij,nres); /* Returns p3mat[i][j][h] for h=1 to nhstepm */ |
for(j=1; j<= nlstate; j++){ |
for(j=1; j<= nlstate; j++){ |
for(h=0; h<=nhstepm; h++){ |
for(h=0; h<=nhstepm; h++){ |
for(i=1, gp[h][j]=0.;i<=nlstate;i++) |
for(i=1, gp[h][j]=0.;i<=nlstate;i++) |
Line 5306 void cvevsij(double ***eij, double x[],
|
Line 5384 void cvevsij(double ***eij, double x[],
|
for(i=1; i<=npar; i++) /* Computes gradient x - delta */ |
for(i=1; i<=npar; i++) /* Computes gradient x - delta */ |
xp[i] = x[i] - (i==theta ?delti[theta]:0); |
xp[i] = x[i] - (i==theta ?delti[theta]:0); |
|
|
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp, ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp, ij, nresult); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5318 void cvevsij(double ***eij, double x[],
|
Line 5396 void cvevsij(double ***eij, double x[],
|
} |
} |
} |
} |
|
|
hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij); |
hpxij(p3mat,nhstepm,age,hstepm,xp,nlstate,stepm,oldm,savm, ij,nres); |
|
|
for(j=1; j<= nlstate; j++){ /* Sum of wi * eij = e.j */ |
for(j=1; j<= nlstate; j++){ /* Sum of wi * eij = e.j */ |
for(h=0; h<=nhstepm; h++){ |
for(h=0; h<=nhstepm; h++){ |
Line 5383 void cvevsij(double ***eij, double x[],
|
Line 5461 void cvevsij(double ***eij, double x[],
|
/* end ppptj */ |
/* end ppptj */ |
/* x centered again */ |
/* x centered again */ |
|
|
prevalim(prlim,nlstate,x,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,x,age,oldm,savm,ftolpl,ncvyearp,ij, nresult); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5399 void cvevsij(double ***eij, double x[],
|
Line 5477 void cvevsij(double ***eij, double x[],
|
computed over hstepm (estepm) matrices product = hstepm*stepm months) |
computed over hstepm (estepm) matrices product = hstepm*stepm months) |
as a weighted average of prlim. |
as a weighted average of prlim. |
*/ |
*/ |
hpxij(p3mat,nhstepm,age,hstepm,x,nlstate,stepm,oldm,savm, ij); |
hpxij(p3mat,nhstepm,age,hstepm,x,nlstate,stepm,oldm,savm, ij, nres); |
for(j=nlstate+1;j<=nlstate+ndeath;j++){ |
for(j=nlstate+1;j<=nlstate+ndeath;j++){ |
for(i=1,gmp[j]=0.;i<= nlstate; i++) |
for(i=1,gmp[j]=0.;i<= nlstate; i++) |
gmp[j] += prlim[i][i]*p3mat[i][j][1]; |
gmp[j] += prlim[i][i]*p3mat[i][j][1]; |
Line 5462 void cvevsij(double ***eij, double x[],
|
Line 5540 void cvevsij(double ***eij, double x[],
|
} /* end varevsij */ |
} /* end varevsij */ |
|
|
/************ Variance of prevlim ******************/ |
/************ 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 *ncvyearp, int ij, char strstart[]) |
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 *ncvyearp, int ij, char strstart[], int nres) |
{ |
{ |
/* Variance of prevalence limit for each state ij using current parameters x[] and estimates of neighbourhood give by delti*/ |
/* 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 **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double **savm,double ftolpl);*/ |
Line 5505 void cvevsij(double ***eij, double x[],
|
Line 5583 void cvevsij(double ***eij, double x[],
|
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
} |
} |
if((int)age==79 ||(int)age== 80 ||(int)age== 81 ) |
if((int)age==79 ||(int)age== 80 ||(int)age== 81 ) |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij,nres); |
else |
else |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij,nres); |
for(i=1;i<=nlstate;i++){ |
for(i=1;i<=nlstate;i++){ |
gp[i] = prlim[i][i]; |
gp[i] = prlim[i][i]; |
mgp[theta][i] = prlim[i][i]; |
mgp[theta][i] = prlim[i][i]; |
Line 5515 void cvevsij(double ***eij, double x[],
|
Line 5593 void cvevsij(double ***eij, double x[],
|
for(i=1; i<=npar; i++) /* Computes gradient */ |
for(i=1; i<=npar; i++) /* Computes gradient */ |
xp[i] = x[i] - (i==theta ?delti[theta]:0); |
xp[i] = x[i] - (i==theta ?delti[theta]:0); |
if((int)age==79 ||(int)age== 80 ||(int)age== 81 ) |
if((int)age==79 ||(int)age== 80 ||(int)age== 81 ) |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij,nres); |
else |
else |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij); |
prevalim(prlim,nlstate,xp,age,oldm,savm,ftolpl,ncvyearp,ij,nres); |
for(i=1;i<=nlstate;i++){ |
for(i=1;i<=nlstate;i++){ |
gm[i] = prlim[i][i]; |
gm[i] = prlim[i][i]; |
mgm[theta][i] = prlim[i][i]; |
mgm[theta][i] = prlim[i][i]; |
Line 5925 void printinghtml(char fileresu[], char
|
Line 6003 void printinghtml(char fileresu[], char
|
int popforecast, int prevfcast, int backcast, int estepm , \ |
int popforecast, int prevfcast, int backcast, int estepm , \ |
double jprev1, double mprev1,double anprev1, double dateprev1, \ |
double jprev1, double mprev1,double anprev1, double dateprev1, \ |
double jprev2, double mprev2,double anprev2, double dateprev2){ |
double jprev2, double mprev2,double anprev2, double dateprev2){ |
int jj1, k1, i1, cpt; |
int jj1, k1, i1, cpt, k4, nres; |
|
|
fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
<li><a href='#secondorder'>Result files (second order (variance)</a>\n \ |
<li><a href='#secondorder'>Result files (second order (variance)</a>\n \ |
</ul>"); |
</ul>"); |
|
fprintf(fichtm,"<ul><li> model=1+age+%s\n \ |
|
</ul>", model); |
fprintf(fichtm,"<ul><li><h4><a name='firstorder'>Result files (first order: no variance)</a></h4>\n"); |
fprintf(fichtm,"<ul><li><h4><a name='firstorder'>Result files (first order: no variance)</a></h4>\n"); |
fprintf(fichtm,"<li>- Observed frequency between two states (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file)<br/>\n", |
fprintf(fichtm,"<li>- Observed frequency between two states (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file)<br/>\n", |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTMFR_",".htm"),subdirfext3(optionfilefiname,"PHTMFR_",".htm")); |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTMFR_",".htm"),subdirfext3(optionfilefiname,"PHTMFR_",".htm")); |
Line 5964 void printinghtml(char fileresu[], char
|
Line 6044 void printinghtml(char fileresu[], char
|
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
|
|
jj1=0; |
jj1=0; |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(k1=1; k1<=m;k1++){ |
for(k1=1; k1<=m;k1++){ |
|
if(TKresult[nres]!= k1) |
|
continue; |
|
|
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
jj1++; |
jj1++; |
if (cptcovn > 0) { |
if (cptcovn > 0) { |
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
for (cpt=1; cpt<=cptcoveff;cpt++){ |
for (cpt=1; cpt<=cptcoveff;cpt++){ |
fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); |
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); |
printf(" V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]);fflush(stdout); |
printf(" V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]);fflush(stdout); |
|
/* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); */ |
|
/* printf(" V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]);fflush(stdout); */ |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]);fflush(stdout); |
|
} |
|
|
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
Line 6085 See page 'Matrix of variance-covariance
|
Line 6176 See page 'Matrix of variance-covariance
|
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
|
|
jj1=0; |
jj1=0; |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(k1=1; k1<=m;k1++){ |
for(k1=1; k1<=m;k1++){ |
|
if(TKresult[nres]!= k1) |
|
continue; |
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
jj1++; |
jj1++; |
if (cptcovn > 0) { |
if (cptcovn > 0) { |
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
for (cpt=1; cpt<=cptcoveff;cpt++) /**< cptcoveff number of variables */ |
for (cpt=1; cpt<=cptcoveff;cpt++) /**< cptcoveff number of variables */ |
fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); |
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]); |
|
/* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); */ |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
|
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
|
|
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
Line 6121 void printinggnuplot(char fileresu[], ch
|
Line 6221 void printinggnuplot(char fileresu[], ch
|
|
|
char dirfileres[132],optfileres[132]; |
char dirfileres[132],optfileres[132]; |
char gplotcondition[132]; |
char gplotcondition[132]; |
int cpt=0,k1=0,i=0,k=0,j=0,jk=0,k2=0,k3=0,ij=0,l=0; |
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 lv=0, vlv=0, kl=0; |
int lv=0, vlv=0, kl=0; |
int ng=0; |
int ng=0; |
int vpopbased; |
int vpopbased; |
int ioffset; /* variable offset for columns */ |
int ioffset; /* variable offset for columns */ |
|
int nres=0; /* Index of resultline */ |
|
|
/* if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) { */ |
/* if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) { */ |
/* printf("Problem with file %s",optionfilegnuplot); */ |
/* printf("Problem with file %s",optionfilegnuplot); */ |
Line 6170 void printinggnuplot(char fileresu[], ch
|
Line 6271 void printinggnuplot(char fileresu[], ch
|
strcpy(optfileres,"vpl"); |
strcpy(optfileres,"vpl"); |
/* 1eme*/ |
/* 1eme*/ |
for (cpt=1; cpt<= nlstate ; cpt ++) { /* For each live state */ |
for (cpt=1; cpt<= nlstate ; cpt ++) { /* For each live state */ |
for (k1=1; k1<= m && selected(k1) ; k1 ++) { /* For each valid combination of covariate */ |
for (k1=1; k1<= m ; k1 ++) /* For each valid combination of covariate */ |
/* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
fprintf(ficgp,"\n# 1st: Period (stable) prevalence with CI: 'VPL_' files "); |
/* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
|
/* We are interested in selected combination by the resultline */ |
|
printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
|
fprintf(ficgp,"\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the value of the covariate corresponding to k1 combination */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the value of the covariate corresponding to k1 combination */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
Line 6180 void printinggnuplot(char fileresu[], ch
|
Line 6286 void printinggnuplot(char fileresu[], ch
|
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ |
vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ |
/* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv */ |
/* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv */ |
|
printf(" V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
printf("\n#\n"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
continue; |
continue; |
} |
} |
|
|
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1); |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1); |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d.svg\" \n",optionfilefiname,cpt,k1); |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d.svg\" \n",optionfilefiname,cpt,k1); |
fprintf(ficgp,"set xlabel \"Age\" \n\ |
fprintf(ficgp,"set xlabel \"Age\" \n\ |
set ylabel \"Probability\" \n \ |
set ylabel \"Probability\" \n \ |
set ter svg size 640, 480\n \ |
set ter svg size 640, 480\n \ |
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:2 \"%%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1); |
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:2 \"%%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1); |
|
|
for (i=1; i<= nlstate ; i ++) { |
for (i=1; i<= nlstate ; i ++) { |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
Line 6241 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6353 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
fprintf(ficgp,"\nset out \n"); |
fprintf(ficgp,"\nset out \n"); |
} /* k1 */ |
} /* k1 */ |
} /* cpt */ |
} /* cpt */ |
/*2 eme*/ |
|
for (k1=1; k1<= m ; k1 ++) { |
|
|
|
|
|
|
/*2 eme*/ |
|
for (k1=1; k1<= m ; k1 ++) |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
Line 6253 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6369 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6290 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6410 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
} /* state */ |
} /* state */ |
} /* vpopbased */ |
} /* vpopbased */ |
fprintf(ficgp,"\nset out;set out \"%s_%d.svg\"; replot; set out; \n",subdirf2(optionfilefiname,"E_"),k1); /* Buggy gnuplot */ |
fprintf(ficgp,"\nset out;set out \"%s_%d.svg\"; replot; set out; \n",subdirf2(optionfilefiname,"E_"),k1); /* Buggy gnuplot */ |
} /* k1 */ |
} /* k1 end 2 eme*/ |
|
|
|
|
/*3eme*/ |
/*3eme*/ |
for (k1=1; k1<= m ; k1 ++) { |
for (k1=1; k1<= m ; k1 ++) |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k) |
|
continue; |
|
|
for (cpt=1; cpt<= nlstate ; cpt ++) { |
for (cpt=1; cpt<= nlstate ; cpt ++) { |
fprintf(ficgp,"\n# 3d: Life expectancy with EXP_ files: cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate dummy combination and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
Line 6306 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6429 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
/* for(k=1; k <= ncovds; k++){ */ |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6336 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6463 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
|
|
/* 4eme */ |
/* 4eme */ |
/* Survival functions (period) from state i in state j by initial state i */ |
/* Survival functions (period) from state i in state j by initial state i */ |
for (k1=1; k1<= m ; k1 ++) { /* For each multivariate if any */ |
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
|
|
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
Line 6348 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 6478 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6378 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6511 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
|
|
/* 5eme */ |
/* 5eme */ |
/* Survival functions (period) from state i in state j by final state j */ |
/* Survival functions (period) from state i in state j by final state j */ |
for (k1=1; k1<= m ; k1 ++) { /* For each covariate if any */ |
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
|
|
fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); |
Line 6390 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6526 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6428 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6567 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
|
|
/* 6eme */ |
/* 6eme */ |
/* CV preval stable (period) for each covariate */ |
/* CV preval stable (period) for each covariate */ |
for (k1=1; k1<= m ; k1 ++) { /* For each covariate combination (1 to m=2**k), if any covariate is present */ |
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
|
|
fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#CV preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
Line 6440 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6582 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6471 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6616 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/* 7eme */ |
/* 7eme */ |
if(backcast == 1){ |
if(backcast == 1){ |
/* CV back preval stable (period) for each covariate */ |
/* CV back preval stable (period) for each covariate */ |
for (k1=1; k1<= m ; k1 ++) { /* For each covariate combination (1 to m=2**k), if any covariate is present */ |
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
Line 6482 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6630 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6518 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6669 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
if(prevfcast==1){ |
if(prevfcast==1){ |
/* Projection from cross-sectional to stable (period) for each covariate */ |
/* Projection from cross-sectional to stable (period) for each covariate */ |
|
|
for (k1=1; k1<= m ; k1 ++) { /* For each covariate combination (1 to m=2**k), if any covariate is present */ |
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= k1) |
|
continue; |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#Projection of prevalence to stable (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
Line 6529 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6683 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
vlv= nbcode[Tvaraff[k]][lv]; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
Line 6640 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6797 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
fprintf(ficgp,"# +exp(a14+b14*age+c14age*age+d14*V1+e14*V1*age)+...)\n"); |
fprintf(ficgp,"# +exp(a14+b14*age+c14age*age+d14*V1+e14*V1*age)+...)\n"); |
fprintf(ficgp,"#\n"); |
fprintf(ficgp,"#\n"); |
for(ng=1; ng<=3;ng++){ /* Number of graphics: first is logit, 2nd is probabilities, third is incidences per year*/ |
for(ng=1; ng<=3;ng++){ /* Number of graphics: first is logit, 2nd is probabilities, third is incidences per year*/ |
|
fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year \n"); |
|
fprintf(ficgp,"#model=%s \n",model); |
fprintf(ficgp,"# ng=%d\n",ng); |
fprintf(ficgp,"# ng=%d\n",ng); |
fprintf(ficgp,"# jk=1 to 2^%d=%d\n",cptcoveff,m); |
fprintf(ficgp,"# jk=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ |
for(jk=1; jk <=m; jk++) { |
for(jk=1; jk <=m; jk++) /* For each combination of covariate */ |
fprintf(ficgp,"# jk=%d\n",jk); |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(TKresult[nres]!= jk) |
|
continue; |
|
fprintf(ficgp,"# Combination of dummy jk=%d and ",jk); |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),jk,ng); |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),jk,ng); |
fprintf(ficgp,"\nset ter svg size 640, 480 "); |
fprintf(ficgp,"\nset ter svg size 640, 480 "); |
if (ng==1){ |
if (ng==1){ |
Line 6684 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6850 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
break; |
break; |
} |
} |
ij=1;/* To be checked else nbcode[0][0] wrong */ |
ij=1;/* To be checked else nbcode[0][0] wrong */ |
for(j=3; j <=ncovmodel-nagesqr; j++) { |
ijp=1; /* product no age */ |
|
/* for(j=3; j <=ncovmodel-nagesqr; j++) { */ |
|
for(j=1; j <=cptcovt; j++) { /* For each covariate of the simplified model */ |
/* printf("Tage[%d]=%d, j=%d\n", ij, Tage[ij], j); */ |
/* printf("Tage[%d]=%d, j=%d\n", ij, Tage[ij], j); */ |
if(ij <=cptcovage) { /* Bug valgrind */ |
if(j==Tage[ij]) { /* Product by age */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
if(ij <=cptcovage) { /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,j-2)]); |
if(Dummy[j]==0){ |
/* 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+2+nagesqr-1,Tinvresult[nres][Tvar[j]]);; |
|
}else{ /* quantitative */ |
|
fprintf(ficgp,"+p%d*%f*x",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* Tqinvresult in decoderesult */ |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]); */ |
|
} |
ij++; |
ij++; |
} |
} |
} |
}else if(j==Tprod[ijp]) { /* */ |
else |
/* printf("Tprod[%d]=%d, j=%d\n", ij, Tprod[ijp], j); */ |
fprintf(ficgp,"+p%d*%d",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,j-2)]); /* Valgrind bug nbcode */ |
if(ijp <=cptcovprod) { /* Product */ |
} |
if(Dummy[Tvard[ijp][1]]==0){/* Vn is dummy */ |
|
if(Dummy[Tvard[ijp][2]]==0){/* Vn and Vm are dummy */ |
|
/* fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(jk,j)],nbcode[Tvard[ijp][2]][codtabm(jk,j)]); */ |
|
fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tinvresult[nres][Tvard[ijp][2]]); |
|
}else{ /* Vn is dummy and Vm is quanti */ |
|
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(jk,j)],Tqinvresult[nres][Tvard[ijp][2]]); */ |
|
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
|
} |
|
}else{ /* Vn*Vm Vn is quanti */ |
|
if(Dummy[Tvard[ijp][2]]==0){ |
|
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][2]],Tqinvresult[nres][Tvard[ijp][1]]); |
|
}else{ /* Both quanti */ |
|
fprintf(ficgp,"+p%d*%f*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
|
} |
|
} |
|
} |
|
} else{ /* simple covariate */ |
|
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,nbcode[Tvar[j]][codtabm(jk,j)]); /\* Valgrind bug nbcode *\/ */ |
|
if(Dummy[j]==0){ |
|
fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]); /* */ |
|
}else{ /* quantitative */ |
|
fprintf(ficgp,"+p%d*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* */ |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]); */ |
|
} |
|
} /* end simple */ |
|
} /* end j */ |
}else{ |
}else{ |
i=i-ncovmodel; |
i=i-ncovmodel; |
if(ng !=1 ) /* For logit formula of log p11 is more difficult to get */ |
if(ng !=1 ) /* For logit formula of log p11 is more difficult to get */ |
Line 6713 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 6910 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
|
|
ij=1; |
ij=1; |
for(j=3; j <=ncovmodel-nagesqr; j++){ |
for(j=3; j <=ncovmodel-nagesqr; j++){ |
if(ij <=cptcovage) { /* Bug valgrind */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
if(ij <=cptcovage) { /* Bug valgrind */ |
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,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])]); */ |
/* fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,Tvar[j-2])]); */ |
ij++; |
ij++; |
Line 6866 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7063 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
} /* end bad */ |
} /* end bad */ |
|
|
for (age=bage; age<=fage; age++){ |
for (age=bage; age<=fage; age++){ |
printf("%d %d ", cptcod, (int)age); |
/* printf("%d %d ", cptcod, (int)age); */ |
sumnewp[cptcod]=0.; |
sumnewp[cptcod]=0.; |
sumnewm[cptcod]=0.; |
sumnewm[cptcod]=0.; |
for (i=1; i<=nlstate;i++){ |
for (i=1; i<=nlstate;i++){ |
Line 6905 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7102 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
|
|
|
|
/************** Forecasting ******************/ |
/************** Forecasting ******************/ |
void prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){ |
void prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){ |
/* proj1, year, month, day of starting projection |
/* proj1, year, month, day of starting projection |
agemin, agemax range of age |
agemin, agemax range of age |
dateprev1 dateprev2 range of dates during which prevalence is computed |
dateprev1 dateprev2 range of dates during which prevalence is computed |
anproj2 year of en of projection (same day and month as proj1). |
anproj2 year of en of projection (same day and month as proj1). |
*/ |
*/ |
int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1; |
int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; |
double agec; /* generic age */ |
double agec; /* generic age */ |
double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; |
double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; |
double *popeffectif,*popcount; |
double *popeffectif,*popcount; |
Line 6933 void prevforecast(char fileres[], double
|
Line 7130 void prevforecast(char fileres[], double
|
printf("Problem with forecast resultfile: %s\n", fileresf); |
printf("Problem with forecast resultfile: %s\n", fileresf); |
fprintf(ficlog,"Problem with forecast resultfile: %s\n", fileresf); |
fprintf(ficlog,"Problem with forecast resultfile: %s\n", fileresf); |
} |
} |
printf("Computing forecasting: result on file '%s', please wait... \n", fileresf); |
printf("\nComputing forecasting: result on file '%s', please wait... \n", fileresf); |
fprintf(ficlog,"Computing forecasting: result on file '%s', please wait... \n", fileresf); |
fprintf(ficlog,"\nComputing forecasting: result on file '%s', please wait... \n", fileresf); |
|
|
if (cptcoveff==0) ncodemax[cptcoveff]=1; |
if (cptcoveff==0) ncodemax[cptcoveff]=1; |
|
|
Line 6965 void prevforecast(char fileres[], double
|
Line 7162 void prevforecast(char fileres[], double
|
fprintf(ficresf,"#****** Routine prevforecast **\n"); |
fprintf(ficresf,"#****** Routine prevforecast **\n"); |
|
|
/* if (h==(int)(YEARM*yearp)){ */ |
/* if (h==(int)(YEARM*yearp)){ */ |
for(k=1;k<=i1;k++){ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ |
|
if(TKresult[nres]!= k) |
|
continue; |
if(invalidvarcomb[k]){ |
if(invalidvarcomb[k]){ |
printf("\nCombination (%d) projection ignored because no cases \n",k); |
printf("\nCombination (%d) projection ignored because no cases \n",k); |
continue; |
continue; |
Line 6974 void prevforecast(char fileres[], double
|
Line 7174 void prevforecast(char fileres[], double
|
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficresf," yearproj age"); |
fprintf(ficresf," yearproj age"); |
for(j=1; j<=nlstate+ndeath;j++){ |
for(j=1; j<=nlstate+ndeath;j++){ |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
Line 6988 void prevforecast(char fileres[], double
|
Line 7192 void prevforecast(char fileres[], double
|
nhstepm = nhstepm/hstepm; |
nhstepm = nhstepm/hstepm; |
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
hpxij(p3mat,nhstepm,agec,hstepm,p,nlstate,stepm,oldm,savm, k); |
hpxij(p3mat,nhstepm,agec,hstepm,p,nlstate,stepm,oldm,savm, k,nres); |
|
|
for (h=0; h<=nhstepm; h++){ |
for (h=0; h<=nhstepm; h++){ |
if (h*hstepm/YEARM*stepm ==yearp) { |
if (h*hstepm/YEARM*stepm ==yearp) { |
Line 7856 int readdata(char datafile[], int firsto
|
Line 8060 int readdata(char datafile[], int firsto
|
return (1); |
return (1); |
} |
} |
|
|
void removespace(char **stri){/*, char stro[]) {*/ |
void removefirstspace(char **stri){/*, char stro[]) {*/ |
char *p1 = *stri, *p2 = *stri; |
char *p1 = *stri, *p2 = *stri; |
do |
while (*p2 == ' ') |
while (*p2 == ' ') |
p2++; |
p2++; |
/* while ((*p1++ = *p2++) !=0) */ |
while (*p1++ == *p2++); |
/* ; */ |
*stri=p1; |
/* do */ |
|
/* while (*p2 == ' ') */ |
|
/* p2++; */ |
|
/* while (*p1++ == *p2++); */ |
|
*stri=p2; |
} |
} |
|
|
int decoderesult ( char resultline[]) |
int decoderesult ( char resultline[], int nres) |
/**< This routine decode one result line and returns the combination # of dummy covariates only **/ |
/**< This routine decode one result line and returns the combination # of dummy covariates only **/ |
{ |
{ |
int j=0, k=0; |
int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=0; |
char resultsav[MAXLINE]; |
char resultsav[MAXLINE]; |
|
int resultmodel[MAXLINE]; |
|
int modelresult[MAXLINE]; |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
|
|
removespace(&resultline); |
removefirstspace(&resultline); |
printf("decoderesult=%s\n",resultline); |
printf("decoderesult:%s\n",resultline); |
|
|
if (strstr(resultline,"v") !=0){ |
if (strstr(resultline,"v") !=0){ |
printf("Error. 'v' must be in upper case 'V' result: %s ",resultline); |
printf("Error. 'v' must be in upper case 'V' result: %s ",resultline); |
Line 7884 int decoderesult ( char resultline[])
|
Line 8094 int decoderesult ( char resultline[])
|
if (strlen(resultsav) >1){ |
if (strlen(resultsav) >1){ |
j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */ |
j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */ |
} |
} |
|
if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
for(k=1; k<=j;k++){ /* Loop on total covariates of the model */ |
printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); |
cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' |
fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs); |
resultsav= V4=1 V5=25.1 V3=0 strb=V3=0 stra= V4=1 V5=25.1 */ |
} |
cutl(strc,strd,strb,'='); /* strb:V4=1 strc=1 strd=V4 */ |
for(k=1; k<=j;k++){ /* Loop on any covariate of the result line */ |
|
if(nbocc(resultsav,'=') >1){ |
|
cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' |
|
resultsav= V4=1 V5=25.1 V3=0 strb=V3=0 stra= V4=1 V5=25.1 */ |
|
cutl(strc,strd,strb,'='); /* strb:V4=1 strc=1 strd=V4 */ |
|
}else |
|
cutl(strc,strd,resultsav,'='); |
Tvalsel[k]=atof(strc); /* 1 */ |
Tvalsel[k]=atof(strc); /* 1 */ |
|
|
cutl(strc,stre,strd,'V'); /* strd='V4' strc=4 stre='V' */; |
cutl(strc,stre,strd,'V'); /* strd='V4' strc=4 stre='V' */; |
Tvarsel[k]=atoi(strc); |
Tvarsel[k]=atoi(strc); |
/* Typevarsel[k]=1; /\* 1 for age product *\/ */ |
/* Typevarsel[k]=1; /\* 1 for age product *\/ */ |
Line 7898 int decoderesult ( char resultline[])
|
Line 8114 int decoderesult ( char resultline[])
|
if (nbocc(stra,'=') >0) |
if (nbocc(stra,'=') >0) |
strcpy(resultsav,stra); /* and analyzes it */ |
strcpy(resultsav,stra); /* and analyzes it */ |
} |
} |
|
/* Checking for missing or useless values in comparison of current model needs */ |
|
for(k1=1; k1<= cptcovt ;k1++){ /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
if(Typevar[k1]==0){ /* Single covariate in model */ |
|
match=0; |
|
for(k2=1; k2 <=j;k2++){/* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
if(Tvar[k1]==Tvarsel[k2]) {/* Tvar[1]=5 == Tvarsel[2]=5 */ |
|
modelresult[k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
|
match=1; |
|
break; |
|
} |
|
} |
|
if(match == 0){ |
|
printf("Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); |
|
} |
|
} |
|
} |
|
/* Checking for missing or useless values in comparison of current model needs */ |
|
for(k2=1; k2 <=j;k2++){ /* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
match=0; |
|
for(k1=1; k1<= cptcovt ;k1++){ /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
if(Typevar[k1]==0){ /* Single */ |
|
if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ |
|
resultmodel[k1]=k2; /* resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ |
|
++match; |
|
} |
|
} |
|
} |
|
if(match == 0){ |
|
printf("Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); |
|
}else if(match > 1){ |
|
printf("Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); |
|
} |
|
} |
|
|
|
/* We need to deduce which combination number is chosen and save quantitative values */ |
|
/* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
/* result line V4=1 V5=25.1 V3=0 V2=8 V1=1 */ |
|
/* should give a combination of dummy V4=1, V3=0, V1=1 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 5 + (1offset) = 6*/ |
|
/* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
/* should give a combination of dummy V4=1, V3=1, V1=0 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 3 + (1offset) = 4*/ |
|
/* 1 0 0 0 */ |
|
/* 2 1 0 0 */ |
|
/* 3 0 1 0 */ |
|
/* 4 1 1 0 */ /* V4=1, V3=1, V1=0 */ |
|
/* 5 0 0 1 */ |
|
/* 6 1 0 1 */ /* V4=1, V3=0, V1=1 */ |
|
/* 7 0 1 1 */ |
|
/* 8 1 1 1 */ |
|
/* V(Tvresult)=Tresult V4=1 V3=0 V1=1 Tresult[nres=1][2]=0 */ |
|
/* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ |
|
/* V5*age V5 known which value for nres? */ |
|
/* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ |
|
for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* model line */ |
|
if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Single dummy */ |
|
k3= resultmodel[k1]; /* resultmodel[2(V4)] = 1=k3 */ |
|
k2=(int)Tvarsel[k3]; /* Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 */ |
|
k+=Tvalsel[k3]*pow(2,k4); /* Tvalsel[1]=1 */ |
|
Tresult[nres][k4+1]=Tvalsel[k3];/* Tresult[nres][1]=1(V4=1) Tresult[nres][2]=0(V3=0) */ |
|
Tvresult[nres][k4+1]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ |
|
Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ |
|
printf("Decoderesult Dummy k=%d, V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k2, k3, (int)Tvalsel[k3], k4); |
|
k4++;; |
|
} else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Single quantitative */ |
|
k3q= resultmodel[k1]; /* resultmodel[2] = 1=k3 */ |
|
k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 */ |
|
Tqresult[nres][k4q+1]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ |
|
Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ |
|
Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
|
printf("Decoderesult Quantitative nres=%d, V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); |
|
k4q++;; |
|
} |
|
} |
|
|
|
TKresult[nres]=++k; /* Combination for the nresult and the model */ |
return (0); |
return (0); |
} |
} |
int selected( int kvar){ /* Selected combination of covariates */ |
|
if(Tvarsel[kvar]) |
|
return (0); |
|
else |
|
return(1); |
|
} |
|
int decodemodel( char model[], int lastobs) |
int decodemodel( char model[], int lastobs) |
/**< This routine decodes the model and returns: |
/**< This routine decodes the model and returns: |
* Model V1+V2+V3+V8+V7*V8+V5*V6+V8*age+V3*age+age*age |
* Model V1+V2+V3+V8+V7*V8+V5*V6+V8*age+V3*age+age*age |
Line 7945 int decodemodel( char model[], int lasto
|
Line 8230 int decodemodel( char model[], int lasto
|
if ((strpt=strstr(model,"age*age")) !=0){ |
if ((strpt=strstr(model,"age*age")) !=0){ |
printf(" strpt=%s, model=%s\n",strpt, model); |
printf(" strpt=%s, model=%s\n",strpt, model); |
if(strpt != model){ |
if(strpt != model){ |
printf("Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ |
printf("Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ |
'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
corresponding column of parameters.\n",model); |
corresponding column of parameters.\n",model); |
fprintf(ficlog,"Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ |
fprintf(ficlog,"Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ |
'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
corresponding column of parameters.\n",model); fflush(ficlog); |
corresponding column of parameters.\n",model); fflush(ficlog); |
return 1; |
return 1; |
} |
} |
nagesqr=1; |
nagesqr=1; |
if (strstr(model,"+age*age") !=0) |
if (strstr(model,"+age*age") !=0) |
substrchaine(modelsav, model, "+age*age"); |
substrchaine(modelsav, model, "+age*age"); |
else if (strstr(model,"age*age+") !=0) |
else if (strstr(model,"age*age+") !=0) |
substrchaine(modelsav, model, "age*age+"); |
substrchaine(modelsav, model, "age*age+"); |
else |
else |
substrchaine(modelsav, model, "age*age"); |
substrchaine(modelsav, model, "age*age"); |
}else |
}else |
nagesqr=0; |
nagesqr=0; |
if (strlen(modelsav) >1){ |
if (strlen(modelsav) >1){ |
Line 8029 int decodemodel( char model[], int lasto
|
Line 8314 int decodemodel( char model[], int lasto
|
} |
} |
cptcovage=0; |
cptcovage=0; |
for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model */ |
for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model */ |
cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' |
cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' |
modelsav==V2+V1+V4+V3*age strb=V3*age stra=V2+V1+V4 */ |
modelsav==V2+V1+V4+V3*age strb=V3*age stra=V2+V1+V4 */ |
if (nbocc(modelsav,'+')==0) strcpy(strb,modelsav); /* and analyzes it */ |
if (nbocc(modelsav,'+')==0) strcpy(strb,modelsav); /* and analyzes it */ |
/* printf("i=%d a=%s b=%s sav=%s\n",i, stra,strb,modelsav);*/ |
/* printf("i=%d a=%s b=%s sav=%s\n",i, stra,strb,modelsav);*/ |
/*scanf("%d",i);*/ |
/*scanf("%d",i);*/ |
if (strchr(strb,'*')) { /**< Model includes a product V2+V1+V4+V3*age strb=V3*age */ |
if (strchr(strb,'*')) { /**< Model includes a product V2+V1+V4+V3*age strb=V3*age */ |
cutl(strc,strd,strb,'*'); /**< strd*strc Vm*Vn: strb=V3*age(input) strc=age strd=V3 ; V3*V2 strc=V2, strd=V3 */ |
cutl(strc,strd,strb,'*'); /**< strd*strc Vm*Vn: strb=V3*age(input) strc=age strd=V3 ; V3*V2 strc=V2, strd=V3 */ |
if (strcmp(strc,"age")==0) { /**< Model includes age: Vn*age */ |
if (strcmp(strc,"age")==0) { /**< Model includes age: Vn*age */ |
/* covar is not filled and then is empty */ |
/* covar is not filled and then is empty */ |
cptcovprod--; |
cptcovprod--; |
cutl(stre,strb,strd,'V'); /* strd=V3(input): stre="3" */ |
cutl(stre,strb,strd,'V'); /* strd=V3(input): stre="3" */ |
Tvar[k]=atoi(stre); /* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1 */ |
Tvar[k]=atoi(stre); /* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1 */ |
Typevar[k]=1; /* 1 for age product */ |
Typevar[k]=1; /* 1 for age product */ |
cptcovage++; /* Sums the number of covariates which include age as a product */ |
cptcovage++; /* Sums the number of covariates which include age as a product */ |
Tage[cptcovage]=k; /* Tvar[4]=3, Tage[1] = 4 or V1+V1*age Tvar[2]=1, Tage[1]=2 */ |
Tage[cptcovage]=k; /* Tvar[4]=3, Tage[1] = 4 or V1+V1*age Tvar[2]=1, Tage[1]=2 */ |
/*printf("stre=%s ", stre);*/ |
/*printf("stre=%s ", stre);*/ |
} else if (strcmp(strd,"age")==0) { /* or age*Vn */ |
} else if (strcmp(strd,"age")==0) { /* or age*Vn */ |
cptcovprod--; |
cptcovprod--; |
cutl(stre,strb,strc,'V'); |
cutl(stre,strb,strc,'V'); |
Tvar[k]=atoi(stre); |
Tvar[k]=atoi(stre); |
Typevar[k]=1; /* 1 for age product */ |
Typevar[k]=1; /* 1 for age product */ |
cptcovage++; |
cptcovage++; |
Tage[cptcovage]=k; |
Tage[cptcovage]=k; |
} else { /* Age is not in the model product V2+V1+V1*V4+V3*age+V3*V2 strb=V3*V2*/ |
} else { /* Age is not in the model product V2+V1+V1*V4+V3*age+V3*V2 strb=V3*V2*/ |
/* loops on k1=1 (V3*V2) and k1=2 V4*V3 */ |
/* loops on k1=1 (V3*V2) and k1=2 V4*V3 */ |
cptcovn++; |
cptcovn++; |
cptcovprodnoage++;k1++; |
cptcovprodnoage++;k1++; |
cutl(stre,strb,strc,'V'); /* strc= Vn, stre is n; strb=V3*V2 stre=3 strc=*/ |
cutl(stre,strb,strc,'V'); /* strc= Vn, stre is n; strb=V3*V2 stre=3 strc=*/ |
Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* For model-covariate k tells which data-covariate to use but |
Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* For model-covariate k tells which data-covariate to use but |
because this model-covariate is a construction we invent a new column |
because this model-covariate is a construction we invent a new column |
which is after existing variables ncovcol+nqv+ntv+nqtv + k1 |
which is after existing variables ncovcol+nqv+ntv+nqtv + k1 |
If already ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2 |
If already ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2 |
Tvar[3=V1*V4]=4+1 Tvar[5=V3*V2]=4 + 2= 6, etc */ |
Tvar[3=V1*V4]=4+1 Tvar[5=V3*V2]=4 + 2= 6, etc */ |
Typevar[k]=2; /* 2 for double fixed dummy covariates */ |
Typevar[k]=2; /* 2 for double fixed dummy covariates */ |
cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ |
cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ |
Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ |
Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ |
Tposprod[k]=k1; /* Tpsprod[3]=1, Tposprod[2]=5 */ |
Tposprod[k]=k1; /* Tpsprod[3]=1, Tposprod[2]=5 */ |
Tvard[k1][1] =atoi(strc); /* m 1 for V1*/ |
Tvard[k1][1] =atoi(strc); /* m 1 for V1*/ |
Tvard[k1][2] =atoi(stre); /* n 4 for V4*/ |
Tvard[k1][2] =atoi(stre); /* n 4 for V4*/ |
k2=k2+2; /* k2 is initialize to -1, We want to store the n and m in Vn*Vm at the end of Tvar */ |
k2=k2+2; /* k2 is initialize to -1, We want to store the n and m in Vn*Vm at the end of Tvar */ |
/* Tvar[cptcovt+k2]=Tvard[k1][1]; /\* Tvar[(cptcovt=4+k2=1)=5]= 1 (V1) *\/ */ |
/* Tvar[cptcovt+k2]=Tvard[k1][1]; /\* Tvar[(cptcovt=4+k2=1)=5]= 1 (V1) *\/ */ |
/* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ |
/* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ |
/*ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2, Tvar[3]=5, Tvar[4]=6, cptcovt=5 */ |
/*ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2, Tvar[3]=5, Tvar[4]=6, cptcovt=5 */ |
/* 1 2 3 4 5 | Tvar[5+1)=1, Tvar[7]=2 */ |
/* 1 2 3 4 5 | Tvar[5+1)=1, Tvar[7]=2 */ |
for (i=1; i<=lastobs;i++){ |
for (i=1; i<=lastobs;i++){ |
/* Computes the new covariate which is a product of |
/* Computes the new covariate which is a product of |
covar[n][i]* covar[m][i] and stores it at ncovol+k1 May not be defined */ |
covar[n][i]* covar[m][i] and stores it at ncovol+k1 May not be defined */ |
covar[ncovcol+k1][i]=covar[atoi(stre)][i]*covar[atoi(strc)][i]; |
covar[ncovcol+k1][i]=covar[atoi(stre)][i]*covar[atoi(strc)][i]; |
} |
} |
} /* End age is not in the model */ |
} /* End age is not in the model */ |
} /* End if model includes a product */ |
} /* End if model includes a product */ |
else { /* no more sum */ |
else { /* no more sum */ |
/*printf("d=%s c=%s b=%s\n", strd,strc,strb);*/ |
/*printf("d=%s c=%s b=%s\n", strd,strc,strb);*/ |
/* scanf("%d",i);*/ |
/* scanf("%d",i);*/ |
cutl(strd,strc,strb,'V'); |
cutl(strd,strc,strb,'V'); |
ks++; /**< Number of simple covariates dummy or quantitative, fixe or varying */ |
ks++; /**< Number of simple covariates dummy or quantitative, fixe or varying */ |
cptcovn++; /** V4+V3+V5: V4 and V3 timevarying dummy covariates, V5 timevarying quantitative */ |
cptcovn++; /** V4+V3+V5: V4 and V3 timevarying dummy covariates, V5 timevarying quantitative */ |
Tvar[k]=atoi(strd); |
Tvar[k]=atoi(strd); |
Typevar[k]=0; /* 0 for simple covariates */ |
Typevar[k]=0; /* 0 for simple covariates */ |
} |
} |
strcpy(modelsav,stra); /* modelsav=V2+V1+V4 stra=V2+V1+V4 */ |
strcpy(modelsav,stra); /* modelsav=V2+V1+V4 stra=V2+V1+V4 */ |
/*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav); |
/*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav); |
scanf("%d",i);*/ |
scanf("%d",i);*/ |
} /* end of loop + on total covariates */ |
} /* end of loop + on total covariates */ |
Line 8129 Typevar: 0 for simple covariate (dummy,
|
Line 8414 Typevar: 0 for simple covariate (dummy,
|
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
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); |
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, ncovf=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=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;k<=cptcovt; k++){ /* or cptocvt */ |
if (Tvar[k] <=ncovcol && (Typevar[k]==0 || Typevar[k]==2)){ /* Simple or product fixed dummy (<=ncovcol) covariates */ |
if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */ |
|
Fixed[k]= 0; |
|
Dummy[k]= 0; |
|
ncoveff++; |
|
ncovf++; |
|
nsd++; |
|
modell[k].maintype= FTYPE; |
|
TvarsD[nsd]=Tvar[k]; |
|
TvarsDind[nsd]=k; |
|
TvarF[ncovf]=Tvar[k]; |
|
TvarFind[ncovf]=k; |
|
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
}else if( Tvar[k] <=ncovcol && Typevar[k]==2){ /* Product of fixed dummy (<=ncovcol) covariates */ |
Fixed[k]= 0; |
Fixed[k]= 0; |
Dummy[k]= 0; |
Dummy[k]= 0; |
ncoveff++; |
ncoveff++; |
ncovf++; |
ncovf++; |
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
TvarF[ncovf]=Tvar[k]; |
TvarF[ncovf]=Tvar[k]; |
TvarFind[ncovf]=k; |
TvarFind[ncovf]=k; |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
}else if( Tvar[k] <=ncovcol+nqv && Typevar[k]==0){ /* Remind that product Vn*Vm are added in k*/ /* Only simple fixed quantitative variable */ |
}else if( Tvar[k] <=ncovcol+nqv && Typevar[k]==0){ /* Remind that product Vn*Vm are added in k*/ /* Only simple fixed quantitative variable */ |
Fixed[k]= 0; |
Fixed[k]= 0; |
Dummy[k]= 1; |
Dummy[k]= 1; |
nqfveff++; |
nqfveff++; |
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
modell[k].subtype= FQ; |
modell[k].subtype= FQ; |
|
nsq++; |
|
TvarsQ[nsq]=Tvar[k]; |
|
TvarsQind[nsq]=k; |
ncovf++; |
ncovf++; |
TvarF[ncovf]=Tvar[k]; |
TvarF[ncovf]=Tvar[k]; |
TvarFind[ncovf]=k; |
TvarFind[ncovf]=k; |
TvarFQ[nqfveff]=Tvar[k]-ncovcol; /* TvarFQ[1]=V2-1=1st in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
TvarFQ[nqfveff]=Tvar[k]-ncovcol; /* TvarFQ[1]=V2-1=1st in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
TvarFQind[nqfveff]=k; /* TvarFQind[1]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
TvarFQind[nqfveff]=k; /* TvarFQind[1]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
}else if( Tvar[k] <=ncovcol+nqv+ntv && Typevar[k]==0){ |
}else if( Tvar[k] <=ncovcol+nqv+ntv && Typevar[k]==0){/* Only simple time varying variables */ |
Fixed[k]= 1; |
Fixed[k]= 1; |
Dummy[k]= 0; |
Dummy[k]= 0; |
ntveff++; /* Only simple time varying dummy variable */ |
ntveff++; /* Only simple time varying dummy variable */ |
modell[k].maintype= VTYPE; |
modell[k].maintype= VTYPE; |
modell[k].subtype= VD; |
modell[k].subtype= VD; |
ncovv++; /* Only simple time varying variables */ |
nsd++; |
TvarV[ncovv]=Tvar[k]; |
TvarsD[nsd]=Tvar[k]; |
TvarVind[ncovv]=k; |
TvarsDind[nsd]=k; |
|
ncovv++; /* Only simple time varying variables */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
TvarVD[ntveff]=Tvar[k]; /* TvarVD[1]=V4 TvarVD[2]=V3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying dummy variable */ |
TvarVD[ntveff]=Tvar[k]; /* TvarVD[1]=V4 TvarVD[2]=V3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying dummy variable */ |
TvarVDind[ntveff]=k; /* TvarVDind[1]=2 TvarVDind[2]=3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying dummy variable */ |
TvarVDind[ntveff]=k; /* TvarVDind[1]=2 TvarVDind[2]=3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying dummy variable */ |
printf("Quasi Tmodelind[%d]=%d,Tvar[Tmodelind[%d]]=V%d, ncovcol=%d, nqv=%d,Tvar[k]- ncovcol-nqv=%d\n",ntveff,k,ntveff,Tvar[k], ncovcol, nqv,Tvar[k]- ncovcol-nqv); |
printf("Quasi Tmodelind[%d]=%d,Tvar[Tmodelind[%d]]=V%d, ncovcol=%d, nqv=%d,Tvar[k]- ncovcol-nqv=%d\n",ntveff,k,ntveff,Tvar[k], ncovcol, nqv,Tvar[k]- ncovcol-nqv); |
printf("Quasi TmodelInvind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv); |
printf("Quasi TmodelInvind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv); |
}else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv && Typevar[k]==0){ /* Only simple time varying quantitative variable V5*/ |
}else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv && Typevar[k]==0){ /* Only simple time varying quantitative variable V5*/ |
Fixed[k]= 1; |
Fixed[k]= 1; |
Dummy[k]= 1; |
Dummy[k]= 1; |
nqtveff++; |
nqtveff++; |
modell[k].maintype= VTYPE; |
modell[k].maintype= VTYPE; |
modell[k].subtype= VQ; |
modell[k].subtype= VQ; |
ncovv++; /* Only simple time varying variables */ |
ncovv++; /* Only simple time varying variables */ |
TvarV[ncovv]=Tvar[k]; |
nsq++; |
TvarVind[ncovv]=k; |
TvarsQ[nsq]=Tvar[k]; |
|
TvarsQind[nsq]=k; |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
TvarVQind[nqtveff]=k; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
TvarVQind[nqtveff]=k; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
TmodelInvQind[nqtveff]=Tvar[k]- ncovcol-nqv-ntv;/* Only simple time varying quantitative variable */ |
TmodelInvQind[nqtveff]=Tvar[k]- ncovcol-nqv-ntv;/* Only simple time varying quantitative variable */ |
/* Tmodeliqind[k]=nqtveff;/\* Only simple time varying quantitative variable *\/ */ |
/* Tmodeliqind[k]=nqtveff;/\* Only simple time varying quantitative variable *\/ */ |
printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv); |
printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv); |
printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv); |
printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv); |
}else if (Typevar[k] == 1) { /* product with age */ |
}else if (Typevar[k] == 1) { /* product with age */ |
ncova++; |
ncova++; |
TvarA[ncova]=Tvar[k]; |
TvarA[ncova]=Tvar[k]; |
TvarAind[ncova]=k; |
TvarAind[ncova]=k; |
if (Tvar[k] <=ncovcol ){ /* Product age with fixed dummy covariatee */ |
if (Tvar[k] <=ncovcol ){ /* Product age with fixed dummy covariatee */ |
Fixed[k]= 2; |
Fixed[k]= 2; |
Dummy[k]= 2; |
Dummy[k]= 2; |
modell[k].maintype= ATYPE; |
modell[k].maintype= ATYPE; |
modell[k].subtype= APFD; |
modell[k].subtype= APFD; |
/* ncoveff++; */ |
/* ncoveff++; */ |
}else if( Tvar[k] <=ncovcol+nqv) { /* Remind that product Vn*Vm are added in k*/ |
}else if( Tvar[k] <=ncovcol+nqv) { /* Remind that product Vn*Vm are added in k*/ |
Fixed[k]= 2; |
Fixed[k]= 2; |
Dummy[k]= 3; |
Dummy[k]= 3; |
modell[k].maintype= ATYPE; |
modell[k].maintype= ATYPE; |
modell[k].subtype= APFQ; /* Product age * fixed quantitative */ |
modell[k].subtype= APFQ; /* Product age * fixed quantitative */ |
/* nqfveff++; /\* Only simple fixed quantitative variable *\/ */ |
/* nqfveff++; /\* Only simple fixed quantitative variable *\/ */ |
}else if( Tvar[k] <=ncovcol+nqv+ntv ){ |
}else if( Tvar[k] <=ncovcol+nqv+ntv ){ |
Fixed[k]= 3; |
Fixed[k]= 3; |
Dummy[k]= 2; |
Dummy[k]= 2; |
modell[k].maintype= ATYPE; |
modell[k].maintype= ATYPE; |
modell[k].subtype= APVD; /* Product age * varying dummy */ |
modell[k].subtype= APVD; /* Product age * varying dummy */ |
/* ntveff++; /\* Only simple time varying dummy variable *\/ */ |
/* ntveff++; /\* Only simple time varying dummy variable *\/ */ |
}else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv){ |
}else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv){ |
Fixed[k]= 3; |
Fixed[k]= 3; |
Dummy[k]= 3; |
Dummy[k]= 3; |
modell[k].maintype= ATYPE; |
modell[k].maintype= ATYPE; |
modell[k].subtype= APVQ; /* Product age * varying quantitative */ |
modell[k].subtype= APVQ; /* Product age * varying quantitative */ |
/* nqtveff++;/\* Only simple time varying quantitative variable *\/ */ |
/* nqtveff++;/\* Only simple time varying quantitative variable *\/ */ |
} |
} |
}else if (Typevar[k] == 2) { /* product without age */ |
}else if (Typevar[k] == 2) { /* product without age */ |
k1=Tposprod[k]; |
k1=Tposprod[k]; |
ncovv++; /* Only time varying variables */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
if(Tvard[k1][1] <=ncovcol){ |
if(Tvard[k1][1] <=ncovcol){ |
if(Tvard[k1][2] <=ncovcol){ |
if(Tvard[k1][2] <=ncovcol){ |
Fixed[k]= 1; |
Fixed[k]= 1; |
Dummy[k]= 0; |
Dummy[k]= 0; |
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
modell[k].subtype= FPDD; /* Product fixed dummy * fixed dummy */ |
modell[k].subtype= FPDD; /* Product fixed dummy * fixed dummy */ |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
ncovf++; /* Fixed variables without age */ |
Fixed[k]= 0; /* or 2 ?*/ |
TvarF[ncovf]=Tvar[k]; |
Dummy[k]= 1; |
TvarFind[ncovf]=k; |
modell[k].maintype= FTYPE; |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
modell[k].subtype= FPDQ; /* Product fixed dummy * fixed quantitative */ |
Fixed[k]= 0; /* or 2 ?*/ |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= FTYPE; |
Dummy[k]= 0; |
modell[k].subtype= FPDQ; /* Product fixed dummy * fixed quantitative */ |
modell[k].maintype= VTYPE; |
ncovf++; /* Varying variables without age */ |
modell[k].subtype= VPDD; /* Product fixed dummy * varying dummy */ |
TvarF[ncovf]=Tvar[k]; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
TvarFind[ncovf]=k; |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 0; |
modell[k].subtype= VPDQ; /* Product fixed dummy * varying quantitative */ |
modell[k].maintype= VTYPE; |
} |
modell[k].subtype= VPDD; /* Product fixed dummy * varying dummy */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
|
Fixed[k]= 1; |
|
Dummy[k]= 1; |
|
modell[k].maintype= VTYPE; |
|
modell[k].subtype= VPDQ; /* Product fixed dummy * varying quantitative */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
} |
}else if(Tvard[k1][1] <=ncovcol+nqv){ |
}else if(Tvard[k1][1] <=ncovcol+nqv){ |
if(Tvard[k1][2] <=ncovcol){ |
if(Tvard[k1][2] <=ncovcol){ |
Fixed[k]= 0; /* or 2 ?*/ |
Fixed[k]= 0; /* or 2 ?*/ |
Dummy[k]= 1; |
Dummy[k]= 1; |
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
modell[k].subtype= FPDQ; /* Product fixed quantitative * fixed dummy */ |
modell[k].subtype= FPDQ; /* Product fixed quantitative * fixed dummy */ |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
ncovf++; /* Fixed variables without age */ |
Fixed[k]= 1; |
TvarF[ncovf]=Tvar[k]; |
Dummy[k]= 1; |
TvarFind[ncovf]=k; |
modell[k].maintype= VTYPE; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
modell[k].subtype= VPDQ; /* Product fixed quantitative * varying dummy */ |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 1; |
modell[k].subtype= VPDQ; /* Product fixed quantitative * varying dummy */ |
modell[k].maintype= VTYPE; |
ncovv++; /* Varying variables without age */ |
modell[k].subtype= VPQQ; /* Product fixed quantitative * varying quantitative */ |
TvarV[ncovv]=Tvar[k]; |
} |
TvarVind[ncovv]=k; |
|
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
|
Fixed[k]= 1; |
|
Dummy[k]= 1; |
|
modell[k].maintype= VTYPE; |
|
modell[k].subtype= VPQQ; /* Product fixed quantitative * varying quantitative */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
} |
}else if(Tvard[k1][1] <=ncovcol+nqv+ntv){ |
}else if(Tvard[k1][1] <=ncovcol+nqv+ntv){ |
if(Tvard[k1][2] <=ncovcol){ |
if(Tvard[k1][2] <=ncovcol){ |
Fixed[k]= 1; |
Fixed[k]= 1; |
Dummy[k]= 1; |
Dummy[k]= 1; |
modell[k].maintype= VTYPE; |
modell[k].maintype= VTYPE; |
modell[k].subtype= VPDD; /* Product time varying dummy * fixed dummy */ |
modell[k].subtype= VPDD; /* Product time varying dummy * fixed dummy */ |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
ncovv++; /* Varying variables without age */ |
Fixed[k]= 1; |
TvarV[ncovv]=Tvar[k]; |
Dummy[k]= 1; |
TvarVind[ncovv]=k; |
modell[k].maintype= VTYPE; |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
modell[k].subtype= VPDQ; /* Product time varying dummy * fixed quantitative */ |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 0; |
modell[k].subtype= VPDQ; /* Product time varying dummy * fixed quantitative */ |
modell[k].maintype= VTYPE; |
ncovv++; /* Varying variables without age */ |
modell[k].subtype= VPDD; /* Product time varying dummy * time varying dummy */ |
TvarV[ncovv]=Tvar[k]; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
TvarVind[ncovv]=k; |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 0; |
modell[k].subtype= VPDQ; /* Product time varying dummy * time varying quantitative */ |
modell[k].maintype= VTYPE; |
} |
modell[k].subtype= VPDD; /* Product time varying dummy * time varying dummy */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
|
Fixed[k]= 1; |
|
Dummy[k]= 1; |
|
modell[k].maintype= VTYPE; |
|
modell[k].subtype= VPDQ; /* Product time varying dummy * time varying quantitative */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
} |
}else if(Tvard[k1][1] <=ncovcol+nqv+ntv+nqtv){ |
}else if(Tvard[k1][1] <=ncovcol+nqv+ntv+nqtv){ |
if(Tvard[k1][2] <=ncovcol){ |
if(Tvard[k1][2] <=ncovcol){ |
Fixed[k]= 1; |
Fixed[k]= 1; |
Dummy[k]= 1; |
Dummy[k]= 1; |
modell[k].maintype= VTYPE; |
modell[k].maintype= VTYPE; |
modell[k].subtype= VPDQ; /* Product time varying quantitative * fixed dummy */ |
modell[k].subtype= VPDQ; /* Product time varying quantitative * fixed dummy */ |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
ncovv++; /* Varying variables without age */ |
Fixed[k]= 1; |
TvarV[ncovv]=Tvar[k]; |
Dummy[k]= 1; |
TvarVind[ncovv]=k; |
modell[k].maintype= VTYPE; |
}else if(Tvard[k1][2] <=ncovcol+nqv){ |
modell[k].subtype= VPQQ; /* Product time varying quantitative * fixed quantitative */ |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 1; |
modell[k].subtype= VPQQ; /* Product time varying quantitative * fixed quantitative */ |
modell[k].maintype= VTYPE; |
ncovv++; /* Varying variables without age */ |
modell[k].subtype= VPDQ; /* Product time varying quantitative * time varying dummy */ |
TvarV[ncovv]=Tvar[k]; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
TvarVind[ncovv]=k; |
Fixed[k]= 1; |
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ |
Dummy[k]= 1; |
Fixed[k]= 1; |
modell[k].maintype= VTYPE; |
Dummy[k]= 1; |
modell[k].subtype= VPQQ; /* Product time varying quantitative * time varying quantitative */ |
modell[k].maintype= VTYPE; |
} |
modell[k].subtype= VPDQ; /* Product time varying quantitative * time varying dummy */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
}else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ |
|
Fixed[k]= 1; |
|
Dummy[k]= 1; |
|
modell[k].maintype= VTYPE; |
|
modell[k].subtype= VPQQ; /* Product time varying quantitative * time varying quantitative */ |
|
ncovv++; /* Varying variables without age */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; |
|
} |
}else{ |
}else{ |
printf("Error unknown type of covariate: Tvard[%d][1]=%d,Tvard[%d][2]=%d\n",k1,Tvard[k1][1],k1,Tvard[k1][2]); |
printf("Error unknown type of covariate: Tvard[%d][1]=%d,Tvard[%d][2]=%d\n",k1,Tvard[k1][1],k1,Tvard[k1][2]); |
fprintf(ficlog,"Error unknown type of covariate: Tvard[%d][1]=%d,Tvard[%d][2]=%d\n",k1,Tvard[k1][1],k1,Tvard[k1][2]); |
fprintf(ficlog,"Error unknown type of covariate: Tvard[%d][1]=%d,Tvard[%d][2]=%d\n",k1,Tvard[k1][1],k1,Tvard[k1][2]); |
} /* end k1 */ |
} /* end k1 */ |
}else{ |
}else{ |
printf("Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
printf("Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
Line 8312 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 8664 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
for(k1=1; k1<= cptcovt;k1++){ |
for(k1=1; k1<= cptcovt;k1++){ |
for(k2=1; k2 <k1;k2++){ |
for(k2=1; k2 <k1;k2++){ |
if((Typevar[k1]==Typevar[k2]) && (Fixed[Tvar[k1]]==Fixed[Tvar[k2]]) && (Dummy[Tvar[k1]]==Dummy[Tvar[k2]] )){ |
if((Typevar[k1]==Typevar[k2]) && (Fixed[Tvar[k1]]==Fixed[Tvar[k2]]) && (Dummy[Tvar[k1]]==Dummy[Tvar[k2]] )){ |
if((Typevar[k1] == 0 || Typevar[k1] == 1)){ /* Simple or age product */ |
if((Typevar[k1] == 0 || Typevar[k1] == 1)){ /* Simple or age product */ |
if(Tvar[k1]==Tvar[k2]){ |
if(Tvar[k1]==Tvar[k2]){ |
printf("Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); |
printf("Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); |
fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); |
fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); |
return(1); |
return(1); |
} |
} |
}else if (Typevar[k1] ==2){ |
}else if (Typevar[k1] ==2){ |
k3=Tposprod[k1]; |
k3=Tposprod[k1]; |
k4=Tposprod[k2]; |
k4=Tposprod[k2]; |
if( ((Tvard[k3][1]== Tvard[k4][1])&&(Tvard[k3][2]== Tvard[k4][2])) || ((Tvard[k3][1]== Tvard[k4][2])&&(Tvard[k3][2]== Tvard[k4][1])) ){ |
if( ((Tvard[k3][1]== Tvard[k4][1])&&(Tvard[k3][2]== Tvard[k4][2])) || ((Tvard[k3][1]== Tvard[k4][2])&&(Tvard[k3][2]== Tvard[k4][1])) ){ |
printf("Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); |
printf("Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); |
fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); |
fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); |
return(1); |
return(1); |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
printf("ncoveff=%d, nqfveff=%d, ntveff=%d, nqtveff=%d, cptcovn=%d\n",ncoveff,nqfveff,ntveff,nqtveff,cptcovn); |
printf("ncoveff=%d, nqfveff=%d, ntveff=%d, nqtveff=%d, cptcovn=%d\n",ncoveff,nqfveff,ntveff,nqtveff,cptcovn); |
fprintf(ficlog,"ncoveff=%d, nqfveff=%d, ntveff=%d, nqtveff=%d, cptcovn=%d\n",ncoveff,nqfveff,ntveff,nqtveff,cptcovn); |
fprintf(ficlog,"ncoveff=%d, nqfveff=%d, ntveff=%d, nqtveff=%d, cptcovn=%d\n",ncoveff,nqfveff,ntveff,nqtveff,cptcovn); |
printf("ncovf=%d, ncovv=%d, ncova=%d\n",ncovf,ncovv,ncova); |
printf("ncovf=%d, ncovv=%d, ncova=%d, nsd=%d, nsq=%d\n",ncovf,ncovv,ncova,nsd,nsq); |
fprintf(ficlog,"ncovf=%d, ncovv=%d, ncova=%d\n",ncovf,ncovv,ncova); |
fprintf(ficlog,"ncovf=%d, ncovv=%d, ncova=%d, nsd=%d, nsq=%d\n",ncovf,ncovv,ncova,nsd, nsq); |
return (0); /* with covar[new additional covariate if product] and Tage if age */ |
return (0); /* with covar[new additional covariate if product] and Tage if age */ |
/*endread:*/ |
/*endread:*/ |
printf("Exiting decodemodel: "); |
printf("Exiting decodemodel: "); |
Line 8648 void syscompilerinfo(int logged)
|
Line 9000 void syscompilerinfo(int logged)
|
|
|
int prevalence_limit(double *p, double **prlim, double ageminpar, double agemaxpar, double ftolpl, int *ncvyearp){ |
int prevalence_limit(double *p, double **prlim, double ageminpar, double agemaxpar, double ftolpl, int *ncvyearp){ |
/*--------------- Prevalence limit (period or stable prevalence) --------------*/ |
/*--------------- Prevalence limit (period or stable prevalence) --------------*/ |
int i, j, k, i1 ; |
int i, j, k, i1, k4=0, nres=0 ; |
/* double ftolpl = 1.e-10; */ |
/* double ftolpl = 1.e-10; */ |
double age, agebase, agelim; |
double age, agebase, agelim; |
double tot; |
double tot; |
Line 8673 int prevalence_limit(double *p, double *
|
Line 9025 int prevalence_limit(double *p, double *
|
agelim=agemaxpar; |
agelim=agemaxpar; |
|
|
/* i1=pow(2,ncoveff); */ |
/* i1=pow(2,ncoveff); */ |
i1=pow(2,cptcoveff); /* Number of dummy covariates */ |
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
if (cptcovn < 1){i1=1;} |
if (cptcovn < 1){i1=1;} |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(k=1; k<=i1;k++){ |
for(k=1; k<=i1;k++){ |
|
if(TKresult[nres]!= k) |
|
continue; |
|
|
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
/* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ |
/* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ |
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
Line 8691 int prevalence_limit(double *p, double *
|
Line 9047 int prevalence_limit(double *p, double *
|
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficrespl,"******\n"); |
fprintf(ficrespl,"******\n"); |
printf("******\n"); |
printf("******\n"); |
fprintf(ficlog,"******\n"); |
fprintf(ficlog,"******\n"); |
Line 8710 int prevalence_limit(double *p, double *
|
Line 9070 int prevalence_limit(double *p, double *
|
|
|
for (age=agebase; age<=agelim; age++){ |
for (age=agebase; age<=agelim; age++){ |
/* for (age=agebase; age<=agebase; age++){ */ |
/* for (age=agebase; age<=agebase; age++){ */ |
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyearp, k); |
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyearp, k, nres); |
fprintf(ficrespl,"%.0f ",age ); |
fprintf(ficrespl,"%.0f ",age ); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespl,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespl,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
Line 8732 int back_prevalence_limit(double *p, dou
|
Line 9092 int back_prevalence_limit(double *p, dou
|
/* Computes the back prevalence limit for any combination of covariate values |
/* Computes the back prevalence limit for any combination of covariate values |
* at any age between ageminpar and agemaxpar |
* at any age between ageminpar and agemaxpar |
*/ |
*/ |
int i, j, k, i1 ; |
int i, j, k, i1, nres=0 ; |
/* double ftolpl = 1.e-10; */ |
/* double ftolpl = 1.e-10; */ |
double age, agebase, agelim; |
double age, agebase, agelim; |
double tot; |
double tot; |
Line 8763 int back_prevalence_limit(double *p, dou
|
Line 9123 int back_prevalence_limit(double *p, dou
|
i1=pow(2,cptcoveff); |
i1=pow(2,cptcoveff); |
if (cptcovn < 1){i1=1;} |
if (cptcovn < 1){i1=1;} |
|
|
for(k=1; k<=i1;k++){ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
|
if(TKresult[nres]!= k) |
|
continue; |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
fprintf(ficresplb,"#******"); |
fprintf(ficresplb,"#******"); |
printf("#******"); |
printf("#******"); |
Line 8773 int back_prevalence_limit(double *p, dou
|
Line 9136 int back_prevalence_limit(double *p, dou
|
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
fprintf(ficresplb,"******\n"); |
fprintf(ficresplb,"******\n"); |
printf("******\n"); |
printf("******\n"); |
fprintf(ficlog,"******\n"); |
fprintf(ficlog,"******\n"); |
Line 8831 int hPijx(double *p, int bage, int fage)
|
Line 9199 int hPijx(double *p, int bage, int fage)
|
int agelim; |
int agelim; |
int hstepm; |
int hstepm; |
int nhstepm; |
int nhstepm; |
int h, i, i1, j, k; |
int h, i, i1, j, k, k4, nres=0; |
|
|
double agedeb; |
double agedeb; |
double ***p3mat; |
double ***p3mat; |
Line 8858 int hPijx(double *p, int bage, int fage)
|
Line 9226 int hPijx(double *p, int bage, int fage)
|
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
/* /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */ |
/* /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */ |
/* k=k+1; */ |
/* k=k+1; */ |
for (k=1; k <= (int) pow(2,cptcoveff); k++){ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ |
|
if(TKresult[nres]!= k) |
|
continue; |
fprintf(ficrespij,"\n#****** "); |
fprintf(ficrespij,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
fprintf(ficrespij,"******\n"); |
fprintf(ficrespij,"******\n"); |
|
|
for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ |
for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ |
Line 8872 int hPijx(double *p, int bage, int fage)
|
Line 9247 int hPijx(double *p, int bage, int fage)
|
|
|
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
hpxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); |
hpxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k, nres); |
fprintf(ficrespij,"# Cov Agex agex+h hpijx with i,j="); |
fprintf(ficrespij,"# Cov Agex agex+h hpijx with i,j="); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
for(j=1; j<=nlstate+ndeath;j++) |
for(j=1; j<=nlstate+ndeath;j++) |
Line 8998 int main(int argc, char *argv[])
|
Line 9373 int main(int argc, char *argv[])
|
int itimes; |
int itimes; |
int NDIM=2; |
int NDIM=2; |
int vpopbased=0; |
int vpopbased=0; |
|
int nres=0; |
|
|
char ca[32], cb[32]; |
char ca[32], cb[32]; |
/* FILE *fichtm; *//* Html File */ |
/* FILE *fichtm; *//* Html File */ |
Line 9016 int main(int argc, char *argv[])
|
Line 9392 int main(int argc, char *argv[])
|
char line[MAXLINE]; |
char line[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
|
|
char model[MAXLINE], modeltemp[MAXLINE]; |
char modeltemp[MAXLINE]; |
char resultline[MAXLINE]; |
char resultline[MAXLINE]; |
|
|
char pathr[MAXLINE], pathimach[MAXLINE]; |
char pathr[MAXLINE], pathimach[MAXLINE]; |
Line 9330 int main(int argc, char *argv[])
|
Line 9706 int main(int argc, char *argv[])
|
|
|
covar=matrix(0,NCOVMAX,1,n); /**< used in readdata */ |
covar=matrix(0,NCOVMAX,1,n); /**< used in readdata */ |
coqvar=matrix(1,nqv,1,n); /**< Fixed quantitative covariate */ |
coqvar=matrix(1,nqv,1,n); /**< Fixed quantitative covariate */ |
cotvar=ma3x(1,maxwav,1,ntv,1,n); /**< Time varying covariate */ |
cotvar=ma3x(1,maxwav,1,ntv+nqtv,1,n); /**< Time varying covariate (dummy and quantitative)*/ |
cotqvar=ma3x(1,maxwav,1,nqtv,1,n); /**< Time varying quantitative covariate */ |
cotqvar=ma3x(1,maxwav,1,nqtv,1,n); /**< Time varying quantitative covariate */ |
cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ |
cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ |
/* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 |
/* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 |
Line 9383 int main(int argc, char *argv[])
|
Line 9759 int main(int argc, char *argv[])
|
|
|
param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
for(i=1; i <=nlstate; i++){ |
for(i=1; i <=nlstate; i++){ |
j=0; |
j=0; |
for(jj=1; jj <=nlstate+ndeath; jj++){ |
for(jj=1; jj <=nlstate+ndeath; jj++){ |
if(jj==i) continue; |
if(jj==i) continue; |
j++; |
j++; |
fscanf(ficpar,"%1d%1d",&i1,&j1); |
fscanf(ficpar,"%1d%1d",&i1,&j1); |
if ((i1 != i) || (j1 != jj)){ |
if ((i1 != i) || (j1 != jj)){ |
printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n \ |
printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n \ |
It might be a problem of design; if ncovcol and the model are correct\n \ |
It might be a problem of design; if ncovcol and the model are correct\n \ |
run imach with mle=-1 to get a correct template of the parameter file.\n",numlinepar, i,j, i1, j1); |
run imach with mle=-1 to get a correct template of the parameter file.\n",numlinepar, i,j, i1, j1); |
exit(1); |
exit(1); |
} |
} |
fprintf(ficparo,"%1d%1d",i1,j1); |
fprintf(ficparo,"%1d%1d",i1,j1); |
if(mle==1) |
if(mle==1) |
printf("%1d%1d",i,jj); |
printf("%1d%1d",i,jj); |
fprintf(ficlog,"%1d%1d",i,jj); |
fprintf(ficlog,"%1d%1d",i,jj); |
for(k=1; k<=ncovmodel;k++){ |
for(k=1; k<=ncovmodel;k++){ |
fscanf(ficpar," %lf",¶m[i][j][k]); |
fscanf(ficpar," %lf",¶m[i][j][k]); |
if(mle==1){ |
if(mle==1){ |
printf(" %lf",param[i][j][k]); |
printf(" %lf",param[i][j][k]); |
fprintf(ficlog," %lf",param[i][j][k]); |
fprintf(ficlog," %lf",param[i][j][k]); |
} |
} |
else |
else |
fprintf(ficlog," %lf",param[i][j][k]); |
fprintf(ficlog," %lf",param[i][j][k]); |
fprintf(ficparo," %lf",param[i][j][k]); |
fprintf(ficparo," %lf",param[i][j][k]); |
} |
} |
fscanf(ficpar,"\n"); |
fscanf(ficpar,"\n"); |
numlinepar++; |
numlinepar++; |
if(mle==1) |
if(mle==1) |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficparo,"\n"); |
fprintf(ficparo,"\n"); |
} |
} |
} |
} |
fflush(ficlog); |
fflush(ficlog); |
|
|
/* Reads scales values */ |
/* Reads scales values */ |
p=param[1][1]; |
p=param[1][1]; |
|
|
Line 9434 run imach with mle=-1 to get a correct t
|
Line 9810 run imach with mle=-1 to get a correct t
|
|
|
for(i=1; i <=nlstate; i++){ |
for(i=1; i <=nlstate; i++){ |
for(j=1; j <=nlstate+ndeath-1; j++){ |
for(j=1; j <=nlstate+ndeath-1; j++){ |
fscanf(ficpar,"%1d%1d",&i1,&j1); |
fscanf(ficpar,"%1d%1d",&i1,&j1); |
if ( (i1-i) * (j1-j) != 0){ |
if ( (i1-i) * (j1-j) != 0){ |
printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n",numlinepar, i,j, i1, j1); |
printf("Error in line parameters number %d, %1d%1d instead of %1d%1d \n",numlinepar, i,j, i1, j1); |
exit(1); |
exit(1); |
} |
} |
printf("%1d%1d",i,j); |
printf("%1d%1d",i,j); |
fprintf(ficparo,"%1d%1d",i1,j1); |
fprintf(ficparo,"%1d%1d",i1,j1); |
fprintf(ficlog,"%1d%1d",i1,j1); |
fprintf(ficlog,"%1d%1d",i1,j1); |
for(k=1; k<=ncovmodel;k++){ |
for(k=1; k<=ncovmodel;k++){ |
fscanf(ficpar,"%le",&delti3[i][j][k]); |
fscanf(ficpar,"%le",&delti3[i][j][k]); |
printf(" %le",delti3[i][j][k]); |
printf(" %le",delti3[i][j][k]); |
fprintf(ficparo," %le",delti3[i][j][k]); |
fprintf(ficparo," %le",delti3[i][j][k]); |
fprintf(ficlog," %le",delti3[i][j][k]); |
fprintf(ficlog," %le",delti3[i][j][k]); |
} |
} |
fscanf(ficpar,"\n"); |
fscanf(ficpar,"\n"); |
numlinepar++; |
numlinepar++; |
printf("\n"); |
printf("\n"); |
fprintf(ficparo,"\n"); |
fprintf(ficparo,"\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
} |
} |
} |
} |
fflush(ficlog); |
fflush(ficlog); |
|
|
/* Reads covariance matrix */ |
/* Reads covariance matrix */ |
delti=delti3[1][1]; |
delti=delti3[1][1]; |
|
|
Line 9546 Please run with mle=-1 to get a correct
|
Line 9922 Please run with mle=-1 to get a correct
|
agedc=vector(1,n); |
agedc=vector(1,n); |
cod=ivector(1,n); |
cod=ivector(1,n); |
for(i=1;i<=n;i++){ |
for(i=1;i<=n;i++){ |
num[i]=0; |
num[i]=0; |
moisnais[i]=0; |
moisnais[i]=0; |
annais[i]=0; |
annais[i]=0; |
moisdc[i]=0; |
moisdc[i]=0; |
andc[i]=0; |
andc[i]=0; |
agedc[i]=0; |
agedc[i]=0; |
cod[i]=0; |
cod[i]=0; |
weight[i]=1.0; /* Equal weights, 1 by default */ |
weight[i]=1.0; /* Equal weights, 1 by default */ |
} |
} |
mint=matrix(1,maxwav,1,n); |
mint=matrix(1,maxwav,1,n); |
anint=matrix(1,maxwav,1,n); |
anint=matrix(1,maxwav,1,n); |
s=imatrix(1,maxwav+1,1,n); /* s[i][j] health state for wave i and individual j */ |
s=imatrix(1,maxwav+1,1,n); /* s[i][j] health state for wave i and individual j */ |
Line 9567 Please run with mle=-1 to get a correct
|
Line 9943 Please run with mle=-1 to get a correct
|
goto end; |
goto end; |
|
|
/* Calculation of the number of parameters from char model */ |
/* Calculation of the number of parameters from char model */ |
/* modelsav=V2+V1+V4+age*V3 strb=age*V3 stra=V2+V1+V4 |
/* modelsav=V2+V1+V4+age*V3 strb=age*V3 stra=V2+V1+V4 |
k=4 (age*V3) Tvar[k=4]= 3 (from V3) Tag[cptcovage=1]=4 |
k=4 (age*V3) Tvar[k=4]= 3 (from V3) Tag[cptcovage=1]=4 |
k=3 V4 Tvar[k=3]= 4 (from V4) |
k=3 V4 Tvar[k=3]= 4 (from V4) |
k=2 V1 Tvar[k=2]= 1 (from V1) |
k=2 V1 Tvar[k=2]= 1 (from V1) |
k=1 Tvar[1]=2 (from V2) |
k=1 Tvar[1]=2 (from V2) |
*/ |
*/ |
|
|
Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ |
Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ |
|
TvarsDind=ivector(1,NCOVMAX); /* */ |
|
TvarsD=ivector(1,NCOVMAX); /* */ |
|
TvarsQind=ivector(1,NCOVMAX); /* */ |
|
TvarsQ=ivector(1,NCOVMAX); /* */ |
TvarF=ivector(1,NCOVMAX); /* */ |
TvarF=ivector(1,NCOVMAX); /* */ |
TvarFind=ivector(1,NCOVMAX); /* */ |
TvarFind=ivector(1,NCOVMAX); /* */ |
TvarV=ivector(1,NCOVMAX); /* */ |
TvarV=ivector(1,NCOVMAX); /* */ |
Line 9591 Please run with mle=-1 to get a correct
|
Line 9971 Please run with mle=-1 to get a correct
|
TvarVQind=ivector(1,NCOVMAX); /* */ |
TvarVQind=ivector(1,NCOVMAX); /* */ |
|
|
Tvalsel=vector(1,NCOVMAX); /* */ |
Tvalsel=vector(1,NCOVMAX); /* */ |
|
Tvarsel=ivector(1,NCOVMAX); /* */ |
Typevar=ivector(-1,NCOVMAX); /* -1 to 2 */ |
Typevar=ivector(-1,NCOVMAX); /* -1 to 2 */ |
Fixed=ivector(-1,NCOVMAX); /* -1 to 3 */ |
Fixed=ivector(-1,NCOVMAX); /* -1 to 3 */ |
Dummy=ivector(-1,NCOVMAX); /* -1 to 3 */ |
Dummy=ivector(-1,NCOVMAX); /* -1 to 3 */ |
Line 10396 Please run with mle=-1 to get a correct
|
Line 10777 Please run with mle=-1 to get a correct
|
/* day and month of proj2 are not used but only year anproj2.*/ |
/* day and month of proj2 are not used but only year anproj2.*/ |
|
|
/* Results */ |
/* Results */ |
|
nresult=0; |
while(fgets(line, MAXLINE, ficpar)) { |
while(fgets(line, MAXLINE, ficpar)) { |
/* If line starts with a # it is a comment */ |
/* If line starts with a # it is a comment */ |
if (line[0] == '#') { |
if (line[0] == '#') { |
Line 10413 Please run with mle=-1 to get a correct
|
Line 10795 Please run with mle=-1 to get a correct
|
else if (num_filled != 1){ |
else if (num_filled != 1){ |
printf("ERROR %d: result line should be at minimum 'result=' %s\n",num_filled, line); |
printf("ERROR %d: result line should be at minimum 'result=' %s\n",num_filled, line); |
} |
} |
printf("Result %d: result line should be at minimum 'line=' %s, result=%s\n",num_filled, line, resultline); |
nresult++; /* Sum of resultlines */ |
decoderesult(resultline); |
printf("Result %d: result=%s\n",nresult, resultline); |
|
if(nresult > MAXRESULTLINES){ |
|
printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); |
|
fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult); |
|
goto end; |
|
} |
|
decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ |
while(fgets(line, MAXLINE, ficpar)) { |
while(fgets(line, MAXLINE, ficpar)) { |
/* If line starts with a # it is a comment */ |
/* If line starts with a # it is a comment */ |
if (line[0] == '#') { |
if (line[0] == '#') { |
Line 10501 Please run with mle=-1 to get a correct
|
Line 10889 Please run with mle=-1 to get a correct
|
mobaverages[i][j][k]=0.; |
mobaverages[i][j][k]=0.; |
mobaverage=mobaverages; |
mobaverage=mobaverages; |
if (mobilav!=0) { |
if (mobilav!=0) { |
|
printf("Movingaveraging observed prevalence\n"); |
if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){ |
if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilav)!=0){ |
fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav); |
fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav); |
printf(" Error in movingaverage mobilav=%d\n",mobilav); |
printf(" Error in movingaverage mobilav=%d\n",mobilav); |
Line 10509 Please run with mle=-1 to get a correct
|
Line 10898 Please run with mle=-1 to get a correct
|
/* /\* Prevalence for each covariates in probs[age][status][cov] *\/ */ |
/* /\* Prevalence for each covariates in probs[age][status][cov] *\/ */ |
/* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
/* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
else if (mobilavproj !=0) { |
else if (mobilavproj !=0) { |
|
printf("Movingaveraging projected observed prevalence\n"); |
if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){ |
if (movingaverage(probs, ageminpar, agemaxpar, mobaverage, mobilavproj)!=0){ |
fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj); |
fprintf(ficlog," Error in movingaverage mobilavproj=%d\n",mobilavproj); |
printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj); |
printf(" Error in movingaverage mobilavproj=%d\n",mobilavproj); |
Line 10564 Please run with mle=-1 to get a correct
|
Line 10954 Please run with mle=-1 to get a correct
|
printf("Computing Health Expectancies: result on file '%s' ...", filerese);fflush(stdout); |
printf("Computing Health Expectancies: result on file '%s' ...", filerese);fflush(stdout); |
fprintf(ficlog,"Computing Health Expectancies: result on file '%s' ...", filerese);fflush(ficlog); |
fprintf(ficlog,"Computing Health Expectancies: result on file '%s' ...", filerese);fflush(ficlog); |
|
|
for (k=1; k <= (int) pow(2,cptcoveff); k++){ /* For any combination of dummy covariates, fixed and varying */ |
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
|
if (cptcovn < 1){i1=1;} |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
|
if(TKresult[nres]!= k) |
|
continue; |
fprintf(ficreseij,"\n#****** "); |
fprintf(ficreseij,"\n#****** "); |
|
printf("\n#****** "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficreseij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
} |
} |
fprintf(ficreseij,"******\n"); |
fprintf(ficreseij,"******\n"); |
|
printf("******\n"); |
|
|
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
evsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, strstart); |
evsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, strstart, nres); |
|
|
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
} |
} |
Line 10624 Please run with mle=-1 to get a correct
|
Line 11027 Please run with mle=-1 to get a correct
|
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
|
|
for (k=1; k <= (int) pow(2,cptcoveff); k++){ |
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
printf("\n#****** "); |
if (cptcovn < 1){i1=1;} |
fprintf(ficrest,"\n#****** "); |
|
fprintf(ficlog,"\n#****** "); |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
|
if(TKresult[nres]!= k) |
|
continue; |
|
printf("\n#****** Selected:"); |
|
fprintf(ficrest,"\n#****** Selected:"); |
|
fprintf(ficlog,"\n#****** Selected:"); |
for(j=1;j<=cptcoveff;j++){ |
for(j=1;j<=cptcoveff;j++){ |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
fprintf(ficrest,"******\n"); |
fprintf(ficrest,"******\n"); |
fprintf(ficlog,"******\n"); |
fprintf(ficlog,"******\n"); |
printf("******\n"); |
printf("******\n"); |
Line 10643 Please run with mle=-1 to get a correct
|
Line 11057 Please run with mle=-1 to get a correct
|
fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(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(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficresstdeij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficrescveij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
fprintf(ficresstdeij,"******\n"); |
fprintf(ficresstdeij,"******\n"); |
fprintf(ficrescveij,"******\n"); |
fprintf(ficrescveij,"******\n"); |
|
|
fprintf(ficresvij,"\n#****** "); |
fprintf(ficresvij,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
fprintf(ficresvij,"******\n"); |
fprintf(ficresvij,"******\n"); |
|
|
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
printf(" cvevsij combination#=%d, ",k); |
printf(" cvevsij "); |
fprintf(ficlog, " cvevsij combination#=%d, ",k); |
fprintf(ficlog, " cvevsij "); |
cvevsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov, strstart); |
cvevsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, delti, matcov, strstart, nres); |
printf(" end cvevsij \n "); |
printf(" end cvevsij \n "); |
fprintf(ficlog, " end cvevsij \n "); |
fprintf(ficlog, " end cvevsij \n "); |
|
|
Line 10672 Please run with mle=-1 to get a correct
|
Line 11093 Please run with mle=-1 to get a correct
|
cptcod= 0; /* To be deleted */ |
cptcod= 0; /* To be deleted */ |
printf("varevsij vpopbased=%d \n",vpopbased); |
printf("varevsij vpopbased=%d \n",vpopbased); |
fprintf(ficlog, "varevsij vpopbased=%d \n",vpopbased); |
fprintf(ficlog, "varevsij vpopbased=%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 */ |
varevsij(optionfilefiname, vareij, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, &ncvyear, k, estepm, cptcov,cptcod,vpopbased,mobilav, strstart, nres); /* 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 "); |
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) |
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); |
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); |
Line 10686 Please run with mle=-1 to get a correct
|
Line 11107 Please run with mle=-1 to get a correct
|
printf("Computing age specific period (stable) prevalences in each health state \n"); |
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"); |
fprintf(ficlog,"Computing age specific period (stable) prevalences in each health state \n"); |
for(age=bage; age <=fage ;age++){ |
for(age=bage; age <=fage ;age++){ |
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, &ncvyear, k); /*ZZ Is it the correct prevalim */ |
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, &ncvyear, k, nres); /*ZZ Is it the correct prevalim */ |
if (vpopbased==1) { |
if (vpopbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
Line 10723 Please run with mle=-1 to get a correct
|
Line 11144 Please run with mle=-1 to get a correct
|
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
free_ma3x(vareij,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); |
free_vector(epj,1,nlstate+1); |
printf("done \n");fflush(stdout); |
printf("done selection\n");fflush(stdout); |
fprintf(ficlog,"done\n");fflush(ficlog); |
fprintf(ficlog,"done selection\n");fflush(ficlog); |
|
|
/*}*/ |
/*}*/ |
} /* End k */ |
} /* End k selection */ |
|
|
printf("done State-specific expectancies\n");fflush(stdout); |
printf("done State-specific expectancies\n");fflush(stdout); |
fprintf(ficlog,"done State-specific expectancies\n");fflush(ficlog); |
fprintf(ficlog,"done State-specific expectancies\n");fflush(ficlog); |
Line 10746 Please run with mle=-1 to get a correct
|
Line 11167 Please run with mle=-1 to get a correct
|
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
|
|
for (k=1; k <= (int) pow(2,cptcoveff); k++){ |
i1=pow(2,cptcoveff); |
|
if (cptcovn < 1){i1=1;} |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k=1; k<=i1;k++){ |
|
if(TKresult[nres]!= k) |
|
continue; |
fprintf(ficresvpl,"\n#****** "); |
fprintf(ficresvpl,"\n#****** "); |
printf("\n#****** "); |
printf("\n#****** "); |
fprintf(ficlog,"\n#****** "); |
fprintf(ficlog,"\n#****** "); |
Line 10755 Please run with mle=-1 to get a correct
|
Line 11182 Please run with mle=-1 to get a correct
|
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficresvpl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
fprintf(ficresvpl,"******\n"); |
fprintf(ficresvpl,"******\n"); |
printf("******\n"); |
printf("******\n"); |
fprintf(ficlog,"******\n"); |
fprintf(ficlog,"******\n"); |
|
|
varpl=matrix(1,nlstate,(int) bage, (int) fage); |
varpl=matrix(1,nlstate,(int) bage, (int) fage); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
varprevlim(fileres, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, &ncvyear, k, strstart); |
varprevlim(fileres, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, &ncvyear, k, strstart, nres); |
free_matrix(varpl,1,nlstate,(int) bage, (int)fage); |
free_matrix(varpl,1,nlstate,(int) bage, (int)fage); |
/*}*/ |
/*}*/ |
} |
} |
Line 10796 Please run with mle=-1 to get a correct
|
Line 11228 Please run with mle=-1 to get a correct
|
free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); |
free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); |
free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); |
free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); |
free_ma3x(cotqvar,1,maxwav,1,nqtv,1,n); |
free_ma3x(cotqvar,1,maxwav,1,nqtv,1,n); |
free_ma3x(cotvar,1,maxwav,1,ntv,1,n); |
free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,1,n); |
free_matrix(coqvar,1,maxwav,1,n); |
free_matrix(coqvar,1,maxwav,1,n); |
free_matrix(covar,0,NCOVMAX,1,n); |
free_matrix(covar,0,NCOVMAX,1,n); |
free_matrix(matcov,1,npar,1,npar); |
free_matrix(matcov,1,npar,1,npar); |
Line 10812 Please run with mle=-1 to get a correct
|
Line 11244 Please run with mle=-1 to get a correct
|
free_ivector(Fixed,-1,NCOVMAX); |
free_ivector(Fixed,-1,NCOVMAX); |
free_ivector(Typevar,-1,NCOVMAX); |
free_ivector(Typevar,-1,NCOVMAX); |
free_ivector(Tvar,1,NCOVMAX); |
free_ivector(Tvar,1,NCOVMAX); |
|
free_ivector(TvarsQ,1,NCOVMAX); |
|
free_ivector(TvarsQind,1,NCOVMAX); |
|
free_ivector(TvarsD,1,NCOVMAX); |
|
free_ivector(TvarsDind,1,NCOVMAX); |
free_ivector(TvarFD,1,NCOVMAX); |
free_ivector(TvarFD,1,NCOVMAX); |
free_ivector(TvarFDind,1,NCOVMAX); |
free_ivector(TvarFDind,1,NCOVMAX); |
free_ivector(TvarF,1,NCOVMAX); |
free_ivector(TvarF,1,NCOVMAX); |