version 1.231, 2016/08/22 07:17:15
|
version 1.278, 2017/07/19 14:09:02
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.278 2017/07/19 14:09:02 brouard |
|
Summary: Bug for mobil_average=0 and prevforecast fixed(?) |
|
|
|
Revision 1.277 2017/07/17 08:53:49 brouard |
|
Summary: BOM files can be read now |
|
|
|
Revision 1.276 2017/06/30 15:48:31 brouard |
|
Summary: Graphs improvements |
|
|
|
Revision 1.275 2017/06/30 13:39:33 brouard |
|
Summary: Saito's color |
|
|
|
Revision 1.274 2017/06/29 09:47:08 brouard |
|
Summary: Version 0.99r14 |
|
|
|
Revision 1.273 2017/06/27 11:06:02 brouard |
|
Summary: More documentation on projections |
|
|
|
Revision 1.272 2017/06/27 10:22:40 brouard |
|
Summary: Color of backprojection changed from 6 to 5(yellow) |
|
|
|
Revision 1.271 2017/06/27 10:17:50 brouard |
|
Summary: Some bug with rint |
|
|
|
Revision 1.270 2017/05/24 05:45:29 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.269 2017/05/23 08:39:25 brouard |
|
Summary: Code into subroutine, cleanings |
|
|
|
Revision 1.268 2017/05/18 20:09:32 brouard |
|
Summary: backprojection and confidence intervals of backprevalence |
|
|
|
Revision 1.267 2017/05/13 10:25:05 brouard |
|
Summary: temporary save for backprojection |
|
|
|
Revision 1.266 2017/05/13 07:26:12 brouard |
|
Summary: Version 0.99r13 (improvements and bugs fixed) |
|
|
|
Revision 1.265 2017/04/26 16:22:11 brouard |
|
Summary: imach 0.99r13 Some bugs fixed |
|
|
|
Revision 1.264 2017/04/26 06:01:29 brouard |
|
Summary: Labels in graphs |
|
|
|
Revision 1.263 2017/04/24 15:23:15 brouard |
|
Summary: to save |
|
|
|
Revision 1.262 2017/04/18 16:48:12 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.261 2017/04/05 10:14:09 brouard |
|
Summary: Bug in E_ as well as in T_ fixed nres-1 vs k1-1 |
|
|
|
Revision 1.260 2017/04/04 17:46:59 brouard |
|
Summary: Gnuplot indexations fixed (humm) |
|
|
|
Revision 1.259 2017/04/04 13:01:16 brouard |
|
Summary: Some errors to warnings only if date of death is unknown but status is death we could set to pi3 |
|
|
|
Revision 1.258 2017/04/03 10:17:47 brouard |
|
Summary: Version 0.99r12 |
|
|
|
Some cleanings, conformed with updated documentation. |
|
|
|
Revision 1.257 2017/03/29 16:53:30 brouard |
|
Summary: Temp |
|
|
|
Revision 1.256 2017/03/27 05:50:23 brouard |
|
Summary: Temporary |
|
|
|
Revision 1.255 2017/03/08 16:02:28 brouard |
|
Summary: IMaCh version 0.99r10 bugs in gnuplot fixed |
|
|
|
Revision 1.254 2017/03/08 07:13:00 brouard |
|
Summary: Fixing data parameter line |
|
|
|
Revision 1.253 2016/12/15 11:59:41 brouard |
|
Summary: 0.99 in progress |
|
|
|
Revision 1.252 2016/09/15 21:15:37 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.251 2016/09/15 15:01:13 brouard |
|
Summary: not working |
|
|
|
Revision 1.250 2016/09/08 16:07:27 brouard |
|
Summary: continue |
|
|
|
Revision 1.249 2016/09/07 17:14:18 brouard |
|
Summary: Starting values from frequencies |
|
|
|
Revision 1.248 2016/09/07 14:10:18 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.247 2016/09/02 11:11:21 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.246 2016/09/02 08:49:22 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.245 2016/09/02 07:25:01 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.244 2016/09/02 07:17:34 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.243 2016/09/02 06:45:35 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.242 2016/08/30 15:01:20 brouard |
|
Summary: Fixing a lots |
|
|
|
Revision 1.241 2016/08/29 17:17:25 brouard |
|
Summary: gnuplot problem in Back projection to fix |
|
|
|
Revision 1.240 2016/08/29 07:53:18 brouard |
|
Summary: Better |
|
|
|
Revision 1.239 2016/08/26 15:51:03 brouard |
|
Summary: Improvement in Powell output in order to copy and paste |
|
|
|
Author: |
|
|
|
Revision 1.238 2016/08/26 14:23:35 brouard |
|
Summary: Starting tests of 0.99 |
|
|
|
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 |
|
Summary: not working |
|
|
Revision 1.231 2016/08/22 07:17:15 brouard |
Revision 1.231 2016/08/22 07:17:15 brouard |
Summary: not working |
Summary: not working |
|
|
Line 66
|
Line 211
|
Author: Nicolas Brouard |
Author: Nicolas Brouard |
|
|
Revision 1.210 2015/11/18 17:41:20 brouard |
Revision 1.210 2015/11/18 17:41:20 brouard |
Summary: Start working on projected prevalences |
Summary: Start working on projected prevalences Revision 1.209 2015/11/17 22:12:03 brouard |
|
|
Revision 1.209 2015/11/17 22:12:03 brouard |
|
Summary: Adding ftolpl parameter |
Summary: Adding ftolpl parameter |
Author: N Brouard |
Author: N Brouard |
|
|
Line 711 Back prevalence and projections:
|
Line 854 Back prevalence and projections:
|
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; |
|
|
- hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); |
- hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k, nres); |
Computes the transition matrix starting at age 'age' over |
Computes the transition matrix starting at age 'age' over |
'nhstepm*hstepm*stepm' months (i.e. until |
'nhstepm*hstepm*stepm' months (i.e. until |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
Line 856 typedef struct {
|
Line 999 typedef struct {
|
/* #include <libintl.h> */ |
/* #include <libintl.h> */ |
/* #define _(String) gettext (String) */ |
/* #define _(String) gettext (String) */ |
|
|
#define MAXLINE 1024 /* Was 256. Overflow with 312 with 2 states and 4 covariates. Should be ok */ |
#define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */ |
|
|
#define GNUPLOTPROGRAM "gnuplot" |
#define GNUPLOTPROGRAM "gnuplot" |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
Line 879 typedef struct {
|
Line 1022 typedef struct {
|
#define YEARM 12. /**< Number of months per year */ |
#define YEARM 12. /**< Number of months per year */ |
/* #define AGESUP 130 */ |
/* #define AGESUP 130 */ |
#define AGESUP 150 |
#define AGESUP 150 |
|
#define AGEINF 0 |
#define AGEMARGE 25 /* Marge for agemin and agemax for(iage=agemin-AGEMARGE; iage <= agemax+3+AGEMARGE; iage++) */ |
#define AGEMARGE 25 /* Marge for agemin and agemax for(iage=agemin-AGEMARGE; iage <= agemax+3+AGEMARGE; iage++) */ |
#define AGEBASE 40 |
#define AGEBASE 40 |
#define AGEOVERFLOW 1.e20 |
#define AGEOVERFLOW 1.e20 |
Line 911 int cptcovsnq=0; /**< cptcovsnq number o
|
Line 1055 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 ncoveff=0; /* Total number of effective covariates 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 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 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 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 */ |
int nqtveff=0; /**< ntqveff number of effective time varying quantitative variables */ |
int nqtveff=0; /**< ntqveff number of effective time varying quantitative variables */ |
Line 965 FILE *ficrescveij;
|
Line 1114 FILE *ficrescveij;
|
char filerescve[FILENAMELENGTH]; |
char filerescve[FILENAMELENGTH]; |
FILE *ficresvij; |
FILE *ficresvij; |
char fileresv[FILENAMELENGTH]; |
char fileresv[FILENAMELENGTH]; |
FILE *ficresvpl; |
|
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 1005 double dval;
|
Line 1154 double dval;
|
#define FTOL 1.0e-10 |
#define FTOL 1.0e-10 |
|
|
#define NRANSI |
#define NRANSI |
#define ITMAX 200 |
#define ITMAX 200 |
|
#define ITPOWMAX 20 /* This is now multiplied by the number of parameters */ |
|
|
#define TOL 2.0e-4 |
#define TOL 2.0e-4 |
|
|
Line 1062 double *agedc;
|
Line 1212 double *agedc;
|
double **covar; /**< covar[j,i], value of jth covariate for individual i, |
double **covar; /**< covar[j,i], value of jth covariate for individual i, |
* covar=matrix(0,NCOVMAX,1,n); |
* covar=matrix(0,NCOVMAX,1,n); |
* cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*age; */ |
* cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*age; */ |
double **coqvar; /* Fixed quantitative covariate iqv */ |
double **coqvar; /* Fixed quantitative covariate nqv */ |
double ***cotvar; /* Time varying covariate itv */ |
double ***cotvar; /* Time varying covariate ntv */ |
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 parameterline=0; /* # of the parameter (type) line */ |
|
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 *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 *TvarVind; /**< TvarVind[1]=1, TvarVind[2]=2 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
int *TvarA; /**< TvarA[1]=Tvar[5]=5, TvarA[2]=Tvar[8]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
int *TvarAind; /**< TvarindA[1]=5, TvarAind[2]=8 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFD; /**< TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFD; /**< TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFDind; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFDind; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFQ; /* TvarFQ[1]=V2 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
int *TvarFQ; /* TvarFQ[1]=V2 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
Line 1081 double *Tvalsel; /**< Selected modality
|
Line 1272 double *Tvalsel; /**< Selected modality
|
int *Typevar; /**< 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ |
int *Typevar; /**< 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ |
int *Fixed; /** Fixed[k] 0=fixed, 1 varying, 2 fixed with age product, 3 varying with age product */ |
int *Fixed; /** Fixed[k] 0=fixed, 1 varying, 2 fixed with age product, 3 varying with age product */ |
int *Dummy; /** Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product */ |
int *Dummy; /** Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product */ |
|
int *DummyV; /** Dummy[v] 0=dummy (0 1), 1 quantitative */ |
|
int *FixedV; /** FixedV[v] 0 fixed, 1 varying */ |
int *Tage; |
int *Tage; |
int anyvaryingduminmodel=0; /**< Any varying dummy in Model=1 yes, 0 no, to avoid a loop on waves in freq */ |
int anyvaryingduminmodel=0; /**< Any varying dummy in Model=1 yes, 0 no, to avoid a loop on waves in freq */ |
int *Tmodelind; /** Tmodelind[Tvaraff[3]]=9 for V1 position,Tvaraff[1]@9={4, 3, 1, 0, 0, 0, 0, 0, 0}, model=V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1*/ |
int *Tmodelind; /** Tmodelind[Tvaraff[3]]=9 for V1 position,Tvaraff[1]@9={4, 3, 1, 0, 0, 0, 0, 0, 0}, model=V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1*/ |
Line 1090 int *Ndum; /** Freq of modality (tricode
|
Line 1283 int *Ndum; /** Freq of modality (tricode
|
/* int **codtab;*/ /**< codtab=imatrix(1,100,1,10); */ |
/* int **codtab;*/ /**< codtab=imatrix(1,100,1,10); */ |
int **Tvard; |
int **Tvard; |
int *Tprod;/**< Gives the k position of the k1 product */ |
int *Tprod;/**< Gives the k position of the k1 product */ |
|
/* Tprod[k1=1]=3(=V1*V4) for V2+V1+V1*V4+age*V3 */ |
int *Tposprod; /**< Gives the k1 product from the k position */ |
int *Tposprod; /**< Gives the k1 product from the k position */ |
/* Tprod[k1=1]=3(=V1*V4) for V2+V1+V1*V4+age*V3 |
/* if V2+V1+V1*V4+age*V3+V3*V2 TProd[k1=2]=5 (V3*V2) */ |
if V2+V1+V1*V4+age*V3+V3*V2 TProd[k1=2]=5 (V3*V2) |
/* Tposprod[k]=k1 , Tposprod[3]=1, Tposprod[5(V3*V2)]=2 (2nd product without age) */ |
Tposprod[k]=k1 , Tposprod[3]=1, Tposprod[5]=2 |
|
*/ |
|
int cptcovprod, *Tvaraff, *invalidvarcomb; |
int cptcovprod, *Tvaraff, *invalidvarcomb; |
double *lsurv, *lpop, *tpop; |
double *lsurv, *lpop, *tpop; |
|
|
Line 1320 int nbocc(char *s, char occ)
|
Line 1512 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 1993 void powell(double p[], double **xi, int
|
Line 2185 void powell(double p[], double **xi, int
|
void linmin(double p[], double xi[], int n, double *fret, |
void linmin(double p[], double xi[], int n, double *fret, |
double (*func)(double [])); |
double (*func)(double [])); |
#else |
#else |
void linmin(double p[], double xi[], int n, double *fret, |
void linmin(double p[], double xi[], int n, double *fret, |
double (*func)(double []),int *flat); |
double (*func)(double []),int *flat); |
#endif |
#endif |
int i,ibig,j; |
int i,ibig,j,jk,k; |
double del,t,*pt,*ptt,*xit; |
double del,t,*pt,*ptt,*xit; |
double directest; |
double directest; |
double fp,fptt; |
double fp,fptt; |
Line 2028 void powell(double p[], double **xi, int
|
Line 2220 void powell(double p[], double **xi, int
|
fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); |
fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); |
/* fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tm_sec-start_time.tm_sec); */ |
/* fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tm_sec-start_time.tm_sec); */ |
for (i=1;i<=n;i++) { |
for (i=1;i<=n;i++) { |
printf(" %d %.12f",i, p[i]); |
|
fprintf(ficlog," %d %.12lf",i, p[i]); |
|
fprintf(ficrespow," %.12lf", p[i]); |
fprintf(ficrespow," %.12lf", p[i]); |
} |
} |
|
fprintf(ficrespow,"\n");fflush(ficrespow); |
|
printf("\n#model= 1 + age "); |
|
fprintf(ficlog,"\n#model= 1 + age "); |
|
if(nagesqr==1){ |
|
printf(" + age*age "); |
|
fprintf(ficlog," + age*age "); |
|
} |
|
for(j=1;j <=ncovmodel-2;j++){ |
|
if(Typevar[j]==0) { |
|
printf(" + V%d ",Tvar[j]); |
|
fprintf(ficlog," + V%d ",Tvar[j]); |
|
}else if(Typevar[j]==1) { |
|
printf(" + V%d*age ",Tvar[j]); |
|
fprintf(ficlog," + V%d*age ",Tvar[j]); |
|
}else if(Typevar[j]==2) { |
|
printf(" + V%d*V%d ",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
fprintf(ficlog," + V%d*V%d ",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
} |
|
} |
printf("\n"); |
printf("\n"); |
|
/* printf("12 47.0114589 0.0154322 33.2424412 0.3279905 2.3731903 */ |
|
/* 13 -21.5392400 0.1118147 1.2680506 1.2973408 -1.0663662 */ |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficrespow,"\n");fflush(ficrespow); |
for(i=1,jk=1; i <=nlstate; i++){ |
if(*iter <=3){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
|
if (k != i) { |
|
printf("%d%d ",i,k); |
|
fprintf(ficlog,"%d%d ",i,k); |
|
for(j=1; j <=ncovmodel; j++){ |
|
printf("%12.7f ",p[jk]); |
|
fprintf(ficlog,"%12.7f ",p[jk]); |
|
jk++; |
|
} |
|
printf("\n"); |
|
fprintf(ficlog,"\n"); |
|
} |
|
} |
|
} |
|
if(*iter <=3 && *iter >1){ |
tml = *localtime(&rcurr_time); |
tml = *localtime(&rcurr_time); |
strcpy(strcurr,asctime(&tml)); |
strcpy(strcurr,asctime(&tml)); |
rforecast_time=rcurr_time; |
rforecast_time=rcurr_time; |
itmp = strlen(strcurr); |
itmp = strlen(strcurr); |
if(strcurr[itmp-1]=='\n') /* Windows outputs with a new line */ |
if(strcurr[itmp-1]=='\n') /* Windows outputs with a new line */ |
strcurr[itmp-1]='\0'; |
strcurr[itmp-1]='\0'; |
printf("\nConsidering the time needed for the last iteration #%d: %ld seconds,\n",*iter,rcurr_time-rlast_time); |
printf("\nConsidering the time needed for the last iteration #%d: %ld seconds,\n",*iter,rcurr_time-rlast_time); |
fprintf(ficlog,"\nConsidering the time needed for this last iteration #%d: %ld seconds,\n",*iter,rcurr_time-rlast_time); |
fprintf(ficlog,"\nConsidering the time needed for this last iteration #%d: %ld seconds,\n",*iter,rcurr_time-rlast_time); |
for(niterf=10;niterf<=30;niterf+=10){ |
for(niterf=10;niterf<=30;niterf+=10){ |
rforecast_time=rcurr_time+(niterf-*iter)*(rcurr_time-rlast_time); |
rforecast_time=rcurr_time+(niterf-*iter)*(rcurr_time-rlast_time); |
forecast_time = *localtime(&rforecast_time); |
forecast_time = *localtime(&rforecast_time); |
strcpy(strfor,asctime(&forecast_time)); |
strcpy(strfor,asctime(&forecast_time)); |
itmp = strlen(strfor); |
itmp = strlen(strfor); |
if(strfor[itmp-1]=='\n') |
if(strfor[itmp-1]=='\n') |
strfor[itmp-1]='\0'; |
strfor[itmp-1]='\0'; |
printf(" - if your program needs %d iterations to converge, convergence will be \n reached in %s i.e.\n on %s (current time is %s);\n",niterf, asc_diff_time(rforecast_time-rcurr_time,tmpout),strfor,strcurr); |
printf(" - if your program needs %d iterations to converge, convergence will be \n reached in %s i.e.\n on %s (current time is %s);\n",niterf, asc_diff_time(rforecast_time-rcurr_time,tmpout),strfor,strcurr); |
fprintf(ficlog," - if your program needs %d iterations to converge, convergence will be \n reached in %s i.e.\n on %s (current time is %s);\n",niterf, asc_diff_time(rforecast_time-rcurr_time,tmpout),strfor,strcurr); |
fprintf(ficlog," - if your program needs %d iterations to converge, convergence will be \n reached in %s i.e.\n on %s (current time is %s);\n",niterf, asc_diff_time(rforecast_time-rcurr_time,tmpout),strfor,strcurr); |
} |
} |
} |
} |
for (i=1;i<=n;i++) { /* For each direction i */ |
for (i=1;i<=n;i++) { /* For each direction i */ |
Line 2106 void powell(double p[], double **xi, int
|
Line 2331 void powell(double p[], double **xi, int
|
/* printf("\n"); */ |
/* printf("\n"); */ |
/* fprintf(ficlog,"\n"); */ |
/* fprintf(ficlog,"\n"); */ |
} |
} |
if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { /* Did we reach enough precision? */ |
/* if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { /\* Did we reach enough precision? *\/ */ |
|
if (2.0*fabs(fp-(*fret)) <= ftol) { /* Did we reach enough precision? */ |
/* We could compare with a chi^2. chisquare(0.95,ddl=1)=3.84 */ |
/* We could compare with a chi^2. chisquare(0.95,ddl=1)=3.84 */ |
/* By adding age*age in a model, the new -2LL should be lower and the difference follows a */ |
/* By adding age*age in a model, the new -2LL should be lower and the difference follows a */ |
/* a chisquare statistics with 1 degree. To be significant at the 95% level, it should have */ |
/* a chisquare statistics with 1 degree. To be significant at the 95% level, it should have */ |
Line 2152 void powell(double p[], double **xi, int
|
Line 2378 void powell(double p[], double **xi, int
|
free_vector(pt,1,n); |
free_vector(pt,1,n); |
return; |
return; |
} /* enough precision */ |
} /* enough precision */ |
if (*iter == ITMAX) nrerror("powell exceeding maximum iterations."); |
if (*iter == ITMAX*n) nrerror("powell exceeding maximum iterations."); |
for (j=1;j<=n;j++) { /* Computes the extrapolated point P_0 + 2 (P_n-P_0) */ |
for (j=1;j<=n;j++) { /* Computes the extrapolated point P_0 + 2 (P_n-P_0) */ |
ptt[j]=2.0*p[j]-pt[j]; |
ptt[j]=2.0*p[j]-pt[j]; |
xit[j]=p[j]-pt[j]; |
xit[j]=p[j]-pt[j]; |
Line 2211 void powell(double p[], double **xi, int
|
Line 2437 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: ",flatd); |
fprintf(ficlog,"%d flat directions\n",flatd); |
fprintf(ficlog,"%d flat directions :",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 2309 double **prevalim(double **prlim, int nl
|
Line 2537 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 2339 double **prevalim(double **prlim, int nl
|
Line 2567 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 */ |
/*wrong? for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ |
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
/* for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]*cov[2]; */ |
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,k)]*cov[2]; |
/* 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<=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])]; */ |
for (k=1; k<=cptcovage;k++){ /* For product with age */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,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("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]]; |
|
} |
|
} |
|
} |
/*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 2409 Earliest age to start was %d-%d=%d, ncvl
|
Line 2658 Earliest age to start was %d-%d=%d, ncvl
|
|
|
/* double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double ageminpar, double agemaxpar, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, double ftolpl, int *ncvyear, int ij) */ |
/* double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double ageminpar, double agemaxpar, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, double ftolpl, int *ncvyear, int ij) */ |
/* double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, double ftolpl, int *ncvyear, int ij) */ |
/* double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, double ftolpl, int *ncvyear, int ij) */ |
double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double ftolpl, int *ncvyear, int ij) |
double **bprevalim(double **bprlim, double ***prevacurrent, int nlstate, double x[], double age, double ftolpl, int *ncvyear, int ij, int nres) |
{ |
{ |
/* Computes the prevalence limit in each live state at age x and covariate ij by left multiplying the unit |
/* Computes the prevalence limit in each live state at age x and for covariate combination ij (<=2**cptcoveff) by left multiplying the unit |
matrix by transitions matrix until convergence is reached with precision ftolpl */ |
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 */ |
Line 2432 Earliest age to start was %d-%d=%d, ncvl
|
Line 2681 Earliest age to start was %d-%d=%d, ncvl
|
/* 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; |
|
int first=0; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
/* double **matprod2(); */ /* test */ |
/* double **matprod2(); */ /* test */ |
double **out, cov[NCOVMAX+1], **bmij(); |
double **out, cov[NCOVMAX+1], **bmij(); |
Line 2446 Earliest age to start was %d-%d=%d, ncvl
|
Line 2696 Earliest age to start was %d-%d=%d, ncvl
|
max=vector(1,nlstate); |
max=vector(1,nlstate); |
meandiff=vector(1,nlstate); |
meandiff=vector(1,nlstate); |
|
|
dnewm=ddnewms; doldm=ddoldms; dsavm=ddsavms; |
dnewm=ddnewms; doldm=ddoldms; dsavm=ddsavms; |
oldm=oldms; savm=savms; |
oldm=oldms; savm=savms; |
|
|
/* Starting with matrix unity */ |
/* Starting with matrix unity */ |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
} |
} |
|
|
Line 2468 Earliest age to start was %d-%d=%d, ncvl
|
Line 2718 Earliest age to start was %d-%d=%d, ncvl
|
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 */ |
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[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("bprevalim Dummy agefin=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agefin,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
} |
} |
/*wrong? for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ |
/* for (k=1; k<=cptcovn;k++) { */ |
/* for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]*cov[2]; */ |
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ |
for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,k)]*cov[2]; |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
for (k=1; k<=cptcovprod;k++) /* Useless */ |
/* /\* 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])]); *\/ */ |
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
/* } */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
for (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++) 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)]; */ |
|
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]]; |
|
} |
|
} |
|
} |
|
|
/*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]);*/ |
Line 2493 Earliest age to start was %d-%d=%d, ncvl
|
Line 2775 Earliest age to start was %d-%d=%d, ncvl
|
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, ageminpar, agemaxpar, dnewm, doldm, dsavm,ij)); /\* Bug Valgrind *\/ */ |
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, ageminpar, agemaxpar, dnewm, doldm, dsavm,ij)); /\* Bug Valgrind *\/ */ |
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij)); /\* Bug Valgrind *\/ */ |
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij)); /\* Bug Valgrind *\/ */ |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij)); /* Bug Valgrind */ |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij)); /* Bug Valgrind */ |
|
/* if((int)age == 86 || (int)age == 87){ */ |
|
/* printf(" Backward prevalim age=%d agefin=%d \n", (int) age, (int) agefin); */ |
|
/* for(i=1; i<=nlstate+ndeath; i++) { */ |
|
/* printf("%d newm= ",i); */ |
|
/* for(j=1;j<=nlstate+ndeath;j++) { */ |
|
/* printf("%f ",newm[i][j]); */ |
|
/* } */ |
|
/* printf("oldm * "); */ |
|
/* for(j=1;j<=nlstate+ndeath;j++) { */ |
|
/* printf("%f ",oldm[i][j]); */ |
|
/* } */ |
|
/* printf(" bmmij "); */ |
|
/* for(j=1;j<=nlstate+ndeath;j++) { */ |
|
/* printf("%f ",pmmij[i][j]); */ |
|
/* } */ |
|
/* printf("\n"); */ |
|
/* } */ |
|
/* } */ |
savm=oldm; |
savm=oldm; |
oldm=newm; |
oldm=newm; |
|
|
for(j=1; j<=nlstate; j++){ |
for(j=1; j<=nlstate; j++){ |
max[j]=0.; |
max[j]=0.; |
min[j]=1.; |
min[j]=1.; |
} |
} |
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 2513 Earliest age to start was %d-%d=%d, ncvl
|
Line 2814 Earliest age to start was %d-%d=%d, ncvl
|
meandiff[i]=(max[i]-min[i])/(max[i]+min[i])*2.; /* mean difference for each column */ |
meandiff[i]=(max[i]-min[i])/(max[i]+min[i])*2.; /* mean difference for each column */ |
maxmax=FMAX(maxmax,meandiff[i]); |
maxmax=FMAX(maxmax,meandiff[i]); |
/* printf("Back age= %d meandiff[%d]=%f, agefin=%d max[%d]=%f min[%d]=%f maxmax=%f\n", (int)age, i, meandiff[i],(int)agefin, i, max[i], i, min[i],maxmax); */ |
/* printf("Back age= %d meandiff[%d]=%f, agefin=%d max[%d]=%f min[%d]=%f maxmax=%f\n", (int)age, i, meandiff[i],(int)agefin, i, max[i], i, min[i],maxmax); */ |
} /* j loop */ |
} /* i loop */ |
*ncvyear= -( (int)age- (int)agefin); |
*ncvyear= -( (int)age- (int)agefin); |
/* printf("Back maxmax=%lf ncvloop=%d, age=%d, agefin=%d ncvyear=%d \n", maxmax, ncvloop, (int)age, (int)agefin, *ncvyear);*/ |
/* printf("Back maxmax=%lf ncvloop=%d, age=%d, agefin=%d ncvyear=%d \n", maxmax, ncvloop, (int)age, (int)agefin, *ncvyear); */ |
if(maxmax < ftolpl){ |
if(maxmax < ftolpl){ |
/* printf("OK Back maxmax=%lf ncvloop=%d, age=%d, agefin=%d ncvyear=%d \n", maxmax, ncvloop, (int)age, (int)agefin, *ncvyear); */ |
/* printf("OK Back maxmax=%lf ncvloop=%d, age=%d, agefin=%d ncvyear=%d \n", maxmax, ncvloop, (int)age, (int)agefin, *ncvyear); */ |
free_vector(min,1,nlstate); |
free_vector(min,1,nlstate); |
Line 2525 Earliest age to start was %d-%d=%d, ncvl
|
Line 2826 Earliest age to start was %d-%d=%d, ncvl
|
} |
} |
} /* age loop */ |
} /* age loop */ |
/* After some age loop it doesn't converge */ |
/* After some age loop it doesn't converge */ |
printf("Warning: the back stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.0f years. Try to lower 'ftolpl'. \n\ |
if(first){ |
|
first=1; |
|
printf("Warning: the back stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.0f years. Try to lower 'ftolpl'. Others in log file only...\n\ |
|
Oldest age to start was %d-%d=%d, ncvloop=%d, ncvyear=%d\n", (int)age, maxmax, ftolpl, delaymax, (int)age, (int)delaymax, (int)agefin, ncvloop, *ncvyear); |
|
} |
|
fprintf(ficlog,"Warning: the back stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.0f years. Try to lower 'ftolpl'. \n\ |
Oldest age to start was %d-%d=%d, ncvloop=%d, ncvyear=%d\n", (int)age, maxmax, ftolpl, delaymax, (int)age, (int)delaymax, (int)agefin, ncvloop, *ncvyear); |
Oldest age to start was %d-%d=%d, ncvloop=%d, ncvyear=%d\n", (int)age, maxmax, ftolpl, delaymax, (int)age, (int)delaymax, (int)agefin, ncvloop, *ncvyear); |
/* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */ |
/* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */ |
free_vector(min,1,nlstate); |
free_vector(min,1,nlstate); |
Line 2540 Oldest age to start was %d-%d=%d, ncvloo
|
Line 2846 Oldest age to start was %d-%d=%d, ncvloo
|
double **pmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate ) |
double **pmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate ) |
{ |
{ |
/* According to parameters values stored in x and the covariate's values stored in cov, |
/* According to parameters values stored in x and the covariate's values stored in cov, |
computes the probability to be observed in state j being in state i by appying the |
computes the probability to be observed in state j (after stepm years) being in state i by appying the |
model to the ncovmodel covariates (including constant and age). |
model to the ncovmodel covariates (including constant and age). |
lnpijopii=ln(pij/pii)= aij+bij*age+cij*v1+dij*v2+... = sum_nc=1^ncovmodel xij(nc)*cov[nc] |
lnpijopii=ln(pij/pii)= aij+bij*age+cij*v1+dij*v2+... = sum_nc=1^ncovmodel xij(nc)*cov[nc] |
and, according on how parameters are entered, the position of the coefficient xij(nc) of the |
and, according on how parameters are entered, the position of the coefficient xij(nc) of the |
Line 2549 double **pmij(double **ps, double *cov,
|
Line 2855 double **pmij(double **ps, double *cov,
|
j>=i nc + ((i-1)*(nlstate+ndeath-1)+(j-2))*ncovmodel |
j>=i nc + ((i-1)*(nlstate+ndeath-1)+(j-2))*ncovmodel |
Computes ln(pij/pii) (lnpijopii), deduces pij/pii by exponentiation, |
Computes ln(pij/pii) (lnpijopii), deduces pij/pii by exponentiation, |
sums on j different of i to get 1-pii/pii, deduces pii, and then all pij. |
sums on j different of i to get 1-pii/pii, deduces pii, and then all pij. |
Outputs ps[i][j] the probability to be observed in j being in j according to |
Outputs ps[i][j] or probability to be observed in j being in i according to |
the values of the covariates cov[nc] and corresponding parameter values x[nc+shiftij] |
the values of the covariates cov[nc] and corresponding parameter values x[nc+shiftij] |
|
Sum on j ps[i][j] should equal to 1. |
*/ |
*/ |
double s1, lnpijopii; |
double s1, lnpijopii; |
/*double t34;*/ |
/*double t34;*/ |
Line 2614 double **pmij(double **ps, double *cov,
|
Line 2921 double **pmij(double **ps, double *cov,
|
/* |
/* |
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; /* Pointer is unchanged since its call */ |
} |
} |
|
|
/*************** backward transition probabilities ***************/ |
/*************** backward transition probabilities ***************/ |
Line 2623 double **pmij(double **ps, double *cov,
|
Line 2930 double **pmij(double **ps, double *cov,
|
/* double **bmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate, double ***prevacurrent, double ***dnewm, double **doldm, double **dsavm, int ij ) */ |
/* double **bmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate, double ***prevacurrent, double ***dnewm, double **doldm, double **dsavm, int ij ) */ |
double **bmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate, double ***prevacurrent, int ij ) |
double **bmij(double **ps, double *cov, int ncovmodel, double *x, int nlstate, double ***prevacurrent, int ij ) |
{ |
{ |
/* Computes the backward probability at age agefin and covariate ij |
/* Computes the backward probability at age agefin and covariate combination ij. In fact cov is already filled and x too. |
* and returns in **ps as well as **bmij. |
* Call to pmij(cov and x), call to cross prevalence, sums and inverses, left multiply, and returns in **ps as well as **bmij. |
*/ |
*/ |
int i, ii, j,k; |
int i, ii, j,k; |
|
|
double **out, **pmij(); |
double **out, **pmij(); |
double sumnew=0.; |
double sumnew=0.; |
double agefin; |
double agefin; |
|
double k3=0.; /* constant of the w_x diagonal matrixe (in order for B to sum to 1 even for death state) */ |
double **dnewm, **dsavm, **doldm; |
double **dnewm, **dsavm, **doldm; |
double **bbmij; |
double **bbmij; |
|
|
Line 2640 double **pmij(double **ps, double *cov,
|
Line 2947 double **pmij(double **ps, double *cov,
|
dsavm=ddsavms; |
dsavm=ddsavms; |
|
|
agefin=cov[2]; |
agefin=cov[2]; |
|
/* Bx = Diag(w_x) P_x Diag(Sum_i w^i_x p^ij_x */ |
/* bmij *//* age is cov[2], ij is included in cov, but we need for |
/* bmij *//* age is cov[2], ij is included in cov, but we need for |
the observed prevalence (with this covariate ij) */ |
the observed prevalence (with this covariate ij) at beginning of transition */ |
dsavm=pmij(pmmij,cov,ncovmodel,x,nlstate); |
/* dsavm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
/* We do have the matrix Px in savm and we need pij */ |
|
|
/* P_x */ |
|
pmmij=pmij(pmmij,cov,ncovmodel,x,nlstate); /*This is forward probability from agefin to agefin + stepm */ |
|
/* outputs pmmij which is a stochastic matrix in row */ |
|
|
|
/* Diag(w_x) */ |
|
/* Problem with prevacurrent which can be zero */ |
|
sumnew=0.; |
|
/*for (ii=1;ii<=nlstate+ndeath;ii++){*/ |
|
for (ii=1;ii<=nlstate;ii++){ /* Only on live states */ |
|
/* printf(" agefin=%d, ii=%d, ij=%d, prev=%f\n",(int)agefin,ii, ij, prevacurrent[(int)agefin][ii][ij]); */ |
|
sumnew+=prevacurrent[(int)agefin][ii][ij]; |
|
} |
|
if(sumnew >0.01){ /* At least some value in the prevalence */ |
|
for (ii=1;ii<=nlstate+ndeath;ii++){ |
|
for (j=1;j<=nlstate+ndeath;j++) |
|
doldm[ii][j]=(ii==j ? prevacurrent[(int)agefin][ii][ij]/sumnew : 0.0); |
|
} |
|
}else{ |
|
for (ii=1;ii<=nlstate+ndeath;ii++){ |
|
for (j=1;j<=nlstate+ndeath;j++) |
|
doldm[ii][j]=(ii==j ? 1./nlstate : 0.0); |
|
} |
|
/* if(sumnew <0.9){ */ |
|
/* printf("Problem internal bmij B: sum on i wi <0.9: j=%d, sum_i wi=%lf,agefin=%d\n",j,sumnew, (int)agefin); */ |
|
/* } */ |
|
} |
|
k3=0.0; /* We put the last diagonal to 0 */ |
|
for (ii=nlstate+1;ii<=nlstate+ndeath;ii++){ |
|
doldm[ii][ii]= k3; |
|
} |
|
/* End doldm, At the end doldm is diag[(w_i)] */ |
|
|
|
/* left Product of this diag matrix by pmmij=Px (dnewm=dsavm*doldm) */ |
|
bbmij=matprod2(dnewm, doldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, pmmij); /* Bug Valgrind */ |
|
|
|
/* Diag(Sum_i w^i_x p^ij_x */ |
|
/* w1 p11 + w2 p21 only on live states N1./N..*N11/N1. + N2./N..*N21/N2.=(N11+N21)/N..=N.1/N.. */ |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
sumnew=0.; /* w1 p11 + w2 p21 only on live states */ |
sumnew=0.; |
for (ii=1;ii<=nlstate;ii++){ |
for (ii=1;ii<=nlstate;ii++){ |
sumnew+=dsavm[ii][j]*prevacurrent[(int)agefin][ii][ij]; |
/* sumnew+=dsavm[ii][j]*prevacurrent[(int)agefin][ii][ij]; */ |
|
sumnew+=pmmij[ii][j]*doldm[ii][ii]; /* Yes prevalence at beginning of transition */ |
} /* sumnew is (N11+N21)/N..= N.1/N.. = sum on i of w_i pij */ |
} /* sumnew is (N11+N21)/N..= N.1/N.. = sum on i of w_i pij */ |
for (ii=1;ii<=nlstate+ndeath;ii++){ |
for (ii=1;ii<=nlstate+ndeath;ii++){ |
if(sumnew >= 1.e-10){ |
|
/* if(agefin >= agemaxpar && agefin <= agemaxpar+stepm/YEARM){ */ |
/* if(agefin >= agemaxpar && agefin <= agemaxpar+stepm/YEARM){ */ |
/* doldm[ii][j]=(ii==j ? 1./sumnew : 0.0); */ |
/* dsavm[ii][j]=(ii==j ? 1./sumnew : 0.0); */ |
/* }else if(agefin >= agemaxpar+stepm/YEARM){ */ |
/* }else if(agefin >= agemaxpar+stepm/YEARM){ */ |
/* doldm[ii][j]=(ii==j ? 1./sumnew : 0.0); */ |
/* dsavm[ii][j]=(ii==j ? 1./sumnew : 0.0); */ |
/* }else */ |
/* }else */ |
doldm[ii][j]=(ii==j ? 1./sumnew : 0.0); |
dsavm[ii][j]=(ii==j ? 1./sumnew : 0.0); |
}else{ |
|
printf("ii=%d, i=%d, doldm=%lf dsavm=%lf, probs=%lf, sumnew=%lf,agefin=%d\n",ii,j,doldm[ii][j],dsavm[ii][j],prevacurrent[(int)agefin][ii][ij],sumnew, (int)agefin); |
|
} |
|
} /*End ii */ |
} /*End ii */ |
} /* End j, At the end doldm is diag[1/(w_1p1i+w_2 p2i)] */ |
} /* End j, At the end dsavm is diag[1/(w_1p1i+w_2 p2i)] for ALL states even if the sum is only for live states */ |
/* left Product of this diag matrix by dsavm=Px (newm=dsavm*doldm) */ |
|
bbmij=matprod2(dnewm, dsavm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, doldm); /* Bug Valgrind */ |
ps=matprod2(ps, dnewm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, dsavm); /* Bug Valgrind */ |
/* dsavm=doldm; /\* dsavm is now diag [1/(w_1p1i+w_2 p2i)] but can be overwritten*\/ */ |
/* ps is now diag[w_i] * Px * diag [1/(w_1p1i+w_2 p2i)] */ |
/* doldm=dnewm; /\* doldm is now Px * diag [1/(w_1p1i+w_2 p2i)] *\/ */ |
|
/* dnewm=dsavm; /\* doldm is now Px * diag [1/(w_1p1i+w_2 p2i)] *\/ */ |
|
/* left Product of this matrix by diag matrix of prevalences (savm) */ |
|
for (j=1;j<=nlstate+ndeath;j++){ |
|
for (ii=1;ii<=nlstate+ndeath;ii++){ |
|
dsavm[ii][j]=(ii==j ? prevacurrent[(int)agefin][ii][ij] : 0.0); |
|
} |
|
} /* End j, At the end oldm is diag[1/(w_1p1i+w_2 p2i)] */ |
|
ps=matprod2(doldm, dsavm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, dnewm); /* Bug Valgrind */ |
|
/* newm or out is now diag[w_i] * Px * diag [1/(w_1p1i+w_2 p2i)] */ |
|
/* end bmij */ |
/* end bmij */ |
return ps; |
return ps; /*pointer is unchanged */ |
} |
} |
/*************** transition probabilities ***************/ |
/*************** transition probabilities ***************/ |
|
|
Line 2699 double **bpmij(double **ps, double *cov,
|
Line 3031 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 (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[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); */ |
|
} |
|
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
|
} |
|
} |
|
|
|
for(i=1; i<= nlstate; i++){ |
|
s1=0; |
|
for(j=1; j<i; j++){ |
|
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); */ |
|
} |
|
for(j=i+1; j<=nlstate+ndeath; j++){ |
|
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); */ |
|
} |
|
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
|
ps[i][i]=1./(s1+1.); |
|
/* Computing other pijs */ |
|
for(j=1; j<i; j++) |
|
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
|
for(j=i+1; j<=nlstate+ndeath; j++) |
|
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
|
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
|
} /* end i */ |
|
|
|
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
ps[ii][jj]=0; |
|
ps[ii][ii]=1; |
|
} |
|
} |
|
/* Added for backcast */ /* Transposed matrix too */ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
s1=0.; |
|
for(ii=1; ii<= nlstate+ndeath; ii++){ |
|
s1+=ps[ii][jj]; |
|
} |
|
for(ii=1; ii<= nlstate; ii++){ |
|
ps[ii][jj]=ps[ii][jj]/s1; |
|
} |
|
} |
|
/* Transposition */ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
for(ii=jj; ii<= nlstate+ndeath; ii++){ |
|
s1=ps[ii][jj]; |
|
ps[ii][jj]=ps[jj][ii]; |
|
ps[jj][ii]=s1; |
|
} |
|
} |
|
/* for(ii=1; ii<= nlstate+ndeath; ii++){ */ |
|
/* for(jj=1; jj<= nlstate+ndeath; jj++){ */ |
|
/* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ |
|
/* } */ |
|
/* printf("\n "); */ |
|
/* } */ |
|
/* printf("\n ");printf("%lf ",cov[2]);*/ |
|
/* |
|
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
|
goto end;*/ |
|
return ps; |
|
} |
|
|
|
|
|
/**************** Product of 2 matrices ******************/ |
|
|
|
double **matprod2(double **out, double **in,int nrl, int nrh, int ncl, int nch, int ncolol, int ncoloh, double **b) |
|
{ |
|
/* Computes the matrix product of in(1,nrh-nrl+1)(1,nch-ncl+1) times |
|
b(1,nch-ncl+1)(1,ncoloh-ncolol+1) into out(...) */ |
|
/* in, b, out are matrice of pointers which should have been initialized |
|
before: only the contents of out is modified. The function returns |
|
a pointer to pointers identical to out */ |
|
int i, j, k; |
|
for(i=nrl; i<= nrh; i++) |
|
for(k=ncolol; k<=ncoloh; k++){ |
|
out[i][k]=0.; |
|
for(j=ncl; j<=nch; j++) |
|
out[i][k] +=in[i][j]*b[j][k]; |
|
} |
} |
return out; |
for(j=i+1; j<=nlstate+ndeath;j++){ |
} |
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[nc + ((i-1)*(nlstate+ndeath-1)+(j-2))*ncovmodel]*cov[nc]; |
/************* Higher Matrix Product ***************/ |
/* printf("Int j>i s1=%.17e, lnpijopii=%.17e %lx %lx\n",s1,lnpijopii,s1,lnpijopii); */ |
|
} |
double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij ) |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
{ |
} |
/* Computes the transition matrix starting at age 'age' and combination of covariate values corresponding to ij over |
} |
'nhstepm*hstepm*stepm' months (i.e. until |
|
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
for(i=1; i<= nlstate; i++){ |
nhstepm*hstepm matrices. |
s1=0; |
Output is stored in matrix po[i][j][h] for h every 'hstepm' step |
for(j=1; j<i; j++){ |
(typically every 2 years instead of every month which is too big |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
for the memory). |
/*printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
Model is determined by parameters x and covariates have to be |
} |
included manually here. |
for(j=i+1; j<=nlstate+ndeath; j++){ |
|
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); */ |
|
} |
int i, j, d, h, k; |
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
double **out, cov[NCOVMAX+1]; |
ps[i][i]=1./(s1+1.); |
double **newm; |
/* Computing other pijs */ |
double agexact; |
for(j=1; j<i; j++) |
double agebegin, ageend; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
|
for(j=i+1; j<=nlstate+ndeath; j++) |
/* Hstepm could be zero and should return the unit matrix */ |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
for (i=1;i<=nlstate+ndeath;i++) |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
for (j=1;j<=nlstate+ndeath;j++){ |
} /* end i */ |
|
|
|
for(ii=nlstate+1; ii<= nlstate+ndeath; ii++){ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
ps[ii][jj]=0; |
|
ps[ii][ii]=1; |
|
} |
|
} |
|
/* Added for backcast */ /* Transposed matrix too */ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
s1=0.; |
|
for(ii=1; ii<= nlstate+ndeath; ii++){ |
|
s1+=ps[ii][jj]; |
|
} |
|
for(ii=1; ii<= nlstate; ii++){ |
|
ps[ii][jj]=ps[ii][jj]/s1; |
|
} |
|
} |
|
/* Transposition */ |
|
for(jj=1; jj<= nlstate+ndeath; jj++){ |
|
for(ii=jj; ii<= nlstate+ndeath; ii++){ |
|
s1=ps[ii][jj]; |
|
ps[ii][jj]=ps[jj][ii]; |
|
ps[jj][ii]=s1; |
|
} |
|
} |
|
/* for(ii=1; ii<= nlstate+ndeath; ii++){ */ |
|
/* for(jj=1; jj<= nlstate+ndeath; jj++){ */ |
|
/* printf(" pmij ps[%d][%d]=%lf ",ii,jj,ps[ii][jj]); */ |
|
/* } */ |
|
/* printf("\n "); */ |
|
/* } */ |
|
/* printf("\n ");printf("%lf ",cov[2]);*/ |
|
/* |
|
for(i=1; i<= npar; i++) printf("%f ",x[i]); |
|
goto end;*/ |
|
return ps; |
|
} |
|
|
|
|
|
/**************** Product of 2 matrices ******************/ |
|
|
|
double **matprod2(double **out, double **in,int nrl, int nrh, int ncl, int nch, int ncolol, int ncoloh, double **b) |
|
{ |
|
/* Computes the matrix product of in(1,nrh-nrl+1)(1,nch-ncl+1) times |
|
b(1,nch-ncl+1)(1,ncoloh-ncolol+1) into out(...) */ |
|
/* in, b, out are matrice of pointers which should have been initialized |
|
before: only the contents of out is modified. The function returns |
|
a pointer to pointers identical to out */ |
|
int i, j, k; |
|
for(i=nrl; i<= nrh; i++) |
|
for(k=ncolol; k<=ncoloh; k++){ |
|
out[i][k]=0.; |
|
for(j=ncl; j<=nch; j++) |
|
out[i][k] +=in[i][j]*b[j][k]; |
|
} |
|
return out; |
|
} |
|
|
|
|
|
/************* 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, int nres ) |
|
{ |
|
/* Computes the transition matrix starting at age 'age' and combination of covariate values corresponding to ij over |
|
'nhstepm*hstepm*stepm' months (i.e. until |
|
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
|
nhstepm*hstepm matrices. |
|
Output is stored in matrix po[i][j][h] for h every 'hstepm' step |
|
(typically every 2 years instead of every month which is too big |
|
for the memory). |
|
Model is determined by parameters x and covariates have to be |
|
included manually here. |
|
|
|
*/ |
|
|
|
int i, j, d, h, k; |
|
double **out, cov[NCOVMAX+1]; |
|
double **newm; |
|
double agexact; |
|
double agebegin, ageend; |
|
|
|
/* Hstepm could be zero and should return the unit matrix */ |
|
for (i=1;i<=nlstate+ndeath;i++) |
|
for (j=1;j<=nlstate+ndeath;j++){ |
oldm[i][j]=(i==j ? 1.0 : 0.0); |
oldm[i][j]=(i==j ? 1.0 : 0.0); |
po[i][j][0]=(i==j ? 1.0 : 0.0); |
po[i][j][0]=(i==j ? 1.0 : 0.0); |
} |
} |
Line 2835 double ***hpxij(double ***po, int nhstep
|
Line 3167 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 2871 double ***hpxij(double ***po, int nhstep
|
Line 3221 double ***hpxij(double ***po, int nhstep
|
} |
} |
for(i=1; i<=nlstate+ndeath; i++) |
for(i=1; i<=nlstate+ndeath; i++) |
for(j=1;j<=nlstate+ndeath;j++) { |
for(j=1;j<=nlstate+ndeath;j++) { |
po[i][j][h]=newm[i][j]; |
po[i][j][h]=newm[i][j]; |
/*if(h==nhstepm) printf("po[%d][%d][%d]=%f ",i,j,h,po[i][j][h]);*/ |
/*if(h==nhstepm) printf("po[%d][%d][%d]=%f ",i,j,h,po[i][j][h]);*/ |
} |
} |
/*printf("h=%d ",h);*/ |
/*printf("h=%d ",h);*/ |
} /* end h */ |
} /* end h */ |
/* printf("\n H=%d \n",h); */ |
/* printf("\n H=%d \n",h); */ |
return po; |
return po; |
} |
} |
|
|
/************* Higher Back Matrix Product ***************/ |
/************* Higher Back Matrix Product ***************/ |
/* double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, int ij ) */ |
/* double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, int ij ) */ |
double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, int ij ) |
double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, int ij, int nres ) |
{ |
{ |
/* Computes the transition matrix starting at age 'age' over |
/* For a combination of dummy covariate ij, computes the transition matrix starting at age 'age' over |
'nhstepm*hstepm*stepm' months (i.e. until |
'nhstepm*hstepm*stepm' months (i.e. until |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
nhstepm*hstepm matrices. |
nhstepm*hstepm matrices. |
Line 2892 double ***hbxij(double ***po, int nhstep
|
Line 3242 double ***hbxij(double ***po, int nhstep
|
(typically every 2 years instead of every month which is too big |
(typically every 2 years instead of every month which is too big |
for the memory). |
for the memory). |
Model is determined by parameters x and covariates have to be |
Model is determined by parameters x and covariates have to be |
included manually here. |
included manually here. Then we use a call to bmij(x and cov) |
|
The addresss of po (p3mat allocated to the dimension of nhstepm) should be stored for output |
*/ |
*/ |
|
|
int i, j, d, h, k; |
int i, j, d, h, k; |
double **out, cov[NCOVMAX+1]; |
double **out, cov[NCOVMAX+1], **bmij(); |
double **newm; |
double **newm, ***newmm; |
double agexact; |
double agexact; |
double agebegin, ageend; |
double agebegin, ageend; |
double **oldm, **savm; |
double **oldm, **savm; |
|
|
oldm=oldms;savm=savms; |
newmm=po; /* To be saved */ |
|
oldm=oldms;savm=savms; /* Global pointers */ |
/* Hstepm could be zero and should return the unit matrix */ |
/* Hstepm could be zero and should return the unit matrix */ |
for (i=1;i<=nlstate+ndeath;i++) |
for (i=1;i<=nlstate+ndeath;i++) |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
Line 2916 double ***hbxij(double ***po, int nhstep
|
Line 3267 double ***hbxij(double ***po, int nhstep
|
newm=savm; |
newm=savm; |
/* Covariates have to be included here again */ |
/* Covariates have to be included here again */ |
cov[1]=1.; |
cov[1]=1.; |
agexact=age-((h-1)*hstepm + (d-1))*stepm/YEARM; /* age just before transition */ |
agexact=age-( (h-1)*hstepm + (d) )*stepm/YEARM; /* age just before transition, d or d-1? */ |
/* agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /\* age just before transition *\/ */ |
/* agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /\* age just before transition *\/ */ |
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<=cptcovn;k++){ |
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; */ |
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ |
for (k=1; k<=cptcovage;k++) /* Should start at cptcovn+1 */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
/* cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ |
/* printf("hbxij Dummy agexact=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agexact,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
} |
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ |
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
for (k=1; k<=cptcovprod;k++) /* Useless because included in cptcovn */ |
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
|
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][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]); */ |
|
} |
|
for (k=1; k<=cptcovage;k++){ /* Should start at cptcovn+1 */ |
|
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("hBxij 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++){ /* Useless because included in cptcovn */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; |
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
} |
|
|
|
|
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ |
/*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ |
|
|
/* Careful transposed matrix */ |
/* Careful transposed matrix */ |
/* age is in cov[2] */ |
/* age is in cov[2], prevacurrent at beginning of transition. */ |
/* out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij),\ */ |
/* out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij),\ */ |
/* 1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); */ |
/* 1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); */ |
out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij),\ |
out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij),\ |
Line 2961 double ***hbxij(double ***po, int nhstep
|
Line 3323 double ***hbxij(double ***po, int nhstep
|
for(i=1; i<=nlstate+ndeath; i++) |
for(i=1; i<=nlstate+ndeath; i++) |
for(j=1;j<=nlstate+ndeath;j++) { |
for(j=1;j<=nlstate+ndeath;j++) { |
po[i][j][h]=newm[i][j]; |
po[i][j][h]=newm[i][j]; |
/*if(h==nhstepm) printf("po[%d][%d][%d]=%f ",i,j,h,po[i][j][h]);*/ |
/* if(h==nhstepm) */ |
|
/* printf("po[%d][%d][%d]=%f ",i,j,h,po[i][j][h]); */ |
} |
} |
/*printf("h=%d ",h);*/ |
/* printf("h=%d %.1f ",h, agexact); */ |
} /* end h */ |
} /* end h */ |
/* printf("\n H=%d \n",h); */ |
/* printf("\n H=%d nhs=%d \n",h, nhstepm); */ |
return po; |
return po; |
} |
} |
|
|
Line 3023 double func( double *x)
|
Line 3386 double func( double *x)
|
Then computes with function pmij which return a matrix p[i][j] giving the elementary probability |
Then computes with function pmij which return a matrix p[i][j] giving the elementary probability |
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 ; |
/* 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 3045 double func( double *x)
|
Line 3404 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]; |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
} |
} |
for(iqtv=1; iqtv <= nqtveff; iqtv++){ /* Varying quantitatives covariates */ |
for (ii=1;ii<=nlstate+ndeath;ii++) |
if(cotqvar[mw[mi][i]][iqtv][i] == -1){ |
for (j=1;j<=nlstate+ndeath;j++){ |
printf("i=%d, mi=%d, iqtv=%d, cotqvar[mw[mi][i]][iqtv][i]=%f",i,mi,iqtv,cotqvar[mw[mi][i]][iqtv][i]); |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
} |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]; |
} |
/* cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][iqtv][i]; */ |
for(d=0; d<dh[mi][i]; d++){ |
} |
newm=savm; |
/* ioffset=2+nagesqr+cptcovn+nqv+ntv+nqtv; */ |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
for (ii=1;ii<=nlstate+ndeath;ii++) |
cov[2]=agexact; |
for (j=1;j<=nlstate+ndeath;j++){ |
if(nagesqr==1) |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
cov[3]= agexact*agexact; /* Should be changed here */ |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
for (kk=1; kk<=cptcovage;kk++) { |
} |
if(!FixedV[Tvar[Tage[kk]]]) |
for(d=0; d<dh[mi][i]; d++){ |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
newm=savm; |
else |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; |
cov[2]=agexact; |
} |
if(nagesqr==1) |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
cov[3]= agexact*agexact; /* Should be changed here */ |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
for (kk=1; kk<=cptcovage;kk++) { |
savm=oldm; |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
oldm=newm; |
} |
} /* end mult */ |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
|
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
savm=oldm; |
/* But now since version 0.9 we anticipate for bias at large stepm. |
oldm=newm; |
* If stepm is larger than one month (smallest stepm) and if the exact delay |
} /* end mult */ |
* (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 |
/*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ |
* we keep into memory the bias bh[mi][i] and also the previous matrix product |
/* But now since version 0.9 we anticipate for bias at large stepm. |
* (i.e to dh[mi][i]-1) saved in 'savm'. Then we inter(extra)polate the |
* If stepm is larger than one month (smallest stepm) and if the exact delay |
* probability in order to take into account the bias as a fraction of the way |
* (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 3351 double funcone( double *x)
|
Line 3705 double funcone( double *x)
|
for(k=1; k<=nlstate; k++) ll[k]=0.; |
for(k=1; k<=nlstate; k++) ll[k]=0.; |
ioffset=0; |
ioffset=0; |
for (i=1,ipmx=0, sw=0.; i<=imx; i++){ |
for (i=1,ipmx=0, sw=0.; i<=imx; i++){ |
ioffset=2+nagesqr+cptcovage; |
/* ioffset=2+nagesqr+cptcovage; */ |
|
ioffset=2+nagesqr; |
|
/* Fixed */ |
/* for (k=1; k<=cptcovn;k++) cov[2+nagesqr+k]=covar[Tvar[k]][i]; */ |
/* for (k=1; k<=cptcovn;k++) cov[2+nagesqr+k]=covar[Tvar[k]][i]; */ |
for (k=1; k<=ncoveff;k++){ /* Simple and product fixed Dummy covariates without age* products */ |
/* for (k=1; k<=ncoveff;k++){ /\* Simple and product fixed Dummy covariates without age* products *\/ */ |
cov[++ioffset]=covar[TvarFD[k]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (k=6)*/ |
for (k=1; k<=ncovf;k++){ /* Simple and product fixed covariates without age* products */ |
} |
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 (k=1; k<=nqfveff;k++){ /* Simple and product fixed Quantitative covariates without age* products */ |
/* cov[ioffset+TvarFind[1]]=covar[Tvar[TvarFind[1]]][i]; */ |
cov[++ioffset]=coqvar[TvarFQ[k]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V2 and V1*V2 is fixed (k=6 and 7?)*/ |
/* cov[2+6]=covar[Tvar[6]][i]; */ |
|
/* cov[2+6]=covar[2][i]; V2 */ |
|
/* cov[TvarFind[2]]=covar[Tvar[TvarFind[2]]][i]; */ |
|
/* cov[2+7]=covar[Tvar[7]][i]; */ |
|
/* cov[2+7]=covar[7][i]; V7=V1*V2 */ |
|
/* cov[TvarFind[3]]=covar[Tvar[TvarFind[3]]][i]; */ |
|
/* cov[2+9]=covar[Tvar[9]][i]; */ |
|
/* cov[2+9]=covar[1][i]; V1 */ |
} |
} |
|
/* for (k=1; k<=nqfveff;k++){ /\* Simple and product fixed Quantitative covariates without age* products *\/ */ |
|
/* cov[++ioffset]=coqvar[TvarFQ[k]][i];/\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V2 and V1*V2 is fixed (k=6 and 7?)*\/ */ |
|
/* } */ |
/* for(iqv=1; iqv <= nqfveff; iqv++){ /\* Quantitative fixed covariates *\/ */ |
/* for(iqv=1; iqv <= nqfveff; iqv++){ /\* Quantitative fixed covariates *\/ */ |
/* 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 *\/ */ |
/* } */ |
/* } */ |
|
|
|
|
for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ |
for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ |
for(itv=1; itv <= ntveff; itv++){ /* Varying dummy covariates (single??)*/ |
/* Wave varying (but not age varying) */ |
/* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; /\* Counting the # varying covariate from 1 to ntveff *\/ */ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ |
/* cov[ioffset+iv]=cotvar[mw[mi][i]][iv][i]; */ |
/* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; */ |
k=ioffset-2-nagesqr-cptcovage+itv; /* position in simple model */ |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
cov[ioffset+itv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; |
} |
/* printf(" i=%d,mi=%d,itv=%d,TmodelInvind[itv]=%d,cotvar[mw[mi][i]][TmodelInvind[itv]][i]=%f\n", i, mi, itv, TmodelInvind[itv],cotvar[mw[mi][i]][TmodelInvind[itv]][i]); */ |
/* 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 *\/ */ |
for(iqtv=1; iqtv <= nqtveff; iqtv++){ /* Varying quantitatives covariates */ |
/* cov[ioffset+iv]=cotvar[mw[mi][i]][iv][i]; */ |
iv=TmodelInvQind[iqtv]; /* Counting the # varying covariate from 1 to ntveff */ |
/* k=ioffset-2-nagesqr-cptcovage+itv; /\* position in simple model *\/ */ |
/* printf(" i=%d,mi=%d,iqtv=%d,TmodelInvQind[iqtv]=%d,cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]=%f\n", i, mi, iqtv, TmodelInvQind[iqtv],cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]); */ |
/* cov[ioffset+itv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; */ |
cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]; |
/* printf(" i=%d,mi=%d,itv=%d,TmodelInvind[itv]=%d,cotvar[mw[mi][i]][TmodelInvind[itv]][i]=%f\n", i, mi, itv, TmodelInvind[itv],cotvar[mw[mi][i]][TmodelInvind[itv]][i]); */ |
} |
/* for(iqtv=1; iqtv <= nqtveff; iqtv++){ /\* Varying quantitatives covariates *\/ */ |
|
/* iv=TmodelInvQind[iqtv]; /\* Counting the # varying covariate from 1 to ntveff *\/ */ |
|
/* /\* printf(" i=%d,mi=%d,iqtv=%d,TmodelInvQind[iqtv]=%d,cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]=%f\n", i, mi, iqtv, TmodelInvQind[iqtv],cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]); *\/ */ |
|
/* cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]; */ |
|
/* } */ |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
savm[ii][j]=(ii==j ? 1.0 : 0.0); |
} |
} |
|
|
agebegin=agev[mw[mi][i]][i]; /* Age at beginning of effective wave */ |
agebegin=agev[mw[mi][i]][i]; /* Age at beginning of effective wave */ |
ageend=agev[mw[mi][i]][i] + (dh[mi][i])*stepm/YEARM; /* Age at end of effective wave and at the end of transition */ |
ageend=agev[mw[mi][i]][i] + (dh[mi][i])*stepm/YEARM; /* Age at end of effective wave and at the end of transition */ |
for(d=0; d<dh[mi][i]; d++){ /* Delay between two effective waves */ |
for(d=0; d<dh[mi][i]; d++){ /* Delay between two effective waves */ |
/*dh[m][i] or dh[mw[mi][i]][i] is the delay between two effective waves m=mw[mi][i] |
/* for(d=0; d<=0; d++){ /\* Delay between two effective waves Only one matrix to speed up*\/ */ |
and mw[mi+1][i]. dh depends on stepm.*/ |
/*dh[m][i] or dh[mw[mi][i]][i] is the delay between two effective waves m=mw[mi][i] |
newm=savm; |
and mw[mi+1][i]. dh depends on stepm.*/ |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
newm=savm; |
cov[2]=agexact; |
agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; /* Here d is needed */ |
if(nagesqr==1) |
cov[2]=agexact; |
cov[3]= agexact*agexact; |
if(nagesqr==1) |
for (kk=1; kk<=cptcovage;kk++) { |
cov[3]= agexact*agexact; |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; |
for (kk=1; kk<=cptcovage;kk++) { |
} |
if(!FixedV[Tvar[Tage[kk]]]) |
/* printf("i=%d,mi=%d,d=%d,mw[mi][i]=%d\n",i, mi,d,mw[mi][i]); */ |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; |
/* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
else |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
} |
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, */ |
/* printf("i=%d,mi=%d,d=%d,mw[mi][i]=%d\n",i, mi,d,mw[mi][i]); */ |
/* 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); */ |
/* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
savm=oldm; |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
oldm=newm; |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
|
/* out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, */ |
|
/* 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); */ |
|
savm=oldm; |
|
oldm=newm; |
} /* end mult */ |
} /* end mult */ |
|
|
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]; |
/* if(s2==-1){ */ |
/* if(s2==-1){ */ |
/* printf(" s1=%d, s2=%d i=%d \n", s1, s2, i); */ |
/* printf(" ERROR s1=%d, s2=%d i=%d \n", s1, s2, i); */ |
/* /\* exit(1); *\/ */ |
/* /\* exit(1); *\/ */ |
/* } */ |
/* } */ |
bbh=(double)bh[mi][i]/(double)stepm; |
bbh=(double)bh[mi][i]/(double)stepm; |
Line 3438 double funcone( double *x)
|
Line 3813 double funcone( double *x)
|
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
ll[s[mw[mi][i]][i]] += 2*weight[i]*lli; |
/*printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */ |
/*printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */ |
if(globpr){ |
if(globpr){ |
fprintf(ficresilk,"%9ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\ |
fprintf(ficresilk,"%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\ |
%11.6f %11.6f %11.6f ", \ |
%11.6f %11.6f %11.6f ", \ |
num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw, |
num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw, |
2*weight[i]*lli,out[s1][s2],savm[s1][s2]); |
2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); |
for(k=1,llt=0.,l=0.; k<=nlstate; k++){ |
for(k=1,llt=0.,l=0.; k<=nlstate; k++){ |
llt +=ll[k]*gipmx/gsw; |
llt +=ll[k]*gipmx/gsw; |
fprintf(ficresilk," %10.6f",-ll[k]*gipmx/gsw); |
fprintf(ficresilk," %10.6f",-ll[k]*gipmx/gsw); |
} |
} |
fprintf(ficresilk," %10.6f\n", -llt); |
fprintf(ficresilk," %10.6f\n", -llt); |
} |
} |
} /* end of wave */ |
} /* end of wave */ |
} /* end of individual */ |
} /* end of individual */ |
for(k=1,l=0.; k<=nlstate; k++) l += ll[k]; |
for(k=1,l=0.; k<=nlstate; k++) l += ll[k]; |
/* printf("l1=%f l2=%f ",ll[1],ll[2]); */ |
/* printf("l1=%f l2=%f ",ll[1],ll[2]); */ |
l= l*ipmx/sw; /* To get the same order of magnitude as if weight=1 for every body */ |
l= l*ipmx/sw; /* To get the same order of magnitude as if weight=1 for every body */ |
if(globpr==0){ /* First time we count the contributions and weights */ |
if(globpr==0){ /* First time we count the contributions and weights */ |
gipmx=ipmx; |
gipmx=ipmx; |
gsw=sw; |
gsw=sw; |
} |
} |
return -l; |
return -l; |
} |
} |
|
|
|
|
Line 3494 void likelione(FILE *ficres,double p[],
|
Line 3869 void likelione(FILE *ficres,double p[],
|
else if(mle >=1) |
else if(mle >=1) |
fprintf(fichtm,"\n<br>File of contributions to the likelihood computed with optimized parameters mle = %d.",mle); |
fprintf(fichtm,"\n<br>File of contributions to the likelihood computed with optimized parameters mle = %d.",mle); |
fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk)); |
fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk)); |
|
fprintf(fichtm,"\n<br>Equation of the model: <b>model=1+age+%s</b><br>\n",model); |
|
|
for (k=1; k<= nlstate ; k++) { |
for (k=1; k<= nlstate ; k++) { |
fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Dot's sizes are related to corresponding weight: <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ |
fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Dot's sizes are related to corresponding weight: <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ |
Line 3796 double hessij( double x[], double **hess
|
Line 4171 double hessij( double x[], double **hess
|
kmax=kmax+10; |
kmax=kmax+10; |
} |
} |
if(kmax >=10 || firstime ==1){ |
if(kmax >=10 || firstime ==1){ |
printf("Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; you may increase ftol=%.2e\n",thetai,thetaj, ftol); |
printf("Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; you could increase ftol=%.2e\n",thetai,thetaj, ftol); |
fprintf(ficlog,"Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; you may increase ftol=%.2e\n",thetai,thetaj, ftol); |
fprintf(ficlog,"Warning: directions %d-%d, you are not estimating the Hessian at the exact maximum likelihood; you could increase ftol=%.2e\n",thetai,thetaj, ftol); |
printf("%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4); |
printf("%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4); |
fprintf(ficlog,"%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4); |
fprintf(ficlog,"%d %d k=%d, k1=%.12e k2=%.12e k3=%.12e k4=%.12e delti*k=%.12e deltj*k=%.12e, xi-de*k=%.12e xj-de*k=%.12e res=%.12e k1234=%.12e,k1-2=%.12e,k3-4=%.12e\n",thetai,thetaj,k,k1,k2,k3,k4,delti[thetai]/k,delti[thetaj]/k,x[thetai]-delti[thetai]/k,x[thetaj]-delti[thetaj]/k, res,k1-k2-k3+k4,k1-k2,k3-k4); |
} |
} |
Line 3886 void ludcmp(double **a, int n, int *indx
|
Line 4261 void ludcmp(double **a, int n, int *indx
|
big=0.0; |
big=0.0; |
for (j=1;j<=n;j++) |
for (j=1;j<=n;j++) |
if ((temp=fabs(a[i][j])) > big) big=temp; |
if ((temp=fabs(a[i][j])) > big) big=temp; |
if (big == 0.0) nrerror("Singular matrix in routine ludcmp"); |
if (big == 0.0){ |
|
printf(" Singular Hessian matrix at row %d:\n",i); |
|
for (j=1;j<=n;j++) { |
|
printf(" a[%d][%d]=%f,",i,j,a[i][j]); |
|
fprintf(ficlog," a[%d][%d]=%f,",i,j,a[i][j]); |
|
} |
|
fflush(ficlog); |
|
fclose(ficlog); |
|
nrerror("Singular matrix in routine ludcmp"); |
|
} |
vv[i]=1.0/big; |
vv[i]=1.0/big; |
} |
} |
for (j=1;j<=n;j++) { |
for (j=1;j<=n;j++) { |
Line 3952 void pstamp(FILE *fichier)
|
Line 4336 void pstamp(FILE *fichier)
|
fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); |
fprintf(fichier,"# %s.%s\n#IMaCh version %s, %s\n#%s\n# %s", optionfilefiname,optionfilext,version,copyright, fullversion, strstart); |
} |
} |
|
|
|
|
|
|
/************ Frequencies ********************/ |
/************ Frequencies ********************/ |
void freqsummary(char fileres[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \ |
void freqsummary(char fileres[], double p[], double pstart[], int iagemin, int iagemax, int **s, double **agev, int nlstate, int imx, \ |
int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ |
int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ |
int firstpass, int lastpass, int stepm, int weightopt, char model[]) |
int firstpass, int lastpass, int stepm, int weightopt, char model[]) |
{ /* Some frequencies */ |
{ /* Some frequencies as well as proposing some starting values */ |
|
|
int i, m, jk, j1, bool, z1,j, k, iv; |
int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0, s1=1, s2=1; |
int iind=0, iage=0; |
int iind=0, iage=0; |
int mi; /* Effective wave */ |
int mi; /* Effective wave */ |
int first; |
int first; |
double ***freq; /* Frequencies */ |
double ***freq; /* Frequencies */ |
|
double *x, *y, a=0.,b=0.,r=1., sa=0., sb=0.; /* for regression, y=b+m*x and r is the correlation coefficient */ |
|
int no=0, linreg(int ifi, int ila, int *no, const double x[], const double y[], double* a, double* b, double* r, double* sa, double * sb); |
double *meanq; |
double *meanq; |
double **meanqt; |
double **meanqt; |
double *pp, **prop, *posprop, *pospropt; |
double *pp, **prop, *posprop, *pospropt; |
Line 3971 void freqsummary(char fileres[], int ia
|
Line 4359 void freqsummary(char fileres[], int ia
|
double agebegin, ageend; |
double agebegin, ageend; |
|
|
pp=vector(1,nlstate); |
pp=vector(1,nlstate); |
prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE); |
prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ |
posprop=vector(1,nlstate); /* Counting the number of transition starting from a live state per age */ |
pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ |
pospropt=vector(1,nlstate); /* Counting the number of transition starting from a live state */ |
/* prop=matrix(1,nlstate,iagemin,iagemax+3); */ |
/* prop=matrix(1,nlstate,iagemin,iagemax+3); */ |
Line 3985 void freqsummary(char fileres[], int ia
|
Line 4373 void freqsummary(char fileres[], int ia
|
fprintf(ficlog,"Problem with prevalence resultfile: %s\n", fileresp); |
fprintf(ficlog,"Problem with prevalence resultfile: %s\n", fileresp); |
exit(0); |
exit(0); |
} |
} |
|
|
strcpy(fileresphtm,subdirfext(optionfilefiname,"PHTM_",".htm")); |
strcpy(fileresphtm,subdirfext(optionfilefiname,"PHTM_",".htm")); |
if((ficresphtm=fopen(fileresphtm,"w"))==NULL) { |
if((ficresphtm=fopen(fileresphtm,"w"))==NULL) { |
printf("Problem with prevalence HTM resultfile '%s' with errno='%s'\n",fileresphtm,strerror(errno)); |
printf("Problem with prevalence HTM resultfile '%s' with errno='%s'\n",fileresphtm,strerror(errno)); |
Line 3995 void freqsummary(char fileres[], int ia
|
Line 4383 void freqsummary(char fileres[], int ia
|
} |
} |
else{ |
else{ |
fprintf(ficresphtm,"<html><head>\n<title>IMaCh PHTM_ %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
fprintf(ficresphtm,"<html><head>\n<title>IMaCh PHTM_ %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
<hr size=\"2\" color=\"#EC5E5E\"> \n \ |
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) { |
printf("Problem with frequency table HTM resultfile '%s' with errno='%s'\n",fileresphtmfr,strerror(errno)); |
printf("Problem with frequency table HTM resultfile '%s' with errno='%s'\n",fileresphtmfr,strerror(errno)); |
fprintf(ficlog,"Problem with frequency table HTM resultfile '%s' with errno='%s'\n",fileresphtmfr,strerror(errno)); |
fprintf(ficlog,"Problem with frequency table HTM resultfile '%s' with errno='%s'\n",fileresphtmfr,strerror(errno)); |
fflush(ficlog); |
fflush(ficlog); |
exit(70); |
exit(70); |
} |
} else{ |
else{ |
|
fprintf(ficresphtmfr,"<html><head>\n<title>IMaCh PHTM_Frequency table %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
fprintf(ficresphtmfr,"<html><head>\n<title>IMaCh PHTM_Frequency table %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
<hr size=\"2\" color=\"#EC5E5E\"> \n \ |
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",\ |
fileresphtmfr,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
fileresphtmfr,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
} |
} |
fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions by age at begin of transition </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr); |
fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr); |
|
|
freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+3+AGEMARGE); |
y= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
|
x= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
|
freq= ma3x(-5,nlstate+ndeath,-5,nlstate+ndeath,iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
j1=0; |
j1=0; |
|
|
/* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
/* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
j=cptcoveff; /* Only dummy covariates of the model */ |
j=cptcoveff; /* Only dummy covariates of the model */ |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
|
|
first=1; |
|
|
|
/* Detects if a combination j1 is empty: for a multinomial variable like 3 education levels: |
/* Detects if a combination j1 is empty: for a multinomial variable like 3 education levels: |
reference=low_education V1=0,V2=0 |
reference=low_education V1=0,V2=0 |
med_educ V1=1 V2=0, |
med_educ V1=1 V2=0, |
high_educ V1=0 V2=1 |
high_educ V1=0 V2=1 |
Then V1=1 and V2=1 is a noisy combination that we want to exclude for the list 2**cptcoveff |
Then V1=1 and V2=1 is a noisy combination that we want to exclude for the list 2**cptcoveff |
*/ |
*/ |
|
dateintsum=0; |
|
k2cpt=0; |
|
|
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */ |
if(cptcoveff == 0 ) |
posproptt=0.; |
nl=1; /* Constant and age model only */ |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
else |
scanf("%d", i);*/ |
nl=2; |
for (i=-5; i<=nlstate+ndeath; i++) |
|
for (jk=-5; jk<=nlstate+ndeath; jk++) |
/* if a constant only model, one pass to compute frequency tables and to write it on ficresp */ |
for(m=iagemin; m <= iagemax+3; m++) |
/* Loop on nj=1 or 2 if dummy covariates j!=0 |
freq[i][jk][m]=0; |
* Loop on j1(1 to 2**cptcoveff) covariate combination |
|
* freq[s1][s2][iage] =0. |
for (i=1; i<=nlstate; i++) { |
* Loop on iind |
for(m=iagemin; m <= iagemax+3; m++) |
* ++freq[s1][s2][iage] weighted |
prop[i][m]=0; |
* end iind |
posprop[i]=0; |
* if covariate and j!0 |
pospropt[i]=0; |
* headers Variable on one line |
} |
* endif cov j!=0 |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
* header of frequency table by age |
/* meanq[z1]+=0.; */ |
* Loop on age |
/* for(m=1;m<=lastpass;m++){ */ |
* pp[s1]+=freq[s1][s2][iage] weighted |
/* meanqt[m][z1]=0.; */ |
* pos+=freq[s1][s2][iage] weighted |
/* } */ |
* Loop on s1 initial state |
/* } */ |
* fprintf(ficresp |
|
* end s1 |
dateintsum=0; |
* end age |
k2cpt=0; |
* if j!=0 computes starting values |
/* For that combination of covariate j1, we count and print the frequencies in one pass */ |
* end compute starting values |
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
* end j1 |
bool=1; |
* end nl |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
*/ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
for (nj = 1; nj <= nl; nj++){ /* nj= 1 constant model, nl number of loops. */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
if(nj==1) |
/* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ |
j=0; /* First pass for the constant */ |
/* } */ |
else{ |
for (z1=1; z1<=cptcoveff; z1++) { |
j=cptcoveff; /* Other passes for the covariate values */ |
/* if(Tvaraff[z1] ==-20){ */ |
} |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
first=1; |
/* }else if(Tvaraff[z1] ==-10){ */ |
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on all covariates combination of the model, excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */ |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
posproptt=0.; |
/* }else */ |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ |
scanf("%d", i);*/ |
/* Tests if this individual iind responded to j1 (V4=1 V3=0) */ |
for (i=-5; i<=nlstate+ndeath; i++) |
bool=0; |
for (s2=-5; s2<=nlstate+ndeath; s2++) |
/* 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", |
for(m=iagemin; m <= iagemax+3; m++) |
bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), |
freq[i][s2][m]=0; |
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 (i=1; i<=nlstate; i++) { |
} /* Onlyf fixed */ |
for(m=iagemin; m <= iagemax+3; m++) |
} /* end z1 */ |
prop[i][m]=0; |
} /* cptcovn > 0 */ |
posprop[i]=0; |
} /* end any */ |
pospropt[i]=0; |
if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
} |
/* for(m=firstpass; m<=lastpass; m++){ */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
/* meanq[z1]+=0.; */ |
m=mw[mi][iind]; |
/* for(m=1;m<=lastpass;m++){ */ |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
/* meanqt[m][z1]=0.; */ |
for (z1=1; z1<=cptcoveff; z1++) { |
/* } */ |
if( Fixed[Tmodelind[z1]]==1){ |
/* } */ |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
|
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
/* dateintsum=0; */ |
bool=0; |
/* k2cpt=0; */ |
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
|
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
/* For that combination of covariates j1 (V4=1 V3=0 for example), we count and print the frequencies in one pass */ |
bool=0; |
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
} |
bool=1; |
} |
if(j !=0){ |
} |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
if(bool==1){ |
/* meanq[z1]+=coqvar[Tvar[z1]][iind]; /\* Computes mean of quantitative with selected filter *\/ */ |
/* 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. */ |
for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */ |
agebegin=agev[m][iind]; /* Age at beginning of wave before transition*/ |
/* if(Tvaraff[z1] ==-20){ */ |
ageend=agev[m][iind]+(dh[m][iind])*stepm/YEARM; /* Age at end of wave and transition */ |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
if(m >=firstpass && m <=lastpass){ |
/* }else if(Tvaraff[z1] ==-10){ */ |
k2=anint[m][iind]+(mint[m][iind]/12.); |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
/*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/ |
/* }else */ |
if(agev[m][iind]==0) agev[m][iind]=iagemax+1; /* All ages equal to 0 are in iagemax+1 */ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */ |
if(agev[m][iind]==1) agev[m][iind]=iagemax+2; /* All ages equal to 1 are in iagemax+2 */ |
/* Tests if the value of the covariate z1 for this individual iind responded to combination j1 (V4=1 V3=0) */ |
if (s[m][iind]>0 && s[m][iind]<=nlstate) /* If status at wave m is known and a live state */ |
bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ |
prop[s[m][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
/* 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", |
if (m<lastpass) { |
bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), |
/* if(s[m][iind]==4 && s[m+1][iind]==4) */ |
j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ |
/* 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]); */ |
/* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
if(s[m][iind]==-1) |
} /* Onlyf fixed */ |
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.)); |
} /* end z1 */ |
freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
} /* cptcovn > 0 */ |
/* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */ |
} /* end any */ |
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 j==0 */ |
} |
if (bool==1){ /* We selected an individual iind satisfying combination j1 (V4=1 V3=0) or all fixed covariates */ |
} /* end if between passes */ |
/* for(m=firstpass; m<=lastpass; m++){ */ |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99)) { |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
dateintsum=dateintsum+k2; |
m=mw[mi][iind]; |
k2cpt++; |
if(j!=0){ |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
} |
for (z1=1; z1<=cptcoveff; z1++) { |
} /* end bool 2 */ |
if( Fixed[Tmodelind[z1]]==1){ |
} /* end m */ |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
} /* end bool */ |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality. If covariate's |
} /* end iind = 1 to imx */ |
value is -1, we don't select. It differs from the |
/* prop[s][age] is feeded for any initial and valid live state as well as |
constant and age model which counts them. */ |
freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ |
bool=0; /* not selected */ |
|
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
|
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
/* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
bool=0; |
pstamp(ficresp); |
} |
/* if (ncoveff>0) { */ |
} |
if (cptcoveff>0) { |
} |
fprintf(ficresp, "\n#********** Variable "); |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
} /* end j==0 */ |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
for (z1=1; z1<=cptcoveff; z1++){ |
if(bool==1){ |
fprintf(ficresp, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
/* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] |
fprintf(ficresphtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
and mw[mi+1][iind]. dh depends on stepm. */ |
fprintf(ficresphtmfr, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
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 */ |
fprintf(ficresp, "**********\n#"); |
if(m >=firstpass && m <=lastpass){ |
fprintf(ficresphtm, "**********</h3>\n"); |
k2=anint[m][iind]+(mint[m][iind]/12.); |
fprintf(ficresphtmfr, "**********</h3>\n"); |
/*if ((k2>=dateprev1) && (k2<=dateprev2)) {*/ |
fprintf(ficlog, "\n#********** Variable "); |
if(agev[m][iind]==0) agev[m][iind]=iagemax+1; /* All ages equal to 0 are in iagemax+1 */ |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficlog, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
if(agev[m][iind]==1) agev[m][iind]=iagemax+2; /* All ages equal to 1 are in iagemax+2 */ |
fprintf(ficlog, "**********\n"); |
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 */ |
fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
if (m<lastpass) { |
for(i=1; i<=nlstate;i++) { |
/* if(s[m][iind]==4 && s[m+1][iind]==4) */ |
fprintf(ficresp, " Age Prev(%d) N(%d) N",i,i); |
/* 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]); */ |
fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
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.)); |
fprintf(ficresp, "\n"); |
freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
fprintf(ficresphtm, "\n"); |
/* if((int)agev[m][iind] == 55) */ |
|
/* printf("j=%d, j1=%d Age %d, iind=%d, num=%09ld m=%d\n",j,j1,(int)agev[m][iind],iind, num[iind],m); */ |
/* Header of frequency table by age */ |
/* freq[s[m][iind]][s[m+1][iind]][(int)((agebegin+ageend)/2.)] += weight[iind]; */ |
fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">"); |
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 */ |
fprintf(ficresphtmfr,"<th>Age</th> "); |
} |
for(jk=-1; jk <=nlstate+ndeath; jk++){ |
} /* end if between passes */ |
for(m=-1; m <=nlstate+ndeath; m++){ |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) { |
if(jk!=0 && m!=0) |
dateintsum=dateintsum+k2; /* on all covariates ?*/ |
fprintf(ficresphtmfr,"<th>%d%d</th> ",jk,m); |
k2cpt++; |
} |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
} |
} |
fprintf(ficresphtmfr, "\n"); |
}else{ |
|
bool=1; |
/* For each age */ |
}/* end bool 2 */ |
for(iage=iagemin; iage <= iagemax+3; iage++){ |
} /* end m */ |
fprintf(ficresphtm,"<tr>"); |
} /* end bool */ |
if(iage==iagemax+1){ |
} /* end iind = 1 to imx */ |
fprintf(ficlog,"1"); |
/* prop[s][age] is feeded for any initial and valid live state as well as |
fprintf(ficresphtmfr,"<tr><th>0</th> "); |
freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ |
}else if(iage==iagemax+2){ |
|
fprintf(ficlog,"0"); |
|
fprintf(ficresphtmfr,"<tr><th>Unknown</th> "); |
/* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
}else if(iage==iagemax+3){ |
if(cptcoveff==0 && nj==1) /* no covariate and first pass */ |
fprintf(ficlog,"Total"); |
pstamp(ficresp); |
fprintf(ficresphtmfr,"<tr><th>Total</th> "); |
if (cptcoveff>0 && j!=0){ |
}else{ |
pstamp(ficresp); |
if(first==1){ |
printf( "\n#********** Variable "); |
first=0; |
fprintf(ficresp, "\n#********** Variable "); |
printf("See log file for details...\n"); |
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
} |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage); |
fprintf(ficlog, "\n#********** Variable "); |
fprintf(ficlog,"Age %d", iage); |
for (z1=1; z1<=cptcoveff; z1++){ |
} |
if(!FixedV[Tvaraff[z1]]){ |
for(jk=1; jk <=nlstate ; jk++){ |
printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
for(m=-1, pp[jk]=0; m <=nlstate+ndeath ; m++) |
fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
pp[jk] += freq[jk][m][iage]; |
fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
} |
fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
for(jk=1; jk <=nlstate ; jk++){ |
fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
for(m=-1, pos=0; m <=0 ; m++) |
}else{ |
pos += freq[jk][m][iage]; |
printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
if(pp[jk]>=1.e-10){ |
fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
if(first==1){ |
fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
printf(" %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); |
fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
} |
fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",jk,pp[jk],jk,100*pos/pp[jk]); |
} |
}else{ |
} |
if(first==1) |
printf( "**********\n#"); |
printf(" %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); |
fprintf(ficresp, "**********\n#"); |
fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",jk,pp[jk],jk); |
fprintf(ficresphtm, "**********</h3>\n"); |
} |
fprintf(ficresphtmfr, "**********</h3>\n"); |
} |
fprintf(ficlog, "**********\n"); |
|
} |
for(jk=1; jk <=nlstate ; jk++){ |
fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
/* posprop[jk]=0; */ |
if((cptcoveff==0 && nj==1)|| nj==2 ) /* no covariate and first pass */ |
for(m=0, pp[jk]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */ |
fprintf(ficresp, " Age"); |
pp[jk] += freq[jk][m][iage]; |
if(nj==2) for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, " V%d=%d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
} /* pp[jk] is the total number of transitions starting from state jk and any ending status until this age */ |
for(i=1; i<=nlstate;i++) { |
|
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp," Prev(%d) N(%d) N ",i,i); |
for(jk=1,pos=0, pospropta=0.; jk <=nlstate ; jk++){ |
fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
pos += pp[jk]; /* pos is the total number of transitions until this age */ |
} |
posprop[jk] += prop[jk][iage]; /* prop is the number of transitions from a live state |
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp, "\n"); |
from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ |
fprintf(ficresphtm, "\n"); |
pospropta += prop[jk][iage]; /* prop is the number of transitions from a live state |
|
from jk at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ |
/* Header of frequency table by age */ |
} |
fprintf(ficresphtmfr,"<table style=\"text-align:center; border: 1px solid\">"); |
for(jk=1; jk <=nlstate ; jk++){ |
fprintf(ficresphtmfr,"<th>Age</th> "); |
if(pos>=1.e-5){ |
for(s2=-1; s2 <=nlstate+ndeath; s2++){ |
if(first==1) |
for(m=-1; m <=nlstate+ndeath; m++){ |
printf(" %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); |
if(s2!=0 && m!=0) |
fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",jk,pp[jk],jk,100*pp[jk]/pos); |
fprintf(ficresphtmfr,"<th>%d%d</th> ",s2,m); |
}else{ |
} |
if(first==1) |
} |
printf(" %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); |
fprintf(ficresphtmfr, "\n"); |
fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",jk,pp[jk],jk); |
|
} |
/* For each age */ |
if( iage <= iagemax){ |
for(iage=iagemin; iage <= iagemax+3; iage++){ |
if(pos>=1.e-5){ |
fprintf(ficresphtm,"<tr>"); |
fprintf(ficresp," %d %.5f %.0f %.0f",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); |
if(iage==iagemax+1){ |
fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[jk][iage]/pospropta, prop[jk][iage],pospropta); |
fprintf(ficlog,"1"); |
/*probs[iage][jk][j1]= pp[jk]/pos;*/ |
fprintf(ficresphtmfr,"<tr><th>0</th> "); |
/*printf("\niage=%d jk=%d j1=%d %.5f %.0f %.0f %f",iage,jk,j1,pp[jk]/pos, pp[jk],pos,probs[iage][jk][j1]);*/ |
}else if(iage==iagemax+2){ |
} |
fprintf(ficlog,"0"); |
else{ |
fprintf(ficresphtmfr,"<tr><th>Unknown</th> "); |
fprintf(ficresp," %d NaNq %.0f %.0f",iage,prop[jk][iage],pospropta); |
}else if(iage==iagemax+3){ |
fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[jk][iage],pospropta); |
fprintf(ficlog,"Total"); |
} |
fprintf(ficresphtmfr,"<tr><th>Total</th> "); |
} |
}else{ |
pospropt[jk] +=posprop[jk]; |
if(first==1){ |
} /* end loop jk */ |
first=0; |
/* pospropt=0.; */ |
printf("See log file for details...\n"); |
for(jk=-1; jk <=nlstate+ndeath; jk++){ |
} |
for(m=-1; m <=nlstate+ndeath; m++){ |
fprintf(ficresphtmfr,"<tr><th>%d</th> ",iage); |
if(freq[jk][m][iage] !=0 ) { /* minimizing output */ |
fprintf(ficlog,"Age %d", iage); |
if(first==1){ |
} |
printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); |
for(s1=1; s1 <=nlstate ; s1++){ |
} |
for(m=-1, pp[s1]=0; m <=nlstate+ndeath ; m++) |
fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]); |
pp[s1] += freq[s1][m][iage]; |
} |
} |
if(jk!=0 && m!=0) |
for(s1=1; s1 <=nlstate ; s1++){ |
fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[jk][m][iage]); |
for(m=-1, pos=0; m <=0 ; m++) |
} |
pos += freq[s1][m][iage]; |
} /* end loop jk */ |
if(pp[s1]>=1.e-10){ |
posproptt=0.; |
if(first==1){ |
for(jk=1; jk <=nlstate; jk++){ |
printf(" %d.=%.0f loss[%d]=%.1f%%",s1,pp[s1],s1,100*pos/pp[s1]); |
posproptt += pospropt[jk]; |
} |
} |
fprintf(ficlog," %d.=%.0f loss[%d]=%.1f%%",s1,pp[s1],s1,100*pos/pp[s1]); |
fprintf(ficresphtmfr,"</tr>\n "); |
}else{ |
if(iage <= iagemax){ |
if(first==1) |
fprintf(ficresp,"\n"); |
printf(" %d.=%.0f loss[%d]=NaNQ%%",s1,pp[s1],s1); |
fprintf(ficresphtm,"</tr>\n"); |
fprintf(ficlog," %d.=%.0f loss[%d]=NaNQ%%",s1,pp[s1],s1); |
|
} |
|
} |
|
|
|
for(s1=1; s1 <=nlstate ; s1++){ |
|
/* posprop[s1]=0; */ |
|
for(m=0, pp[s1]=0; m <=nlstate+ndeath; m++)/* Summing on all ages */ |
|
pp[s1] += freq[s1][m][iage]; |
|
} /* pp[s1] is the total number of transitions starting from state s1 and any ending status until this age */ |
|
|
|
for(s1=1,pos=0, pospropta=0.; s1 <=nlstate ; s1++){ |
|
pos += pp[s1]; /* pos is the total number of transitions until this age */ |
|
posprop[s1] += prop[s1][iage]; /* prop is the number of transitions from a live state |
|
from s1 at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ |
|
pospropta += prop[s1][iage]; /* prop is the number of transitions from a live state |
|
from s1 at age iage prop[s[m][iind]][(int)agev[m][iind]] += weight[iind] */ |
|
} |
|
|
|
/* Writing ficresp */ |
|
if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
|
if( iage <= iagemax){ |
|
fprintf(ficresp," %d",iage); |
|
} |
|
}else if( nj==2){ |
|
if( iage <= iagemax){ |
|
fprintf(ficresp," %d",iage); |
|
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, " %d %d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
|
} |
|
} |
|
for(s1=1; s1 <=nlstate ; s1++){ |
|
if(pos>=1.e-5){ |
|
if(first==1) |
|
printf(" %d.=%.0f prev[%d]=%.1f%%",s1,pp[s1],s1,100*pp[s1]/pos); |
|
fprintf(ficlog," %d.=%.0f prev[%d]=%.1f%%",s1,pp[s1],s1,100*pp[s1]/pos); |
|
}else{ |
|
if(first==1) |
|
printf(" %d.=%.0f prev[%d]=NaNQ%%",s1,pp[s1],s1); |
|
fprintf(ficlog," %d.=%.0f prev[%d]=NaNQ%%",s1,pp[s1],s1); |
|
} |
|
if( iage <= iagemax){ |
|
if(pos>=1.e-5){ |
|
if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
|
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
|
}else if( nj==2){ |
|
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
|
} |
|
fprintf(ficresphtm,"<th>%d</th><td>%.5f</td><td>%.0f</td><td>%.0f</td>",iage,prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
|
/*probs[iage][s1][j1]= pp[s1]/pos;*/ |
|
/*printf("\niage=%d s1=%d j1=%d %.5f %.0f %.0f %f",iage,s1,j1,pp[s1]/pos, pp[s1],pos,probs[iage][s1][j1]);*/ |
|
} else{ |
|
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp," NaNq %.0f %.0f",prop[s1][iage],pospropta); |
|
fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[s1][iage],pospropta); |
|
} |
|
} |
|
pospropt[s1] +=posprop[s1]; |
|
} /* end loop s1 */ |
|
/* pospropt=0.; */ |
|
for(s1=-1; s1 <=nlstate+ndeath; s1++){ |
|
for(m=-1; m <=nlstate+ndeath; m++){ |
|
if(freq[s1][m][iage] !=0 ) { /* minimizing output */ |
|
if(first==1){ |
|
printf(" %d%d=%.0f",s1,m,freq[s1][m][iage]); |
|
} |
|
/* printf(" %d%d=%.0f",s1,m,freq[s1][m][iage]); */ |
|
fprintf(ficlog," %d%d=%.0f",s1,m,freq[s1][m][iage]); |
|
} |
|
if(s1!=0 && m!=0) |
|
fprintf(ficresphtmfr,"<td>%.0f</td> ",freq[s1][m][iage]); |
|
} |
|
} /* end loop s1 */ |
|
posproptt=0.; |
|
for(s1=1; s1 <=nlstate; s1++){ |
|
posproptt += pospropt[s1]; |
|
} |
|
fprintf(ficresphtmfr,"</tr>\n "); |
|
fprintf(ficresphtm,"</tr>\n"); |
|
if((cptcoveff==0 && nj==1)|| nj==2 ) { |
|
if(iage <= iagemax) |
|
fprintf(ficresp,"\n"); |
|
} |
|
if(first==1) |
|
printf("Others in log...\n"); |
|
fprintf(ficlog,"\n"); |
|
} /* end loop age iage */ |
|
|
|
fprintf(ficresphtm,"<tr><th>Tot</th>"); |
|
for(s1=1; s1 <=nlstate ; s1++){ |
|
if(posproptt < 1.e-5){ |
|
fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[s1],posproptt); |
|
}else{ |
|
fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[s1]/posproptt,pospropt[s1],posproptt); |
|
} |
} |
} |
if(first==1) |
fprintf(ficresphtm,"</tr>\n"); |
printf("Others in log...\n"); |
fprintf(ficresphtm,"</table>\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficresphtmfr,"</table>\n"); |
} /* end loop age iage */ |
|
fprintf(ficresphtm,"<tr><th>Tot</th>"); |
|
for(jk=1; jk <=nlstate ; jk++){ |
|
if(posproptt < 1.e-5){ |
if(posproptt < 1.e-5){ |
fprintf(ficresphtm,"<td>Nanq</td><td>%.0f</td><td>%.0f</td>",pospropt[jk],posproptt); |
fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); |
|
fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); |
|
fprintf(ficlog,"# This combination (%d) is not valid and no result will be produced\n",j1); |
|
printf("# This combination (%d) is not valid and no result will be produced\n",j1); |
|
invalidvarcomb[j1]=1; |
}else{ |
}else{ |
fprintf(ficresphtm,"<td>%.5f</td><td>%.0f</td><td>%.0f</td>",pospropt[jk]/posproptt,pospropt[jk],posproptt); |
fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1); |
|
invalidvarcomb[j1]=0; |
} |
} |
} |
fprintf(ficresphtmfr,"</table>\n"); |
fprintf(ficresphtm,"</tr>\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficresphtm,"</table>\n"); |
if(j!=0){ |
fprintf(ficresphtmfr,"</table>\n"); |
printf("#Freqsummary: Starting values for combination j1=%d:\n", j1); |
if(posproptt < 1.e-5){ |
for(i=1,s1=1; i <=nlstate; i++){ |
fprintf(ficresphtm,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); |
for(k=1; k <=(nlstate+ndeath); k++){ |
fprintf(ficresphtmfr,"\n <p><b> This combination (%d) is not valid and no result will be produced</b></p>",j1); |
if (k != i) { |
fprintf(ficres,"\n This combination (%d) is not valid and no result will be produced\n\n",j1); |
for(jj=1; jj <=ncovmodel; jj++){ /* For counting s1 */ |
invalidvarcomb[j1]=1; |
if(jj==1){ /* Constant case (in fact cste + age) */ |
}else{ |
if(j1==1){ /* All dummy covariates to zero */ |
fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1); |
freq[i][k][iagemax+4]=freq[i][k][iagemax+3]; /* Stores case 0 0 0 */ |
invalidvarcomb[j1]=0; |
freq[i][i][iagemax+4]=freq[i][i][iagemax+3]; /* Stores case 0 0 0 */ |
} |
printf("%d%d ",i,k); |
fprintf(ficresphtmfr,"</table>\n"); |
fprintf(ficlog,"%d%d ",i,k); |
} /* end selected combination of covariate j1 */ |
printf("%12.7f ln(%.0f/%.0f)= %f, OR=%f sd=%f \n",p[s1],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]),freq[i][k][iagemax+3]/freq[i][i][iagemax+3], sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3])); |
dateintmean=dateintsum/k2cpt; |
fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f \n",p[s1],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); |
|
pstart[s1]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]); |
fclose(ficresp); |
} |
fclose(ficresphtm); |
}else if((j1==1) && (jj==2 || nagesqr==1)){ /* age or age*age parameter without covariate V4*age (to be done later) */ |
fclose(ficresphtmfr); |
for(iage=iagemin; iage <= iagemax+3; iage++){ |
free_vector(meanq,1,nqfveff); |
x[iage]= (double)iage; |
free_matrix(meanqt,1,lastpass,1,nqtveff); |
y[iage]= log(freq[i][k][iage]/freq[i][i][iage]); |
free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+3+AGEMARGE); |
/* printf("i=%d, k=%d, s1=%d, j1=%d, jj=%d, y[%d]=%f\n",i,k,s1,j1,jj, iage, y[iage]); */ |
free_vector(pospropt,1,nlstate); |
} |
free_vector(posprop,1,nlstate); |
/* Some are not finite, but linreg will ignore these ages */ |
free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+3+AGEMARGE); |
no=0; |
free_vector(pp,1,nlstate); |
linreg(iagemin,iagemax,&no,x,y,&a,&b,&r, &sa, &sb ); /* y= a+b*x with standard errors */ |
/* End of freqsummary */ |
pstart[s1]=b; |
} |
pstart[s1-1]=a; |
|
}else if( j1!=1 && (j1==2 || (log(j1-1.)/log(2.)-(int)(log(j1-1.)/log(2.))) <0.010) && ( TvarsDind[(int)(log(j1-1.)/log(2.))+1]+2+nagesqr == jj) && Dummy[jj-2-nagesqr]==0){ /* We want only if the position, jj, in model corresponds to unique covariate equal to 1 in j1 combination */ |
|
printf("j1=%d, jj=%d, (int)(log(j1-1.)/log(2.))+1=%d, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(int)(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]); |
|
printf("j1=%d, jj=%d, (log(j1-1.)/log(2.))+1=%f, TvarsDind[(int)(log(j1-1.)/log(2.))+1]=%d\n",j1, jj,(log(j1-1.)/log(2.))+1,TvarsDind[(int)(log(j1-1.)/log(2.))+1]); |
|
pstart[s1]= log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])); |
|
printf("%d%d ",i,k); |
|
fprintf(ficlog,"%d%d ",i,k); |
|
printf("s1=%d,i=%d,k=%d,p[%d]=%12.7f ln((%.0f/%.0f)/(%.0f/%.0f))= %f, OR=%f sd=%f \n",s1,i,k,s1,p[s1],freq[i][k][iagemax+3],freq[i][i][iagemax+3],freq[i][k][iagemax+4],freq[i][i][iagemax+4], log((freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4])),(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])/(freq[i][k][iagemax+4]/freq[i][i][iagemax+4]), sqrt(1/freq[i][k][iagemax+3]+1/freq[i][i][iagemax+3]+1/freq[i][k][iagemax+4]+1/freq[i][i][iagemax+4])); |
|
}else{ /* Other cases, like quantitative fixed or varying covariates */ |
|
; |
|
} |
|
/* printf("%12.7f )", param[i][jj][k]); */ |
|
/* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */ |
|
s1++; |
|
} /* end jj */ |
|
} /* end k!= i */ |
|
} /* end k */ |
|
} /* end i, s1 */ |
|
} /* end j !=0 */ |
|
} /* end selected combination of covariate j1 */ |
|
if(j==0){ /* We can estimate starting values from the occurences in each case */ |
|
printf("#Freqsummary: Starting values for the constants:\n"); |
|
fprintf(ficlog,"\n"); |
|
for(i=1,s1=1; i <=nlstate; i++){ |
|
for(k=1; k <=(nlstate+ndeath); k++){ |
|
if (k != i) { |
|
printf("%d%d ",i,k); |
|
fprintf(ficlog,"%d%d ",i,k); |
|
for(jj=1; jj <=ncovmodel; jj++){ |
|
pstart[s1]=p[s1]; /* Setting pstart to p values by default */ |
|
if(jj==1){ /* Age has to be done */ |
|
pstart[s1]= log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3]); |
|
printf("%12.7f ln(%.0f/%.0f)= %12.7f ",p[s1],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); |
|
fprintf(ficlog,"%12.7f ln(%.0f/%.0f)= %12.7f ",p[s1],freq[i][k][iagemax+3],freq[i][i][iagemax+3], log(freq[i][k][iagemax+3]/freq[i][i][iagemax+3])); |
|
} |
|
/* printf("%12.7f )", param[i][jj][k]); */ |
|
/* fprintf(ficlog,"%12.7f )", param[i][jj][k]); */ |
|
s1++; |
|
} |
|
printf("\n"); |
|
fprintf(ficlog,"\n"); |
|
} |
|
} |
|
} |
|
printf("#Freqsummary\n"); |
|
fprintf(ficlog,"\n"); |
|
for(s1=-1; s1 <=nlstate+ndeath; s1++){ |
|
for(s2=-1; s2 <=nlstate+ndeath; s2++){ |
|
/* param[i]|j][k]= freq[s1][s2][iagemax+3] */ |
|
printf(" %d%d=%.0f",s1,s2,freq[s1][s2][iagemax+3]); |
|
fprintf(ficlog," %d%d=%.0f",s1,s2,freq[s1][s2][iagemax+3]); |
|
/* if(freq[s1][s2][iage] !=0 ) { /\* minimizing output *\/ */ |
|
/* printf(" %d%d=%.0f",s1,s2,freq[s1][s2][iagemax+3]); */ |
|
/* fprintf(ficlog," %d%d=%.0f",s1,s2,freq[s1][s2][iagemax+3]); */ |
|
/* } */ |
|
} |
|
} /* end loop s1 */ |
|
|
|
printf("\n"); |
|
fprintf(ficlog,"\n"); |
|
} /* end j=0 */ |
|
} /* end j */ |
|
|
|
if(mle == -2){ /* We want to use these values as starting values */ |
|
for(i=1, jk=1; i <=nlstate; i++){ |
|
for(j=1; j <=nlstate+ndeath; j++){ |
|
if(j!=i){ |
|
/*ca[0]= k+'a'-1;ca[1]='\0';*/ |
|
printf("%1d%1d",i,j); |
|
fprintf(ficparo,"%1d%1d",i,j); |
|
for(k=1; k<=ncovmodel;k++){ |
|
/* printf(" %lf",param[i][j][k]); */ |
|
/* fprintf(ficparo," %lf",param[i][j][k]); */ |
|
p[jk]=pstart[jk]; |
|
printf(" %f ",pstart[jk]); |
|
fprintf(ficparo," %f ",pstart[jk]); |
|
jk++; |
|
} |
|
printf("\n"); |
|
fprintf(ficparo,"\n"); |
|
} |
|
} |
|
} |
|
} /* end mle=-2 */ |
|
dateintmean=dateintsum/k2cpt; |
|
|
|
fclose(ficresp); |
|
fclose(ficresphtm); |
|
fclose(ficresphtmfr); |
|
free_vector(meanq,1,nqfveff); |
|
free_matrix(meanqt,1,lastpass,1,nqtveff); |
|
free_vector(x, iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
|
free_vector(y, iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
|
free_ma3x(freq,-5,nlstate+ndeath,-5,nlstate+ndeath, iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
|
free_vector(pospropt,1,nlstate); |
|
free_vector(posprop,1,nlstate); |
|
free_matrix(prop,1,nlstate,iagemin-AGEMARGE, iagemax+4+AGEMARGE); |
|
free_vector(pp,1,nlstate); |
|
/* End of freqsummary */ |
|
} |
|
|
|
/* Simple linear regression */ |
|
int linreg(int ifi, int ila, int *no, const double x[], const double y[], double* a, double* b, double* r, double* sa, double * sb) { |
|
|
|
/* y=a+bx regression */ |
|
double sumx = 0.0; /* sum of x */ |
|
double sumx2 = 0.0; /* sum of x**2 */ |
|
double sumxy = 0.0; /* sum of x * y */ |
|
double sumy = 0.0; /* sum of y */ |
|
double sumy2 = 0.0; /* sum of y**2 */ |
|
double sume2 = 0.0; /* sum of square or residuals */ |
|
double yhat; |
|
|
|
double denom=0; |
|
int i; |
|
int ne=*no; |
|
|
|
for ( i=ifi, ne=0;i<=ila;i++) { |
|
if(!isfinite(x[i]) || !isfinite(y[i])){ |
|
/* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */ |
|
continue; |
|
} |
|
ne=ne+1; |
|
sumx += x[i]; |
|
sumx2 += x[i]*x[i]; |
|
sumxy += x[i] * y[i]; |
|
sumy += y[i]; |
|
sumy2 += y[i]*y[i]; |
|
denom = (ne * sumx2 - sumx*sumx); |
|
/* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */ |
|
} |
|
|
|
denom = (ne * sumx2 - sumx*sumx); |
|
if (denom == 0) { |
|
// vertical, slope m is infinity |
|
*b = INFINITY; |
|
*a = 0; |
|
if (r) *r = 0; |
|
return 1; |
|
} |
|
|
|
*b = (ne * sumxy - sumx * sumy) / denom; |
|
*a = (sumy * sumx2 - sumx * sumxy) / denom; |
|
if (r!=NULL) { |
|
*r = (sumxy - sumx * sumy / ne) / /* compute correlation coeff */ |
|
sqrt((sumx2 - sumx*sumx/ne) * |
|
(sumy2 - sumy*sumy/ne)); |
|
} |
|
*no=ne; |
|
for ( i=ifi, ne=0;i<=ila;i++) { |
|
if(!isfinite(x[i]) || !isfinite(y[i])){ |
|
/* printf(" x[%d]=%f, y[%d]=%f\n",i,x[i],i,y[i]); */ |
|
continue; |
|
} |
|
ne=ne+1; |
|
yhat = y[i] - *a -*b* x[i]; |
|
sume2 += yhat * yhat ; |
|
|
|
denom = (ne * sumx2 - sumx*sumx); |
|
/* printf("ne=%d, i=%d,x[%d]=%f, y[%d]=%f sumx=%f, sumx2=%f, sumxy=%f, sumy=%f, sumy2=%f, denom=%f\n",ne,i,i,x[i],i,y[i], sumx, sumx2,sumxy, sumy, sumy2,denom); */ |
|
} |
|
*sb = sqrt(sume2/(double)(ne-2)/(sumx2 - sumx * sumx /(double)ne)); |
|
*sa= *sb * sqrt(sumx2/ne); |
|
|
|
return 0; |
|
} |
|
|
/************ Prevalence ********************/ |
/************ Prevalence ********************/ |
void prevalence(double ***probs, double agemin, double agemax, int **s, double **agev, int nlstate, int imx, int *Tvar, int **nbcode, int *ncodemax,double **mint,double **anint, double dateprev1,double dateprev2, int firstpass, int lastpass) |
void prevalence(double ***probs, double agemin, double agemax, int **s, double **agev, int nlstate, int imx, int *Tvar, int **nbcode, int *ncodemax,double **mint,double **anint, double dateprev1,double dateprev2, int firstpass, int lastpass) |
Line 4333 void prevalence(double ***probs, double
|
Line 4981 void prevalence(double ***probs, double
|
iagemin= (int) agemin; |
iagemin= (int) agemin; |
iagemax= (int) agemax; |
iagemax= (int) agemax; |
/*pp=vector(1,nlstate);*/ |
/*pp=vector(1,nlstate);*/ |
prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+3+AGEMARGE); |
prop=matrix(1,nlstate,iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
/* freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/ |
/* freq=ma3x(-1,nlstate+ndeath,-1,nlstate+ndeath,iagemin,iagemax+3);*/ |
j1=0; |
j1=0; |
|
|
Line 4343 void prevalence(double ***probs, double
|
Line 4991 void prevalence(double ***probs, double
|
first=1; |
first=1; |
for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */ |
for(j1=1; j1<= (int) pow(2,cptcoveff);j1++){ /* For each combination of covariate */ |
for (i=1; i<=nlstate; i++) |
for (i=1; i<=nlstate; i++) |
for(iage=iagemin-AGEMARGE; iage <= iagemax+3+AGEMARGE; iage++) |
for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++) |
prop[i][iage]=0.0; |
prop[i][iage]=0.0; |
printf("Prevalence combination of varying and fixed dummies %d\n",j1); |
printf("Prevalence combination of varying and fixed dummies %d\n",j1); |
/* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */ |
/* fprintf(ficlog," V%d=%d ",Tvaraff[j1],nbcode[Tvaraff[j1]][codtabm(k,j1)]); */ |
Line 4374 void prevalence(double ***probs, double
|
Line 5022 void prevalence(double ***probs, double
|
if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */ |
if ((y2>=dateprev1) && (y2<=dateprev2)) { /* Here is the main selection (fractional years) */ |
if(agev[m][i]==0) agev[m][i]=iagemax+1; |
if(agev[m][i]==0) agev[m][i]=iagemax+1; |
if(agev[m][i]==1) agev[m][i]=iagemax+2; |
if(agev[m][i]==1) agev[m][i]=iagemax+2; |
if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+3+AGEMARGE){ |
if((int)agev[m][i] <iagemin-AGEMARGE || (int)agev[m][i] >iagemax+4+AGEMARGE){ |
printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); |
printf("Error on individual # %d agev[m][i]=%f <%d-%d or > %d+3+%d m=%d; either change agemin or agemax or fix data\n",i, agev[m][i],iagemin,AGEMARGE, iagemax,AGEMARGE,m); |
exit(1); |
exit(1); |
} |
} |
Line 4400 void prevalence(double ***probs, double
|
Line 5048 void prevalence(double ***probs, double
|
} else{ |
} else{ |
if(first==1){ |
if(first==1){ |
first=0; |
first=0; |
printf("Warning Observed prevalence probs[%d][%d][%d]=%lf because of lack of cases\nSee others in log file...\n",jk,i,j1,probs[i][jk][j1]); |
printf("Warning Observed prevalence doesn't sum to 1 for state %d: probs[%d][%d][%d]=%lf because of lack of cases\nSee others in log file...\n",jk,i,jk, j1,probs[i][jk][j1]); |
|
fprintf(ficlog,"Warning Observed prevalence doesn't sum to 1 for state %d: probs[%d][%d][%d]=%lf because of lack of cases\nSee others in log file...\n",jk,i,jk, j1,probs[i][jk][j1]); |
|
}else{ |
|
fprintf(ficlog,"Warning Observed prevalence doesn't sum to 1 for state %d: probs[%d][%d][%d]=%lf because of lack of cases\nSee others in log file...\n",jk,i,jk, j1,probs[i][jk][j1]); |
} |
} |
} |
} |
} |
} |
Line 4411 void prevalence(double ***probs, double
|
Line 5062 void prevalence(double ***probs, double
|
|
|
/* free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/ |
/* free_ma3x(freq,-1,nlstate+ndeath,-1,nlstate+ndeath, iagemin, iagemax+3);*/ |
/*free_vector(pp,1,nlstate);*/ |
/*free_vector(pp,1,nlstate);*/ |
free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+3+AGEMARGE); |
free_matrix(prop,1,nlstate, iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
} /* End of prevalence */ |
} /* End of prevalence */ |
|
|
/************* Waves Concatenation ***************/ |
/************* Waves Concatenation ***************/ |
Line 4460 void concatwav(int wav[], int **dh, int
|
Line 5111 void concatwav(int wav[], int **dh, int
|
#else |
#else |
if(s[m][i]==-1 && (int) andc[i] == 9999 && (int)anint[m][i] != 9999){ |
if(s[m][i]==-1 && (int) andc[i] == 9999 && (int)anint[m][i] != 9999){ |
if(firsthree == 0){ |
if(firsthree == 0){ |
printf("Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as pi. .\nOthers in log file only\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m); |
printf("Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p%d%d .\nOthers in log file only\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
firsthree=1; |
firsthree=1; |
} |
} |
fprintf(ficlog,"Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as pi. .\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m); |
fprintf(ficlog,"Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p%d%d .\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
mw[++mi][i]=m; |
mw[++mi][i]=m; |
mli=m; |
mli=m; |
} |
} |
Line 4490 void concatwav(int wav[], int **dh, int
|
Line 5141 void concatwav(int wav[], int **dh, int
|
/* if(mi==0) never been interviewed correctly before death */ |
/* if(mi==0) never been interviewed correctly before death */ |
/* Only death is a correct wave */ |
/* Only death is a correct wave */ |
mw[mi][i]=m; |
mw[mi][i]=m; |
} |
} /* else not in a death state */ |
#ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE |
#ifndef DISPATCHINGKNOWNDEATHAFTERLASTWAVE |
else if ((int) andc[i] != 9999) { /* Status is negative. A death occured after lastpass, we can't take it into account because of potential bias */ |
else if ((int) andc[i] != 9999) { /* Date of death is known */ |
/* m++; */ |
|
/* mi++; */ |
|
/* s[m][i]=nlstate+1; /\* We are setting the status to the last of non live state *\/ */ |
|
/* mw[mi][i]=m; */ |
|
if ((int)anint[m][i]!= 9999) { /* date of last interview is known */ |
if ((int)anint[m][i]!= 9999) { /* date of last interview is known */ |
if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */ |
if((andc[i]+moisdc[i]/12.) <=(anint[m][i]+mint[m][i]/12.)){ /* death occured before last wave and status should have been death instead of -1 */ |
nbwarn++; |
nbwarn++; |
Line 4509 void concatwav(int wav[], int **dh, int
|
Line 5156 void concatwav(int wav[], int **dh, int
|
}else{ /* Death occured afer last wave potential bias */ |
}else{ /* Death occured afer last wave potential bias */ |
nberr++; |
nberr++; |
if(firstwo==0){ |
if(firstwo==0){ |
printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
printf("Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
firstwo=1; |
firstwo=1; |
} |
} |
fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
fprintf(ficlog,"Error! Death for individual %ld line=%d occurred at %d/%d after last wave %d interviewed at %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood. Please add a new fictive wave at the date of last vital status scan, with a dead status or alive but unknown state status (-1). See documentation\n\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
} |
} |
}else{ /* end date of interview is known */ |
}else{ /* if date of interview is unknown */ |
/* death is known but not confirmed by death status at any wave */ |
/* death is known but not confirmed by death status at any wave */ |
if(firstfour==0){ |
if(firstfour==0){ |
printf("Error! Death for individual %ld line=%d occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
printf("Error! Death for individual %ld line=%d occurred %d/%d but not confirmed by any death status for any wave, including last wave %d at unknown date %d/%d. Potential bias if other individuals are still alive at this date but ignored. This case (%d)/wave (%d) is skipped, no contribution to likelihood.\nOthers in log file only\n",num[i],i,(int) moisdc[i], (int) andc[i], lastpass,(int)mint[m][i],(int)anint[m][i], i,m ); |
Line 4545 void concatwav(int wav[], int **dh, int
|
Line 5192 void concatwav(int wav[], int **dh, int
|
if (stepm <=0) |
if (stepm <=0) |
dh[mi][i]=1; |
dh[mi][i]=1; |
else{ |
else{ |
if (s[mw[mi+1][i]][i] > nlstate) { /* A death */ |
if (s[mw[mi+1][i]][i] > nlstate) { /* A death, but what if date is unknown? */ |
if (agedc[i] < 2*AGESUP) { |
if (agedc[i] < 2*AGESUP) { |
j= rint(agedc[i]*12-agev[mw[mi][i]][i]*12); |
j= rint(agedc[i]*12-agev[mw[mi][i]][i]*12); |
if(j==0) j=1; /* Survives at least one month after exam */ |
if(j==0) j=1; /* Survives at least one month after exam */ |
Line 4632 void concatwav(int wav[], int **dh, int
|
Line 5279 void concatwav(int wav[], int **dh, int
|
|
|
/*********** Tricode ****************************/ |
/*********** Tricode ****************************/ |
void tricode(int *cptcov, int *Tvar, int **nbcode, int imx, int *Ndum) |
void tricode(int *cptcov, int *Tvar, int **nbcode, int imx, int *Ndum) |
{ |
{ |
/**< Uses cptcovn+2*cptcovprod as the number of covariates */ |
/**< Uses cptcovn+2*cptcovprod as the number of covariates */ |
/* Tvar[i]=atoi(stre); find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 |
/* Tvar[i]=atoi(stre); find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 |
* Boring subroutine which should only output nbcode[Tvar[j]][k] |
* Boring subroutine which should only output nbcode[Tvar[j]][k] |
* Tvar[5] in V2+V1+V3*age+V2*V4 is 4 (V4) even it is a time varying or quantitative variable |
* Tvar[5] in V2+V1+V3*age+V2*V4 is 4 (V4) even it is a time varying or quantitative variable |
* nbcode[Tvar[5]][1]= nbcode[4][1]=0, nbcode[4][2]=1 (usually); |
* nbcode[Tvar[5]][1]= nbcode[4][1]=0, nbcode[4][2]=1 (usually); |
*/ |
*/ |
|
|
int ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; |
int ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; |
int modmaxcovj=0; /* Modality max of covariates j */ |
int modmaxcovj=0; /* Modality max of covariates j */ |
int cptcode=0; /* Modality max of covariates j */ |
int cptcode=0; /* Modality max of covariates j */ |
int modmincovj=0; /* Modality min of covariates j */ |
int modmincovj=0; /* Modality min of covariates j */ |
|
|
|
|
/* cptcoveff=0; */ |
/* cptcoveff=0; */ |
/* *cptcov=0; */ |
/* *cptcov=0; */ |
|
|
for (k=1; k <= maxncov; k++) ncodemax[k]=0; /* Horrible constant again replaced by NCOVMAX */ |
for (k=1; k <= maxncov; k++) ncodemax[k]=0; /* Horrible constant again replaced by NCOVMAX */ |
|
|
/* Loop on covariates without age and products and no quantitative variable */ |
/* Loop on covariates without age and products and no quantitative variable */ |
/* for (j=1; j<=(cptcovs); j++) { /\* From model V1 + V2*age+ V3 + V3*V4 keeps V1 + V3 = 2 only *\/ */ |
/* for (j=1; j<=(cptcovs); j++) { /\* From model V1 + V2*age+ V3 + V3*V4 keeps V1 + V3 = 2 only *\/ */ |
for (k=1; k<=cptcovt; k++) { /* From model V1 + V2*age + V3 + V3*V4 keeps V1 + V3 = 2 only */ |
for (k=1; k<=cptcovt; k++) { /* From model V1 + V2*age + V3 + V3*V4 keeps V1 + V3 = 2 only */ |
for (j=-1; (j < maxncov); j++) Ndum[j]=0; |
for (j=-1; (j < maxncov); j++) Ndum[j]=0; |
if(Dummy[k]==0 && Typevar[k] !=1){ /* Dummy covariate and not age product */ |
if(Dummy[k]==0 && Typevar[k] !=1){ /* Dummy covariate and not age product */ |
switch(Fixed[k]) { |
switch(Fixed[k]) { |
case 0: /* Testing on fixed dummy covariate, simple or product of fixed */ |
case 0: /* Testing on fixed dummy covariate, simple or product of fixed */ |
for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ |
for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ |
ij=(int)(covar[Tvar[k]][i]); |
ij=(int)(covar[Tvar[k]][i]); |
/* ij=0 or 1 or -1. Value of the covariate Tvar[j] for individual i |
/* ij=0 or 1 or -1. Value of the covariate Tvar[j] for individual i |
* If product of Vn*Vm, still boolean *: |
* If product of Vn*Vm, still boolean *: |
* If it was coded 1, 2, 3, 4 should be splitted into 3 boolean variables |
* If it was coded 1, 2, 3, 4 should be splitted into 3 boolean variables |
* 1 => 0 0 0, 2 => 0 0 1, 3 => 0 1 1, 4=1 0 0 */ |
* 1 => 0 0 0, 2 => 0 0 1, 3 => 0 1 1, 4=1 0 0 */ |
/* Finds for covariate j, n=Tvar[j] of Vn . ij is the |
/* Finds for covariate j, n=Tvar[j] of Vn . ij is the |
modality of the nth covariate of individual i. */ |
modality of the nth covariate of individual i. */ |
if (ij > modmaxcovj) |
if (ij > modmaxcovj) |
modmaxcovj=ij; |
modmaxcovj=ij; |
else if (ij < modmincovj) |
else if (ij < modmincovj) |
modmincovj=ij; |
modmincovj=ij; |
if ((ij < -1) && (ij > NCOVMAX)){ |
if ((ij < -1) && (ij > NCOVMAX)){ |
printf( "Error: minimal is less than -1 or maximal is bigger than %d. Exiting. \n", NCOVMAX ); |
printf( "Error: minimal is less than -1 or maximal is bigger than %d. Exiting. \n", NCOVMAX ); |
exit(1); |
exit(1); |
}else |
}else |
Ndum[ij]++; /*counts and stores the occurence of this modality 0, 1, -1*/ |
Ndum[ij]++; /*counts and stores the occurence of this modality 0, 1, -1*/ |
/* If coded 1, 2, 3 , counts the number of 1 Ndum[1], number of 2, Ndum[2], etc */ |
/* If coded 1, 2, 3 , counts the number of 1 Ndum[1], number of 2, Ndum[2], etc */ |
/*printf("i=%d ij=%d Ndum[ij]=%d imx=%d",i,ij,Ndum[ij],imx);*/ |
/*printf("i=%d ij=%d Ndum[ij]=%d imx=%d",i,ij,Ndum[ij],imx);*/ |
/* getting the maximum value of the modality of the covariate |
/* getting the maximum value of the modality of the covariate |
(should be 0 or 1 now) Tvar[j]. If V=sex and male is coded 0 and |
(should be 0 or 1 now) Tvar[j]. If V=sex and male is coded 0 and |
female ies 1, then modmaxcovj=1. |
female ies 1, then modmaxcovj=1. |
*/ |
*/ |
} /* end for loop on individuals i */ |
} /* end for loop on individuals i */ |
printf(" Minimal and maximal values of %d th covariate V%d: min=%d max=%d \n", k, Tvar[k], modmincovj, modmaxcovj); |
printf(" Minimal and maximal values of %d th (fixed) covariate V%d: min=%d max=%d \n", k, Tvar[k], modmincovj, modmaxcovj); |
fprintf(ficlog," Minimal and maximal values of %d th covariate V%d: min=%d max=%d \n", k, Tvar[k], modmincovj, modmaxcovj); |
fprintf(ficlog," Minimal and maximal values of %d th (fixed) covariate V%d: min=%d max=%d \n", k, Tvar[k], modmincovj, modmaxcovj); |
cptcode=modmaxcovj; |
cptcode=modmaxcovj; |
/* Ndum[0] = frequency of 0 for model-covariate j, Ndum[1] frequency of 1 etc. */ |
/* Ndum[0] = frequency of 0 for model-covariate j, Ndum[1] frequency of 1 etc. */ |
/*for (i=0; i<=cptcode; i++) {*/ |
/*for (i=0; i<=cptcode; i++) {*/ |
for (j=modmincovj; j<=modmaxcovj; j++) { /* j=-1 ? 0 and 1*//* For each value j of the modality of model-cov k */ |
for (j=modmincovj; j<=modmaxcovj; j++) { /* j=-1 ? 0 and 1*//* For each value j of the modality of model-cov k */ |
printf("Frequencies of covariates %d ie V%d with value %d: %d\n", k, Tvar[k], j, Ndum[j]); |
printf("Frequencies of (fixed) covariate %d ie V%d with value %d: %d\n", k, Tvar[k], j, Ndum[j]); |
fprintf(ficlog, "Frequencies of covariates %d ie V%d with value %d: %d\n", k, Tvar[k], j, Ndum[j]); |
fprintf(ficlog, "Frequencies of (fixed) covariate %d ie V%d with value %d: %d\n", k, Tvar[k], j, Ndum[j]); |
if( Ndum[j] != 0 ){ /* Counts if nobody answered modality j ie empty modality, we skip it and reorder */ |
if( Ndum[j] != 0 ){ /* Counts if nobody answered modality j ie empty modality, we skip it and reorder */ |
if( j != -1){ |
if( j != -1){ |
ncodemax[k]++; /* ncodemax[k]= Number of modalities of the k th |
ncodemax[k]++; /* ncodemax[k]= Number of modalities of the k th |
covariate for which somebody answered excluding |
covariate for which somebody answered excluding |
undefined. Usually 2: 0 and 1. */ |
undefined. Usually 2: 0 and 1. */ |
} |
} |
ncodemaxwundef[k]++; /* ncodemax[j]= Number of modalities of the k th |
ncodemaxwundef[k]++; /* ncodemax[j]= Number of modalities of the k th |
covariate for which somebody answered including |
covariate for which somebody answered including |
undefined. Usually 3: -1, 0 and 1. */ |
undefined. Usually 3: -1, 0 and 1. */ |
} /* In fact ncodemax[k]=2 (dichotom. variables only) but it could be more for |
} /* In fact ncodemax[k]=2 (dichotom. variables only) but it could be more for |
* historical reasons: 3 if coded 1, 2, 3 and 4 and Ndum[2]=0 */ |
* historical reasons: 3 if coded 1, 2, 3 and 4 and Ndum[2]=0 */ |
} /* Ndum[-1] number of undefined modalities */ |
} /* Ndum[-1] number of undefined modalities */ |
|
|
/* j is a covariate, n=Tvar[j] of Vn; Fills nbcode */ |
/* j is a covariate, n=Tvar[j] of Vn; Fills nbcode */ |
/* For covariate j, modalities could be 1, 2, 3, 4, 5, 6, 7. */ |
/* For covariate j, modalities could be 1, 2, 3, 4, 5, 6, 7. */ |
/* If Ndum[1]=0, Ndum[2]=0, Ndum[3]= 635, Ndum[4]=0, Ndum[5]=0, Ndum[6]=27, Ndum[7]=125; */ |
/* If Ndum[1]=0, Ndum[2]=0, Ndum[3]= 635, Ndum[4]=0, Ndum[5]=0, Ndum[6]=27, Ndum[7]=125; */ |
/* modmincovj=3; modmaxcovj = 7; */ |
/* modmincovj=3; modmaxcovj = 7; */ |
/* There are only 3 modalities non empty 3, 6, 7 (or 2 if 27 is too few) : ncodemax[j]=3; */ |
/* There are only 3 modalities non empty 3, 6, 7 (or 2 if 27 is too few) : ncodemax[j]=3; */ |
/* which will be coded 0, 1, 2 which in binary on 2=3-1 digits are 0=00 1=01, 2=10; */ |
/* which will be coded 0, 1, 2 which in binary on 2=3-1 digits are 0=00 1=01, 2=10; */ |
/* defining two dummy variables: variables V1_1 and V1_2.*/ |
/* defining two dummy variables: variables V1_1 and V1_2.*/ |
/* nbcode[Tvar[j]][ij]=k; */ |
/* nbcode[Tvar[j]][ij]=k; */ |
/* nbcode[Tvar[j]][1]=0; */ |
/* nbcode[Tvar[j]][1]=0; */ |
/* nbcode[Tvar[j]][2]=1; */ |
/* nbcode[Tvar[j]][2]=1; */ |
/* nbcode[Tvar[j]][3]=2; */ |
/* nbcode[Tvar[j]][3]=2; */ |
/* To be continued (not working yet). */ |
/* To be continued (not working yet). */ |
ij=0; /* ij is similar to i but can jump over null modalities */ |
ij=0; /* ij is similar to i but can jump over null modalities */ |
for (i=modmincovj; i<=modmaxcovj; i++) { /* i= 1 to 2 for dichotomous, or from 1 to 3 or from -1 or 0 to 1 currently*/ |
for (i=modmincovj; i<=modmaxcovj; i++) { /* i= 1 to 2 for dichotomous, or from 1 to 3 or from -1 or 0 to 1 currently*/ |
if (Ndum[i] == 0) { /* If nobody responded to this modality k */ |
if (Ndum[i] == 0) { /* If nobody responded to this modality k */ |
break; |
break; |
} |
} |
ij++; |
ij++; |
nbcode[Tvar[k]][ij]=i; /* stores the original value of modality i in an array nbcode, ij modality from 1 to last non-nul modality. nbcode[1][1]=0 nbcode[1][2]=1*/ |
nbcode[Tvar[k]][ij]=i; /* stores the original value of modality i in an array nbcode, ij modality from 1 to last non-nul modality. nbcode[1][1]=0 nbcode[1][2]=1*/ |
cptcode = ij; /* New max modality for covar j */ |
cptcode = ij; /* New max modality for covar j */ |
} /* end of loop on modality i=-1 to 1 or more */ |
} /* end of loop on modality i=-1 to 1 or more */ |
break; |
break; |
case 1: /* Testing on varying covariate, could be simple and |
case 1: /* Testing on varying covariate, could be simple and |
* should look at waves or product of fixed * |
* should look at waves or product of fixed * |
* varying. No time to test -1, assuming 0 and 1 only */ |
* varying. No time to test -1, assuming 0 and 1 only */ |
ij=0; |
ij=0; |
for(i=0; i<=1;i++){ |
for(i=0; i<=1;i++){ |
nbcode[Tvar[k]][++ij]=i; |
nbcode[Tvar[k]][++ij]=i; |
} |
} |
break; |
break; |
default: |
default: |
break; |
break; |
} /* end switch */ |
} /* end switch */ |
} /* end dummy test */ |
} /* end dummy test */ |
|
|
/* for (k=0; k<= cptcode; k++) { /\* k=-1 ? k=0 to 1 *\//\* Could be 1 to 4 *\//\* cptcode=modmaxcovj *\/ */ |
/* for (k=0; k<= cptcode; k++) { /\* k=-1 ? k=0 to 1 *\//\* Could be 1 to 4 *\//\* cptcode=modmaxcovj *\/ */ |
/* /\*recode from 0 *\/ */ |
/* /\*recode from 0 *\/ */ |
/* k is a modality. If we have model=V1+V1*sex */ |
/* k is a modality. If we have model=V1+V1*sex */ |
/* then: nbcode[1][1]=0 ; nbcode[1][2]=1; nbcode[2][1]=0 ; nbcode[2][2]=1; */ |
/* then: nbcode[1][1]=0 ; nbcode[1][2]=1; nbcode[2][1]=0 ; nbcode[2][2]=1; */ |
/* But if some modality were not used, it is recoded from 0 to a newer modmaxcovj=cptcode *\/ */ |
/* But if some modality were not used, it is recoded from 0 to a newer modmaxcovj=cptcode *\/ */ |
/* } */ |
/* } */ |
/* /\* cptcode = ij; *\/ /\* New max modality for covar j *\/ */ |
/* /\* cptcode = ij; *\/ /\* New max modality for covar j *\/ */ |
/* if (ij > ncodemax[j]) { */ |
/* if (ij > ncodemax[j]) { */ |
/* printf( " Error ij=%d > ncodemax[%d]=%d\n", ij, j, ncodemax[j]); */ |
/* printf( " Error ij=%d > ncodemax[%d]=%d\n", ij, j, ncodemax[j]); */ |
/* fprintf(ficlog, " Error ij=%d > ncodemax[%d]=%d\n", ij, j, ncodemax[j]); */ |
/* fprintf(ficlog, " Error ij=%d > ncodemax[%d]=%d\n", ij, j, ncodemax[j]); */ |
/* break; */ |
/* break; */ |
/* } */ |
/* } */ |
/* } /\* end of loop on modality k *\/ */ |
/* } /\* end of loop on modality k *\/ */ |
} /* end of loop on model-covariate j. nbcode[Tvarj][1]=0 and nbcode[Tvarj][2]=1 sets the value of covariate j*/ |
} /* end of loop on model-covariate j. nbcode[Tvarj][1]=0 and nbcode[Tvarj][2]=1 sets the value of covariate j*/ |
|
|
for (k=-1; k< maxncov; k++) Ndum[k]=0; |
for (k=-1; k< maxncov; k++) Ndum[k]=0; |
/* Look at fixed dummy (single or product) covariates to check empty modalities */ |
/* Look at fixed dummy (single or product) covariates to check empty modalities */ |
for (i=1; i<=ncovmodel-2-nagesqr; i++) { /* -2, cste and age and eventually age*age */ |
for (i=1; i<=ncovmodel-2-nagesqr; i++) { /* -2, cste and age and eventually age*age */ |
/* Listing of all covariables in statement model to see if some covariates appear twice. For example, V1 appears twice in V1+V1*V2.*/ |
/* Listing of all covariables in statement model to see if some covariates appear twice. For example, V1 appears twice in V1+V1*V2.*/ |
ij=Tvar[i]; /* Tvar 5,4,3,6,5,7,1,4 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V4*age */ |
ij=Tvar[i]; /* Tvar 5,4,3,6,5,7,1,4 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V4*age */ |
Ndum[ij]++; /* Count the # of 1, 2 etc: {1,1,1,2,2,1,1} because V1 once, V2 once, two V4 and V5 in above */ |
Ndum[ij]++; /* Count the # of 1, 2 etc: {1,1,1,2,2,1,1} because V1 once, V2 once, two V4 and V5 in above */ |
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, {2, 1, 1, 1, 2, 1, 1, 0, 0} */ |
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, {2, 1, 1, 1, 2, 1, 1, 0, 0} */ |
} /* V4+V3+V5, Ndum[1]@5={0, 0, 1, 1, 1} */ |
} /* V4+V3+V5, Ndum[1]@5={0, 0, 1, 1, 1} */ |
|
|
ij=0; |
ij=0; |
/* for (i=0; i<= maxncov-1; i++) { /\* modmaxcovj is unknown here. Only Ndum[2(V2),3(age*V3), 5(V3*V2) 6(V1*V4) *\/ */ |
/* for (i=0; i<= maxncov-1; i++) { /\* modmaxcovj is unknown here. Only Ndum[2(V2),3(age*V3), 5(V3*V2) 6(V1*V4) *\/ */ |
for (k=1; k<= cptcovt; k++) { /* modmaxcovj is unknown here. Only Ndum[2(V2),3(age*V3), 5(V3*V2) 6(V1*V4) */ |
for (k=1; k<= cptcovt; k++) { /* modmaxcovj is unknown here. Only Ndum[2(V2),3(age*V3), 5(V3*V2) 6(V1*V4) */ |
/*printf("Ndum[%d]=%d\n",i, Ndum[i]);*/ |
/*printf("Ndum[%d]=%d\n",i, Ndum[i]);*/ |
/* if((Ndum[i]!=0) && (i<=ncovcol)){ /\* Tvar[i] <= ncovmodel ? *\/ */ |
/* if((Ndum[i]!=0) && (i<=ncovcol)){ /\* Tvar[i] <= ncovmodel ? *\/ */ |
if(Ndum[Tvar[k]]!=0 && Dummy[k] == 0 && Typevar[k]==0){ /* Only Dummy and non empty in the model */ |
if(Ndum[Tvar[k]]!=0 && Dummy[k] == 0 && Typevar[k]==0){ /* Only Dummy and non empty in the model */ |
/* If product not in single variable we don't print results */ |
/* If product not in single variable we don't print results */ |
/*printf("diff Ndum[%d]=%d\n",i, Ndum[i]);*/ |
/*printf("diff Ndum[%d]=%d\n",i, Ndum[i]);*/ |
++ij;/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, */ |
++ij;/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, */ |
Tvaraff[ij]=Tvar[k]; /* For printing combination *//* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, Tvar {5, 4, 3, 6, 5, 2, 7, 1, 1} Tvaraff={4, 3, 1} V4, V3, V1*/ |
Tvaraff[ij]=Tvar[k]; /* For printing combination *//* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, Tvar {5, 4, 3, 6, 5, 2, 7, 1, 1} Tvaraff={4, 3, 1} V4, V3, V1*/ |
Tmodelind[ij]=k; /* Tmodelind: index in model of dummies Tmodelind[1]=2 V4: pos=2; V3: pos=3, V1=9 {2, 3, 9, ?, ?,} */ |
Tmodelind[ij]=k; /* Tmodelind: index in model of dummies Tmodelind[1]=2 V4: pos=2; V3: pos=3, V1=9 {2, 3, 9, ?, ?,} */ |
TmodelInvind[ij]=Tvar[k]- ncovcol-nqv; /* Inverse TmodelInvind[2=V4]=2 second dummy varying cov (V4)4-1-1 {0, 2, 1, } TmodelInvind[3]=1 */ |
TmodelInvind[ij]=Tvar[k]- ncovcol-nqv; /* Inverse TmodelInvind[2=V4]=2 second dummy varying cov (V4)4-1-1 {0, 2, 1, } TmodelInvind[3]=1 */ |
if(Fixed[k]!=0) |
if(Fixed[k]!=0) |
anyvaryingduminmodel=1; |
anyvaryingduminmodel=1; |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv)){ */ |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv)){ */ |
/* Tvaraff[++ij]=-10; /\* Dont'n know how to treat quantitative variables yet *\/ */ |
/* Tvaraff[++ij]=-10; /\* Dont'n know how to treat quantitative variables yet *\/ */ |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv+ntv)){ */ |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv+ntv)){ */ |
/* Tvaraff[++ij]=i; /\*For printing (unclear) *\/ */ |
/* Tvaraff[++ij]=i; /\*For printing (unclear) *\/ */ |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv+ntv+nqtv)){ */ |
/* }else if((Ndum[i]!=0) && (i<=ncovcol+nqv+ntv+nqtv)){ */ |
/* Tvaraff[++ij]=-20; /\* Dont'n know how to treat quantitative variables yet *\/ */ |
/* Tvaraff[++ij]=-20; /\* Dont'n know how to treat quantitative variables yet *\/ */ |
} |
} |
} /* Tvaraff[1]@5 {3, 4, -20, 0, 0} Very strange */ |
} /* Tvaraff[1]@5 {3, 4, -20, 0, 0} Very strange */ |
/* ij--; */ |
/* ij--; */ |
/* cptcoveff=ij; /\*Number of total covariates*\/ */ |
/* cptcoveff=ij; /\*Number of total covariates*\/ */ |
*cptcov=ij; /*Number of total real effective covariates: effective |
*cptcov=ij; /*Number of total real effective covariates: effective |
* because they can be excluded from the model and real |
* because they can be excluded from the model and real |
* if in the model but excluded because missing values, but how to get k from ij?*/ |
* if in the model but excluded because missing values, but how to get k from ij?*/ |
for(j=ij+1; j<= cptcovt; j++){ |
for(j=ij+1; j<= cptcovt; j++){ |
Tvaraff[j]=0; |
Tvaraff[j]=0; |
Tmodelind[j]=0; |
Tmodelind[j]=0; |
} |
} |
for(j=ntveff+1; j<= cptcovt; j++){ |
for(j=ntveff+1; j<= cptcovt; j++){ |
TmodelInvind[j]=0; |
TmodelInvind[j]=0; |
} |
} |
/* To be sorted */ |
/* To be sorted */ |
; |
; |
} |
} |
|
|
|
|
/*********** 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 4813 void evsij(double ***eij, double x[], in
|
Line 5460 void evsij(double ***eij, double x[], in
|
double ***p3mat; |
double ***p3mat; |
double eip; |
double eip; |
|
|
pstamp(ficreseij); |
/* pstamp(ficreseij); */ |
fprintf(ficreseij,"# (a) Life expectancies by health status at initial age and (b) health expectancies by health status at initial age\n"); |
fprintf(ficreseij,"# (a) Life expectancies by health status at initial age and (b) health expectancies by health status at initial age\n"); |
fprintf(ficreseij,"# Age"); |
fprintf(ficreseij,"# Age"); |
for(i=1; i<=nlstate;i++){ |
for(i=1; i<=nlstate;i++){ |
Line 4844 void evsij(double ***eij, double x[], in
|
Line 5491 void evsij(double ***eij, double x[], in
|
/* hstepm beeing the number of stepms, if hstepm=1 the length of hstepm is stepm. |
/* hstepm beeing the number of stepms, if hstepm=1 the length of hstepm is stepm. |
nhstepm is the number of hstepm from age to agelim |
nhstepm is the number of hstepm from age to agelim |
nstepm is the number of stepm from age to agelin. |
nstepm is the number of stepm from age to agelin. |
Look at hpijx to understand the reason of that which relies in memory size |
Look at hpijx to understand the reason which relies in memory size consideration |
and note for a fixed period like estepm months */ |
and note for a fixed period like estepm months */ |
/* We decided (b) to get a life expectancy respecting the most precise curvature of the |
/* We decided (b) to get a life expectancy respecting the most precise curvature of the |
survival function given by stepm (the optimization length). Unfortunately it |
survival function given by stepm (the optimization length). Unfortunately it |
Line 4876 void evsij(double ***eij, double x[], in
|
Line 5523 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 4911 void evsij(double ***eij, double x[], in
|
Line 5558 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 5024 void cvevsij(double ***eij, double x[],
|
Line 5671 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 5066 void cvevsij(double ***eij, double x[],
|
Line 5713 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 5075 void cvevsij(double ***eij, double x[],
|
Line 5722 void cvevsij(double ***eij, double x[],
|
/* if((int)age==70)printf("i=%2d,j=%2d,h=%2d,age=%3d,%9.4f,%9.4f,%9.4f\n",i,j,h,(int)age,p3mat[i][j][h],hf,eij[i][j][(int)age]);*/ |
/* if((int)age==70)printf("i=%2d,j=%2d,h=%2d,age=%3d,%9.4f,%9.4f,%9.4f\n",i,j,h,(int)age,p3mat[i][j][h],hf,eij[i][j][(int)age]);*/ |
|
|
} |
} |
|
|
|
/* Standard deviation of expectancies ij */ |
fprintf(ficresstdeij,"%3.0f",age ); |
fprintf(ficresstdeij,"%3.0f",age ); |
for(i=1; i<=nlstate;i++){ |
for(i=1; i<=nlstate;i++){ |
eip=0.; |
eip=0.; |
Line 5090 void cvevsij(double ***eij, double x[],
|
Line 5738 void cvevsij(double ***eij, double x[],
|
} |
} |
fprintf(ficresstdeij,"\n"); |
fprintf(ficresstdeij,"\n"); |
|
|
|
/* Variance of expectancies ij */ |
fprintf(ficrescveij,"%3.0f",age ); |
fprintf(ficrescveij,"%3.0f",age ); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
for(j=1; j<=nlstate;j++){ |
for(j=1; j<=nlstate;j++){ |
Line 5121 void cvevsij(double ***eij, double x[],
|
Line 5770 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 5178 void cvevsij(double ***eij, double x[],
|
Line 5827 void cvevsij(double ***eij, double x[],
|
fprintf(ficlog,"Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); |
fprintf(ficlog,"Computing total mortality p.j=w1*p1j+w2*p2j+..: result on file '%s' \n",fileresprobmorprev); |
pstamp(ficresprobmorprev); |
pstamp(ficresprobmorprev); |
fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); |
fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); |
|
fprintf(ficresprobmorprev,"# Selected quantitative variables and dummies"); |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
|
for(j=1;j<=cptcoveff;j++) |
|
fprintf(ficresprobmorprev,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,j)]); |
|
fprintf(ficresprobmorprev,"\n"); |
|
|
fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
for(j=nlstate+1; j<=(nlstate+ndeath);j++){ |
for(j=nlstate+1; j<=(nlstate+ndeath);j++){ |
fprintf(ficresprobmorprev," p.%-d SE",j); |
fprintf(ficresprobmorprev," p.%-d SE",j); |
Line 5247 void cvevsij(double ***eij, double x[],
|
Line 5904 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, nres); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5259 void cvevsij(double ***eij, double x[],
|
Line 5916 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 5279 void cvevsij(double ***eij, double x[],
|
Line 5936 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, nres); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5291 void cvevsij(double ***eij, double x[],
|
Line 5948 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 5356 void cvevsij(double ***eij, double x[],
|
Line 6013 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, nres); |
|
|
if (popbased==1) { |
if (popbased==1) { |
if(mobilav ==0){ |
if(mobilav ==0){ |
Line 5372 void cvevsij(double ***eij, double x[],
|
Line 6029 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 5435 void cvevsij(double ***eij, double x[],
|
Line 6092 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 fileresvpl[], FILE *ficresvpl, 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);*/ |
|
|
double **dnewm,**doldm; |
double **dnewmpar,**doldm; |
int i, j, nhstepm, hstepm; |
int i, j, nhstepm, hstepm; |
double *xp; |
double *xp; |
double *gp, *gm; |
double *gp, *gm; |
Line 5451 void cvevsij(double ***eij, double x[],
|
Line 6108 void cvevsij(double ***eij, double x[],
|
|
|
pstamp(ficresvpl); |
pstamp(ficresvpl); |
fprintf(ficresvpl,"# Standard deviation of period (stable) prevalences \n"); |
fprintf(ficresvpl,"# Standard deviation of period (stable) prevalences \n"); |
fprintf(ficresvpl,"# Age"); |
fprintf(ficresvpl,"# Age "); |
|
if(nresult >=1) |
|
fprintf(ficresvpl," Result# "); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
fprintf(ficresvpl," %1d-%1d",i,i); |
fprintf(ficresvpl," %1d-%1d",i,i); |
fprintf(ficresvpl,"\n"); |
fprintf(ficresvpl,"\n"); |
|
|
xp=vector(1,npar); |
xp=vector(1,npar); |
dnewm=matrix(1,nlstate,1,npar); |
dnewmpar=matrix(1,nlstate,1,npar); |
doldm=matrix(1,nlstate,1,nlstate); |
doldm=matrix(1,nlstate,1,nlstate); |
|
|
hstepm=1*YEARM; /* Every year of age */ |
hstepm=1*YEARM; /* Every year of age */ |
Line 5478 void cvevsij(double ***eij, double x[],
|
Line 6137 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 5488 void cvevsij(double ***eij, double x[],
|
Line 6147 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 5527 void cvevsij(double ***eij, double x[],
|
Line 6186 void cvevsij(double ***eij, double x[],
|
for(i=1;i<=nlstate;i++) |
for(i=1;i<=nlstate;i++) |
varpl[i][(int)age] =0.; |
varpl[i][(int)age] =0.; |
if((int)age==79 ||(int)age== 80 ||(int)age== 81){ |
if((int)age==79 ||(int)age== 80 ||(int)age== 81){ |
matprod2(dnewm,trgradg,1,nlstate,1,npar,1,npar,matcov); |
matprod2(dnewmpar,trgradg,1,nlstate,1,npar,1,npar,matcov); |
matprod2(doldm,dnewm,1,nlstate,1,npar,1,nlstate,gradg); |
matprod2(doldm,dnewmpar,1,nlstate,1,npar,1,nlstate,gradg); |
}else{ |
}else{ |
matprod2(dnewm,trgradg,1,nlstate,1,npar,1,npar,matcov); |
matprod2(dnewmpar,trgradg,1,nlstate,1,npar,1,npar,matcov); |
matprod2(doldm,dnewm,1,nlstate,1,npar,1,nlstate,gradg); |
matprod2(doldm,dnewmpar,1,nlstate,1,npar,1,nlstate,gradg); |
} |
} |
for(i=1;i<=nlstate;i++) |
for(i=1;i<=nlstate;i++) |
varpl[i][(int)age] = doldm[i][i]; /* Covariances are useless */ |
varpl[i][(int)age] = doldm[i][i]; /* Covariances are useless */ |
|
|
fprintf(ficresvpl,"%.0f ",age ); |
fprintf(ficresvpl,"%.0f ",age ); |
|
if(nresult >=1) |
|
fprintf(ficresvpl,"%d ",nres ); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
fprintf(ficresvpl," %.5f (%.5f)",prlim[i][i],sqrt(varpl[i][(int)age])); |
fprintf(ficresvpl," %.5f (%.5f)",prlim[i][i],sqrt(varpl[i][(int)age])); |
fprintf(ficresvpl,"\n"); |
fprintf(ficresvpl,"\n"); |
Line 5550 void cvevsij(double ***eij, double x[],
|
Line 6211 void cvevsij(double ***eij, double x[],
|
|
|
free_vector(xp,1,npar); |
free_vector(xp,1,npar); |
free_matrix(doldm,1,nlstate,1,npar); |
free_matrix(doldm,1,nlstate,1,npar); |
free_matrix(dnewm,1,nlstate,1,nlstate); |
free_matrix(dnewmpar,1,nlstate,1,nlstate); |
|
|
|
} |
|
|
|
|
|
/************ Variance of backprevalence limit ******************/ |
|
void varbrevlim(char fileresvbl[], FILE *ficresvbl, double **varbpl, double **matcov, double x[], double delti[], int nlstate, int stepm, double bage, double fage, double **oldm, double **savm, double **bprlim, double ftolpl, int mobilavproj, int *ncvyearp, int ij, char strstart[], int nres) |
|
{ |
|
/* Variance of backward 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 **dnewmpar,**doldm; |
|
int i, j, nhstepm, hstepm; |
|
double *xp; |
|
double *gp, *gm; |
|
double **gradg, **trgradg; |
|
double **mgm, **mgp; |
|
double age,agelim; |
|
int theta; |
|
|
|
pstamp(ficresvbl); |
|
fprintf(ficresvbl,"# Standard deviation of back (stable) prevalences \n"); |
|
fprintf(ficresvbl,"# Age "); |
|
if(nresult >=1) |
|
fprintf(ficresvbl," Result# "); |
|
for(i=1; i<=nlstate;i++) |
|
fprintf(ficresvbl," %1d-%1d",i,i); |
|
fprintf(ficresvbl,"\n"); |
|
|
|
xp=vector(1,npar); |
|
dnewmpar=matrix(1,nlstate,1,npar); |
|
doldm=matrix(1,nlstate,1,nlstate); |
|
|
|
hstepm=1*YEARM; /* Every year of age */ |
|
hstepm=hstepm/stepm; /* Typically in stepm units, if j= 2 years, = 2/6 months = 4 */ |
|
agelim = AGEINF; |
|
for (age=fage; age>=bage; age --){ /* If stepm=6 months */ |
|
nhstepm=(int) rint((age-agelim)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ |
|
if (stepm >= YEARM) hstepm=1; |
|
nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */ |
|
gradg=matrix(1,npar,1,nlstate); |
|
mgp=matrix(1,npar,1,nlstate); |
|
mgm=matrix(1,npar,1,nlstate); |
|
gp=vector(1,nlstate); |
|
gm=vector(1,nlstate); |
|
|
|
for(theta=1; theta <=npar; theta++){ |
|
for(i=1; i<=npar; i++){ /* Computes gradient */ |
|
xp[i] = x[i] + (i==theta ?delti[theta]:0); |
|
} |
|
if(mobilavproj > 0 ) |
|
bprevalim(bprlim, mobaverage,nlstate,xp,age,ftolpl,ncvyearp,ij,nres); |
|
else |
|
bprevalim(bprlim, mobaverage,nlstate,xp,age,ftolpl,ncvyearp,ij,nres); |
|
for(i=1;i<=nlstate;i++){ |
|
gp[i] = bprlim[i][i]; |
|
mgp[theta][i] = bprlim[i][i]; |
|
} |
|
for(i=1; i<=npar; i++) /* Computes gradient */ |
|
xp[i] = x[i] - (i==theta ?delti[theta]:0); |
|
if(mobilavproj > 0 ) |
|
bprevalim(bprlim, mobaverage,nlstate,xp,age,ftolpl,ncvyearp,ij,nres); |
|
else |
|
bprevalim(bprlim, mobaverage,nlstate,xp,age,ftolpl,ncvyearp,ij,nres); |
|
for(i=1;i<=nlstate;i++){ |
|
gm[i] = bprlim[i][i]; |
|
mgm[theta][i] = bprlim[i][i]; |
|
} |
|
for(i=1;i<=nlstate;i++) |
|
gradg[theta][i]= (gp[i]-gm[i])/2./delti[theta]; |
|
/* gradg[theta][2]= -gradg[theta][1]; */ /* For testing if nlstate=2 */ |
|
} /* End theta */ |
|
|
|
trgradg =matrix(1,nlstate,1,npar); |
|
|
|
for(j=1; j<=nlstate;j++) |
|
for(theta=1; theta <=npar; theta++) |
|
trgradg[j][theta]=gradg[theta][j]; |
|
/* if((int)age==79 ||(int)age== 80 ||(int)age== 81 ){ */ |
|
/* printf("\nmgm mgp %d ",(int)age); */ |
|
/* for(j=1; j<=nlstate;j++){ */ |
|
/* printf(" %d ",j); */ |
|
/* for(theta=1; theta <=npar; theta++) */ |
|
/* printf(" %d %lf %lf",theta,mgm[theta][j],mgp[theta][j]); */ |
|
/* printf("\n "); */ |
|
/* } */ |
|
/* } */ |
|
/* if((int)age==79 ||(int)age== 80 ||(int)age== 81 ){ */ |
|
/* printf("\n gradg %d ",(int)age); */ |
|
/* for(j=1; j<=nlstate;j++){ */ |
|
/* printf("%d ",j); */ |
|
/* for(theta=1; theta <=npar; theta++) */ |
|
/* printf("%d %lf ",theta,gradg[theta][j]); */ |
|
/* printf("\n "); */ |
|
/* } */ |
|
/* } */ |
|
|
|
for(i=1;i<=nlstate;i++) |
|
varbpl[i][(int)age] =0.; |
|
if((int)age==79 ||(int)age== 80 ||(int)age== 81){ |
|
matprod2(dnewmpar,trgradg,1,nlstate,1,npar,1,npar,matcov); |
|
matprod2(doldm,dnewmpar,1,nlstate,1,npar,1,nlstate,gradg); |
|
}else{ |
|
matprod2(dnewmpar,trgradg,1,nlstate,1,npar,1,npar,matcov); |
|
matprod2(doldm,dnewmpar,1,nlstate,1,npar,1,nlstate,gradg); |
|
} |
|
for(i=1;i<=nlstate;i++) |
|
varbpl[i][(int)age] = doldm[i][i]; /* Covariances are useless */ |
|
|
|
fprintf(ficresvbl,"%.0f ",age ); |
|
if(nresult >=1) |
|
fprintf(ficresvbl,"%d ",nres ); |
|
for(i=1; i<=nlstate;i++) |
|
fprintf(ficresvbl," %.5f (%.5f)",bprlim[i][i],sqrt(varbpl[i][(int)age])); |
|
fprintf(ficresvbl,"\n"); |
|
free_vector(gp,1,nlstate); |
|
free_vector(gm,1,nlstate); |
|
free_matrix(mgm,1,npar,1,nlstate); |
|
free_matrix(mgp,1,npar,1,nlstate); |
|
free_matrix(gradg,1,npar,1,nlstate); |
|
free_matrix(trgradg,1,nlstate,1,npar); |
|
} /* End age */ |
|
|
|
free_vector(xp,1,npar); |
|
free_matrix(doldm,1,nlstate,1,npar); |
|
free_matrix(dnewmpar,1,nlstate,1,nlstate); |
|
|
} |
} |
|
|
Line 5630 void varprob(char optionfilefiname[], do
|
Line 6416 void varprob(char optionfilefiname[], do
|
fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); |
fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n"); |
fprintf(fichtm,"\n"); |
fprintf(fichtm,"\n"); |
|
|
fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Matrix of variance-covariance of one-step probabilities (drawings)</a></h4> this page is important in order to visualize confidence intervals and especially correlation between disability and recovery, or more generally, way in and way back.</li>\n",optionfilehtmcov); |
fprintf(fichtm,"\n<li><h4> <a href=\"%s\">Matrix of variance-covariance of one-step probabilities (drawings)</a></h4> this page is important in order to visualize confidence intervals and especially correlation between disability and recovery, or more generally, way in and way back. %s</li>\n",optionfilehtmcov,optionfilehtmcov); |
fprintf(fichtmcov,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Matrix of variance-covariance of pairs of step probabilities</h4>\n",optionfilehtmcov, optionfilehtmcov); |
fprintf(fichtmcov,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Matrix of variance-covariance of pairs of step probabilities</h4>\n",optionfilehtmcov, optionfilehtmcov); |
fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated \ |
fprintf(fichtmcov,"\nEllipsoids of confidence centered on point (p<inf>ij</inf>, p<inf>kl</inf>) are estimated \ |
and drawn. It helps understanding how is the covariance between two incidences.\ |
and drawn. It helps understanding how is the covariance between two incidences.\ |
Line 5847 To be simple, these graphs help to under
|
Line 6633 To be simple, these graphs help to under
|
fprintf(ficgp,"\nset parametric;unset label"); |
fprintf(ficgp,"\nset parametric;unset label"); |
fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2); |
fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2); |
fprintf(ficgp,"\nset ter svg size 640, 480"); |
fprintf(ficgp,"\nset ter svg size 640, 480"); |
fprintf(fichtmcov,"\n<br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup>\ |
fprintf(fichtmcov,"\n<p><br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup>\ |
:<a href=\"%s_%d%1d%1d-%1d%1d.svg\"> \ |
:<a href=\"%s_%d%1d%1d-%1d%1d.svg\"> \ |
%s_%d%1d%1d-%1d%1d.svg</A>, ",k1,l1,k2,l2,\ |
%s_%d%1d%1d-%1d%1d.svg</A>, ",k1,l1,k2,l2,\ |
subdirf2(optionfilefiname,"VARPIJGR_"), j1,k1,l1,k2,l2, \ |
subdirf2(optionfilefiname,"VARPIJGR_"), j1,k1,l1,k2,l2, \ |
Line 5858 To be simple, these graphs help to under
|
Line 6644 To be simple, these graphs help to under
|
fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
fprintf(ficgp,"\nplot [-pi:pi] %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not", \ |
fprintf(ficgp,"\nplot [-pi:pi] %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not", \ |
mu1,std,v11,sqrt(lc1),v12,sqrt(lc2), \ |
mu1,std,v11,sqrt(lc1),v12,sqrt(fabs(lc2)), \ |
mu2,std,v21,sqrt(lc1),v22,sqrt(lc2)); |
mu2,std,v21,sqrt(lc1),v22,sqrt(fabs(lc2))); /* For gnuplot only */ |
}else{ |
}else{ |
first=0; |
first=0; |
fprintf(fichtmcov," %d (%.3f),",(int) age, c12); |
fprintf(fichtmcov," %d (%.3f),",(int) age, c12); |
fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2); |
fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2); |
fprintf(ficgp,"\nreplot %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not", \ |
fprintf(ficgp,"\nreplot %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not", \ |
mu1,std,v11,sqrt(lc1),v12,sqrt(lc2), \ |
mu1,std,v11,sqrt(lc1),v12,sqrt(fabs(lc2)), \ |
mu2,std,v21,sqrt(lc1),v22,sqrt(lc2)); |
mu2,std,v21,sqrt(lc1),v22,sqrt(fabs(lc2))); |
}/* if first */ |
}/* if first */ |
} /* age mod 5 */ |
} /* age mod 5 */ |
} /* end loop age */ |
} /* end loop age */ |
Line 5895 To be simple, these graphs help to under
|
Line 6681 To be simple, these graphs help to under
|
void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ |
void printinghtml(char fileresu[], char title[], char datafile[], int firstpass, \ |
int lastpass, int stepm, int weightopt, char model[],\ |
int lastpass, int stepm, int weightopt, char model[],\ |
int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ |
int imx,int jmin, int jmax, double jmeanint,char rfileres[],\ |
int popforecast, int prevfcast, int backcast, int estepm , \ |
int popforecast, int mobilav, int prevfcast, int mobilavproj, int backcast, int estepm , \ |
double jprev1, double mprev1,double anprev1, double dateprev1, \ |
double jprev1, double mprev1,double anprev1, double dateprev1, double dateproj1, double dateback1, \ |
double jprev2, double mprev2,double anprev2, double dateprev2){ |
double jprev2, double mprev2,double anprev2, double dateprev2, double dateproj2, double dateback2){ |
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 5931 void printinghtml(char fileresu[], char
|
Line 6719 void printinghtml(char fileresu[], char
|
<a href=\"%s\">%s</a> <br>\n</li>", subdirf2(fileresu,"F_"),subdirf2(fileresu,"F_")); |
<a href=\"%s\">%s</a> <br>\n</li>", subdirf2(fileresu,"F_"),subdirf2(fileresu,"F_")); |
} |
} |
|
|
fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |
|
|
|
m=pow(2,cptcoveff); |
m=pow(2,cptcoveff); |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
|
|
|
fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |
|
|
jj1=0; |
jj1=0; |
for(k1=1; k1<=m;k1++){ |
|
|
fprintf(fichtm," \n<ul>"); |
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
jj1++; |
|
if (cptcovn > 0) { |
|
fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescov"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][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,"\">"); |
|
|
|
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
|
fprintf(fichtm,"************ Results for covariates"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); |
|
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
if(invalidvarcomb[k1]){ |
|
fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); |
|
continue; |
|
} |
|
fprintf(fichtm,"</a></li>"); |
|
} /* cptcovn >0 */ |
|
} |
|
fprintf(fichtm," \n</ul>"); |
|
|
|
jj1=0; |
|
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ |
|
if(m != 1 && 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,"\n<p><a name=\"rescov"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][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,"\"</a>"); |
|
|
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 5956 void printinghtml(char fileresu[], char
|
Line 6800 void printinghtml(char fileresu[], char
|
} |
} |
} |
} |
/* aij, bij */ |
/* aij, bij */ |
fprintf(fichtm,"<br>- Logit model (yours is: 1+age+%s), for example: logit(pij)=log(pij/pii)= aij+ bij age + V1 age + etc. as a function of age: <a href=\"%s_%d-1.svg\">%s_%d-1.svg</a><br> \ |
fprintf(fichtm,"<br>- Logit model (yours is: logit(pij)=log(pij/pii)= aij+ bij age+%s) as a function of age: <a href=\"%s_%d-1-%d.svg\">%s_%d-1-%d.svg</a><br> \ |
<img src=\"%s_%d-1.svg\">",model,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1); |
<img src=\"%s_%d-1-%d.svg\">",model,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
/* Pij */ |
/* Pij */ |
fprintf(fichtm,"<br>\n- P<sub>ij</sub> or conditional probabilities to be observed in state j being in state i, %d (stepm) months before: <a href=\"%s_%d-2.svg\">%s_%d-2.svg</a><br> \ |
fprintf(fichtm,"<br>\n- P<sub>ij</sub> or conditional probabilities to be observed in state j being in state i, %d (stepm) months before: <a href=\"%s_%d-2-%d.svg\">%s_%d-2-%d.svg</a><br> \ |
<img src=\"%s_%d-2.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1); |
<img src=\"%s_%d-2-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
/* Quasi-incidences */ |
/* Quasi-incidences */ |
fprintf(fichtm,"<br>\n- I<sub>ij</sub> or Conditional probabilities to be observed in state j being in state i %d (stepm) months\ |
fprintf(fichtm,"<br>\n- I<sub>ij</sub> or Conditional probabilities to be observed in state j being in state i %d (stepm) months\ |
before but expressed in per year i.e. quasi incidences if stepm is small and probabilities too, \ |
before but expressed in per year i.e. quasi incidences if stepm is small and probabilities too, \ |
incidence (rates) are the limit when h tends to zero of the ratio of the probability <sub>h</sub>P<sub>ij</sub> \ |
incidence (rates) are the limit when h tends to zero of the ratio of the probability <sub>h</sub>P<sub>ij</sub> \ |
divided by h: <sub>h</sub>P<sub>ij</sub>/h : <a href=\"%s_%d-3.svg\">%s_%d-3.svg</a><br> \ |
divided by h: <sub>h</sub>P<sub>ij</sub>/h : <a href=\"%s_%d-3-%d.svg\">%s_%d-3-%d.svg</a><br> \ |
<img src=\"%s_%d-3.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1,subdirf2(optionfilefiname,"PE_"),jj1); |
<img src=\"%s_%d-3-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
/* Survival functions (period) in state j */ |
/* Survival functions (period) in state j */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Survival functions in state %d. Or probability to survive in state %d being in state (1 to %d) at different ages. <a href=\"%s%d_%d.svg\">%s%d_%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Survival functions in state %d. Or probability to survive in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
<img src=\"%s_%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,jj1,subdirf2(optionfilefiname,"LIJ_"),cpt,jj1,subdirf2(optionfilefiname,"LIJ_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
} |
} |
/* State specific survival functions (period) */ |
/* State specific survival functions (period) */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Survival functions from state %d in each live state and total.\ |
fprintf(fichtm,"<br>\n- Survival functions from state %d in each live state and total.\ |
Or probability to survive in various states (1 to %d) being in state %d at different ages. \ |
Or probability to survive in various states (1 to %d) being in state %d at different ages. \ |
<a href=\"%s%d_%d.svg\">%s%d_%d.svg</a><br> <img src=\"%s_%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,jj1,subdirf2(optionfilefiname,"LIJT_"),cpt,jj1,subdirf2(optionfilefiname,"LIJT_"),cpt,jj1); |
<a href=\"%s_%d-%d-%d.svg\">%s_%d%d-%d.svg</a><br> <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
} |
} |
/* Period (stable) prevalence in each health state */ |
/* Period (stable) prevalence in each health state */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d.svg\">%s_%d-%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
<img src=\"%s_%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"P_"),cpt,jj1,subdirf2(optionfilefiname,"P_"),cpt,jj1,subdirf2(optionfilefiname,"P_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
} |
} |
if(backcast==1){ |
if(backcast==1){ |
/* Period (stable) back prevalence in each health state */ |
/* Period (stable) back prevalence in each health state */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Convergence to period (stable) back prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d.svg\">%s_%d-%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability for a person to be in state %d at a younger age, knowing that she/he was in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
<img src=\"%s_%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,jj1,subdirf2(optionfilefiname,"PB_"),cpt,jj1,subdirf2(optionfilefiname,"PB_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); |
} |
} |
} |
} |
if(prevfcast==1){ |
if(prevfcast==1){ |
/* Projection of prevalence up to period (stable) prevalence in each health state */ |
/* Projection of prevalence up to period (stable) prevalence in each health state */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f) up to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s%d_%d.svg\">%s%d_%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), from year %.1f up to year %.1f tending to period (stable) prevalence in state %d. Or probability to be in state %d being in an observed weighted state (from 1 to %d). <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
<img src=\"%s_%d-%d.svg\">", dateprev1, dateprev2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,jj1,subdirf2(optionfilefiname,"PROJ_"),cpt,jj1,subdirf2(optionfilefiname,"PROJ_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, dateproj1, dateproj2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); |
|
} |
|
} |
|
if(backcast==1){ |
|
/* Back projection of prevalence up to stable (mixed) back-prevalence in each health state */ |
|
for(cpt=1; cpt<=nlstate;cpt++){ |
|
fprintf(fichtm,"<br>\n- Back projection of cross-sectional prevalence (estimated with cases observed from %.1f to %.1f and mobil_average=%d), \ |
|
from year %.1f up to year %.1f (probably close to stable [mixed] back prevalence in state %d (randomness in cross-sectional prevalence is not taken into \ |
|
account but can visually be appreciated). Or probability to have been in an state %d, knowing that the person was in either state (1 or %d) \ |
|
with weights corresponding to observed prevalence at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
|
<img src=\"%s_%d-%d-%d.svg\">", dateprev1, dateprev2, mobilavproj, dateback1, dateback2, cpt, cpt, nlstate, subdirf2(optionfilefiname,"PROJB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PROJB_"),cpt,k1,nres); |
} |
} |
} |
} |
|
|
for(cpt=1; cpt<=nlstate;cpt++) { |
for(cpt=1; cpt<=nlstate;cpt++) { |
fprintf(fichtm,"\n<br>- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) (or area under each survival functions): <a href=\"%s_%d%d.svg\">%s_%d%d.svg</a> <br> \ |
fprintf(fichtm,"\n<br>- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) (or area under each survival functions): <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a> <br> \ |
<img src=\"%s_%d%d.svg\">",cpt,nlstate,subdirf2(optionfilefiname,"EXP_"),cpt,jj1,subdirf2(optionfilefiname,"EXP_"),cpt,jj1,subdirf2(optionfilefiname,"EXP_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">",cpt,nlstate,subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres,subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres,subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres); |
} |
} |
/* } /\* end i1 *\/ */ |
/* } /\* end i1 *\/ */ |
}/* End k1 */ |
}/* End k1 */ |
Line 6058 See page 'Matrix of variance-covariance
|
Line 6912 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(m != 1 && 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 6073 See page 'Matrix of variance-covariance
|
Line 6936 See page 'Matrix of variance-covariance
|
} |
} |
} |
} |
for(cpt=1; cpt<=nlstate;cpt++) { |
for(cpt=1; cpt<=nlstate;cpt++) { |
fprintf(fichtm,"\n<br>- Observed (cross-sectional) and period (incidence based) \ |
fprintf(fichtm,"\n<br>- Observed (cross-sectional with mov_average=%d) and period (incidence based) \ |
prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d.svg\"> %s_%d-%d.svg</a>\n <br>\ |
prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>\n <br>\ |
<img src=\"%s_%d-%d.svg\">",cpt,subdirf2(optionfilefiname,"V_"),cpt,jj1,subdirf2(optionfilefiname,"V_"),cpt,jj1,subdirf2(optionfilefiname,"V_"),cpt,jj1); |
<img src=\"%s_%d-%d-%d.svg\">",mobilav,cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
} |
} |
fprintf(fichtm,"\n<br>- Total life expectancy by age and \ |
fprintf(fichtm,"\n<br>- Total life expectancy by age and \ |
health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \ |
health expectancies in states (1) and (2). If popbased=1 the smooth (due to the model) \ |
true period expectancies (those weighted with period prevalences are also\ |
true period expectancies (those weighted with period prevalences are also\ |
drawn in addition to the population based expectancies computed using\ |
drawn in addition to the population based expectancies computed using\ |
observed and cahotic prevalences: <a href=\"%s_%d.svg\">%s_%d.svg</a>\n<br>\ |
observed and cahotic prevalences: <a href=\"%s_%d-%d.svg\">%s_%d-%d.svg</a>\n<br>\ |
<img src=\"%s_%d.svg\">",subdirf2(optionfilefiname,"E_"),jj1,subdirf2(optionfilefiname,"E_"),jj1,subdirf2(optionfilefiname,"E_"),jj1); |
<img src=\"%s_%d-%d.svg\">",subdirf2(optionfilefiname,"E_"),k1,nres,subdirf2(optionfilefiname,"E_"),k1,nres,subdirf2(optionfilefiname,"E_"),k1,nres); |
/* } /\* end i1 *\/ */ |
/* } /\* end i1 *\/ */ |
}/* End k1 */ |
}/* End k1 */ |
|
}/* End nres */ |
fprintf(fichtm,"</ul>"); |
fprintf(fichtm,"</ul>"); |
fflush(fichtm); |
fflush(fichtm); |
} |
} |
|
|
/******************* Gnuplot file **************/ |
/******************* Gnuplot file **************/ |
void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar, double agemaxpar, double fage , int prevfcast, int backcast, char pathc[], double p[]){ |
void printinggnuplot(char fileresu[], char optionfilefiname[], double ageminpar, double agemaxpar, double bage, double fage , int prevfcast, int backcast, char pathc[], double p[], int offyear, int offbyear){ |
|
|
char dirfileres[132],optfileres[132]; |
char dirfileres[132],optfileres[132]; |
char gplotcondition[132]; |
char gplotcondition[132], gplotlabel[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 iyearc=1; /* variable column for year of projection */ |
|
int iagec=1; /* variable column for age of projection */ |
|
int nres=0; /* Index of resultline */ |
|
int istart=1; /* For starting graphs in projections */ |
|
|
/* 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 6110 void printinggnuplot(char fileresu[], ch
|
Line 6978 void printinggnuplot(char fileresu[], ch
|
/*#endif */ |
/*#endif */ |
m=pow(2,cptcoveff); |
m=pow(2,cptcoveff); |
|
|
|
/* diagram of the model */ |
|
fprintf(ficgp,"\n#Diagram of the model \n"); |
|
fprintf(ficgp,"\ndelta=0.03;delta2=0.07;unset arrow;\n"); |
|
fprintf(ficgp,"yoff=(%d > 2? 0:1);\n",nlstate); |
|
fprintf(ficgp,"\n#Peripheral arrows\nset for [i=1:%d] for [j=1:%d] arrow i*10+j from cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.95*(cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) - cos(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta2:0)), -0.95*(sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) - sin(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d))+( i!=j?(i-j)/abs(i-j)*delta2:0)) ls (i < j? 1:2)\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
|
|
|
fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
|
fprintf(ficgp,"\n#show arrow\nunset label\n"); |
|
fprintf(ficgp,"\n#States labels, starting from 2 (2-i) instead of (1-i), was (i-1)\nset for [i=1:%d] label i sprintf(\"State %%d\",i) center at cos(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)), yoff+sin(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)) font \"helvetica, 16\" tc rgbcolor \"blue\"\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
|
fprintf(ficgp,"\nset label %d+1 sprintf(\"State %%d\",%d+1) center at 0.,0. font \"helvetica, 16\" tc rgbcolor \"red\"\n",nlstate,nlstate); |
|
fprintf(ficgp,"\n#show label\nunset border;unset xtics; unset ytics;\n"); |
|
fprintf(ficgp,"\n\nset ter svg size 640, 480;set out \"%s_.svg\" \n",subdirf2(optionfilefiname,"D_")); |
|
fprintf(ficgp,"unset log y; plot [-1.2:1.2][yoff-1.2:1.2] 1/0 not; set out;reset;\n"); |
|
|
/* Contribution to likelihood */ |
/* Contribution to likelihood */ |
/* Plot the probability implied in the likelihood */ |
/* Plot the probability implied in the likelihood */ |
fprintf(ficgp,"\n# Contributions to the Likelihood, mle >=1. For mle=4 no interpolation, pure matrix products.\n#\n"); |
fprintf(ficgp,"\n# Contributions to the Likelihood, mle >=1. For mle=4 no interpolation, pure matrix products.\n#\n"); |
Line 6142 void printinggnuplot(char fileresu[], ch
|
Line 7024 void printinggnuplot(char fileresu[], ch
|
strcpy(dirfileres,optionfilefiname); |
strcpy(dirfileres,optionfilefiname); |
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 */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
if(m != 1 && TKresult[nres]!= k1) |
lv= decodtabm(k1,k,cptcoveff); /* Should be the value of the covariate corresponding to k1 combination */ |
continue; |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* We are interested in selected combination by the resultline */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
fprintf(ficgp,"\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ |
strcpy(gplotlabel,"("); |
/* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
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 */ |
fprintf(ficgp,"\n#\n"); |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
if(invalidvarcomb[k1]){ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ |
continue; |
/* 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,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d.svg\" \n",optionfilefiname,cpt,k1); |
} |
fprintf(ficgp,"set xlabel \"Age\" \n\ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
set ylabel \"Probability\" \n \ |
/* printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ |
set ter svg size 640, 480\n \ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:2 \"%%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
for (i=1; i<= nlstate ; i ++) { |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
/* printf("\n#\n"); */ |
else fprintf(ficgp," %%*lf (%%*lf)"); |
fprintf(ficgp,"\n#\n"); |
} |
if(invalidvarcomb[k1]){ |
fprintf(ficgp,"\" t\"Period (stable) prevalence\" w l lt 0,\"%s\" every :::%d::%d u 1:($2+1.96*$3) \"%%lf",subdirf2(fileresu,"VPL_"),k1-1,k1-1); |
/*k1=k1-1;*/ /* To be checked */ |
for (i=1; i<= nlstate ; i ++) { |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
continue; |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
|
fprintf(ficgp,"\" t\"95%% CI\" w l lt 1,\"%s\" every :::%d::%d u 1:($2-1.96*$3) \"%%lf",subdirf2(fileresu,"VPL_"),k1-1,k1-1); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
for (i=1; i<= nlstate ; i ++) { |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d-%d.svg\" \n",optionfilefiname,cpt,k1,nres); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
/* fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); */ |
else fprintf(ficgp," %%*lf (%%*lf)"); |
fprintf(ficgp,"set title \"Alive state %d %s\" font \"Helvetica,12\"\n",cpt,gplotlabel); |
} |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
fprintf(ficgp,"\" t\"\" w l lt 1,\"%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence\" w l lt 2",subdirf2(fileresu,"P_"),k1-1,k1-1,2+4*(cpt-1)); |
/* fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1,nres); */ |
if(backcast==1){ /* We need to get the corresponding values of the covariates involved in this combination k1 */ |
/* k1-1 error should be nres-1*/ |
/* fprintf(ficgp,",\"%s\" every :::%d::%d u 1:($%d) t\"Backward stable prevalence\" w l lt 3",subdirf2(fileresu,"PLB_"),k1-1,k1-1,1+cpt); */ |
for (i=1; i<= nlstate ; i ++) { |
fprintf(ficgp,",\"%s\" u 1:((",subdirf2(fileresu,"PLB_")); /* Age is in 1 */ |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
if(cptcoveff ==0){ |
else fprintf(ficgp," %%*lf (%%*lf)"); |
fprintf(ficgp,"$%d)) t 'Backward prevalence in state %d' with line ", 2+(cpt-1), cpt ); |
} |
|
fprintf(ficgp,"\" t\"Period (stable) prevalence\" w l lt 0,\"%s\" every :::%d::%d u 1:($2==%d ? $3+1.96*$4 : 1/0) \"%%lf %%lf",subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
|
for (i=1; i<= nlstate ; i ++) { |
|
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"95%% CI\" w l lt 1,\"%s\" every :::%d::%d u 1:($2==%d ? $3-1.96*$4 : 1/0) \"%%lf %%lf",subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
|
for (i=1; i<= nlstate ; i ++) { |
|
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
/* fprintf(ficgp,"\" t\"\" w l lt 1,\"%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence\" w l lt 2",subdirf2(fileresu,"P_"),k1-1,k1-1,2+4*(cpt-1)); */ |
|
|
|
fprintf(ficgp,"\" t\"\" w l lt 1,\"%s\" u 1:((",subdirf2(fileresu,"P_")); |
|
if(cptcoveff ==0){ |
|
fprintf(ficgp,"$%d)) t 'Observed prevalence in state %d' with line lt 3", 2+3*(cpt-1), cpt ); |
}else{ |
}else{ |
kl=0; |
kl=0; |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
Line 6202 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 7099 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
if(k==cptcoveff){ |
if(k==cptcoveff){ |
fprintf(ficgp,"$%d==%d && $%d==%d)? $%d : 1/0) t 'Backward prevalence in state %d' ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv], \ |
fprintf(ficgp,"$%d==%d && $%d==%d)? $%d : 1/0) t 'Observed prevalence in state %d' w l lt 2",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv], \ |
4+(cpt-1), cpt ); /* 4 or 6 ?*/ |
2+cptcoveff*2+3*(cpt-1), cpt ); /* 4 or 6 ?*/ |
}else{ |
}else{ |
fprintf(ficgp,"$%d==%d && $%d==%d && ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv]); |
fprintf(ficgp,"$%d==%d && $%d==%d && ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv]); |
kl++; |
kl++; |
} |
} |
} /* end covariate */ |
} /* end covariate */ |
} /* end if no covariate */ |
} /* end if no covariate */ |
} /* end if backcast */ |
|
fprintf(ficgp,"\nset out \n"); |
if(backcast==1){ /* We need to get the corresponding values of the covariates involved in this combination k1 */ |
|
/* fprintf(ficgp,",\"%s\" every :::%d::%d u 1:($%d) t\"Backward stable prevalence\" w l lt 3",subdirf2(fileresu,"PLB_"),k1-1,k1-1,1+cpt); */ |
|
fprintf(ficgp,",\"%s\" u 1:((",subdirf2(fileresu,"PLB_")); /* Age is in 1, nres in 2 to be fixed */ |
|
if(cptcoveff ==0){ |
|
fprintf(ficgp,"$%d)) t 'Backward prevalence in state %d' with line lt 3", 2+(cpt-1), cpt ); |
|
}else{ |
|
kl=0; |
|
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
|
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
kl++; |
|
/* kl=6+(cpt-1)*(nlstate+1)+1+(i-1); /\* 6+(1-1)*(2+1)+1+(1-1)=7, 6+(2-1)(2+1)+1+(1-1)=10 *\/ */ |
|
/*6+(cpt-1)*(nlstate+1)+1+(i-1)+(nlstate+1)*nlstate; 6+(1-1)*(2+1)+1+(1-1) +(2+1)*2=13 */ |
|
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
|
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
|
if(k==cptcoveff){ |
|
fprintf(ficgp,"$%d==%d && $%d==%d)? $%d : 1/0) t 'Backward prevalence in state %d' w l lt 3",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv], \ |
|
2+cptcoveff*2+(cpt-1), cpt ); /* 4 or 6 ?*/ |
|
}else{ |
|
fprintf(ficgp,"$%d==%d && $%d==%d && ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv]); |
|
kl++; |
|
} |
|
} /* end covariate */ |
|
} /* end if no covariate */ |
|
if(backcast == 1){ |
|
fprintf(ficgp,", \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",subdirf2(fileresu,"VBL_"),nres-1,nres-1,nres); |
|
/* k1-1 error should be nres-1*/ |
|
for (i=1; i<= nlstate ; i ++) { |
|
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"Backward (stable) prevalence\" w l lt 6 dt 3,\"%s\" every :::%d::%d u 1:($2==%d ? $3+1.96*$4 : 1/0) \"%%lf %%lf",subdirf2(fileresu,"VBL_"),nres-1,nres-1,nres); |
|
for (i=1; i<= nlstate ; i ++) { |
|
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"95%% CI\" w l lt 4,\"%s\" every :::%d::%d u 1:($2==%d ? $3-1.96*$4 : 1/0) \"%%lf %%lf",subdirf2(fileresu,"VBL_"),nres-1,nres-1,nres); |
|
for (i=1; i<= nlstate ; i ++) { |
|
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"\" w l lt 4"); |
|
} /* end if backprojcast */ |
|
} /* end if backcast */ |
|
/* fprintf(ficgp,"\nset out ;unset label;\n"); */ |
|
fprintf(ficgp,"\nset out ;unset title;\n"); |
|
} /* nres */ |
} /* k1 */ |
} /* k1 */ |
} /* cpt */ |
} /* cpt */ |
/*2 eme*/ |
|
for (k1=1; k1<= m ; k1 ++) { |
|
|
|
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
|
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
/*2 eme*/ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
for (k1=1; k1<= m ; k1 ++){ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
if(m != 1 && TKresult[nres]!= k1) |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
continue; |
vlv= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
strcpy(gplotlabel,"("); |
} |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
|
} |
|
|
|
fprintf(ficgp,"\nset out \"%s_%d.svg\" \n",subdirf2(optionfilefiname,"E_"),k1); |
|
for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/ |
|
if(vpopbased==0) |
|
fprintf(ficgp,"set ylabel \"Years\" \nset ter svg size 640, 480\nplot [%.f:%.f] ",ageminpar,fage); |
|
else |
|
fprintf(ficgp,"\nreplot "); |
|
for (i=1; i<= nlstate+1 ; i ++) { |
|
k=2*i; |
|
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ?$4 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),k1-1,k1-1, vpopbased); |
|
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
if (i== 1) fprintf(ficgp,"\" t\"TLE\" w l lt %d, \\\n",i); |
|
else fprintf(ficgp,"\" t\"LE in state (%d)\" w l lt %d, \\\n",i-1,i+1); |
|
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ? $4-$5*2 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),k1-1,k1-1,vpopbased); |
|
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"\" w l lt 0,"); |
|
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ? $4+$5*2 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),k1-1,k1-1,vpopbased); |
|
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
if (i== (nlstate+1)) fprintf(ficgp,"\" t\"\" w l lt 0"); |
|
else fprintf(ficgp,"\" t\"\" w l lt 0,\\\n"); |
|
} /* state */ |
|
} /* vpopbased */ |
|
fprintf(ficgp,"\nset out;set out \"%s_%d.svg\"; replot; set out; \n",subdirf2(optionfilefiname,"E_"),k1); /* Buggy gnuplot */ |
|
} /* k1 */ |
|
|
|
|
|
/*3eme*/ |
|
for (k1=1; k1<= m ; k1 ++) { |
|
|
|
for (cpt=1; cpt<= nlstate ; cpt ++) { |
|
fprintf(ficgp,"\n# 3d: Life expectancy with EXP_ files: cov=%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 */ |
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 */ |
Line 6278 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 7176 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
/* 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= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
|
/* for(k=1; k <= ncovds; k++){ */ |
|
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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
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; |
} |
} |
|
|
/* k=2+nlstate*(2*cpt-2); */ |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"E_"),k1,nres); |
k=2+(nlstate+1)*(cpt-1); |
for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/ |
fprintf(ficgp,"\nset out \"%s_%d%d.svg\" \n",subdirf2(optionfilefiname,"EXP_"),cpt,k1); |
fprintf(ficgp,"\nset label \"popbased %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",vpopbased,gplotlabel); |
fprintf(ficgp,"set ter svg size 640, 480\n\ |
if(vpopbased==0){ |
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:%d t \"e%d1\" w l",ageminpar,fage,subdirf2(fileresu,"E_"),k1-1,k1-1,k,cpt); |
fprintf(ficgp,"set ylabel \"Years\" \nset ter svg size 640, 480\nplot [%.f:%.f] ",ageminpar,fage); |
/*fprintf(ficgp,",\"e%s\" every :::%d::%d u 1:($%d-2*$%d) \"\%%lf ",fileres,k1-1,k1-1,k,k+1); |
}else |
for (i=1; i<= nlstate*2 ; i ++) fprintf(ficgp,"\%%lf (\%%lf) "); |
fprintf(ficgp,"\nreplot "); |
fprintf(ficgp,"\" t \"e%d1\" w l",cpt); |
for (i=1; i<= nlstate+1 ; i ++) { |
fprintf(ficgp,",\"e%s\" every :::%d::%d u 1:($%d+2*$%d) \"\%%lf ",fileres,k1-1,k1-1,k,k+1); |
k=2*i; |
for (i=1; i<= nlstate*2 ; i ++) fprintf(ficgp,"\%%lf (\%%lf) "); |
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ?$4 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),nres-1,nres-1, vpopbased); |
fprintf(ficgp,"\" t \"e%d1\" w l",cpt); |
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
if (i== 1) fprintf(ficgp,"\" t\"TLE\" w l lt %d, \\\n",i); |
|
else fprintf(ficgp,"\" t\"LE in state (%d)\" w l lt %d, \\\n",i-1,i+1); |
|
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ? $4-$5*2 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),nres-1,nres-1,vpopbased); |
|
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
fprintf(ficgp,"\" t\"\" w l lt 0,"); |
|
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2==%d && $4!=0 ? $4+$5*2 : 1/0) \"%%lf %%lf %%lf",subdirf2(fileresu,"T_"),nres-1,nres-1,vpopbased); |
|
for (j=1; j<= nlstate+1 ; j ++) { |
|
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
|
else fprintf(ficgp," %%*lf (%%*lf)"); |
|
} |
|
if (i== (nlstate+1)) fprintf(ficgp,"\" t\"\" w l lt 0"); |
|
else fprintf(ficgp,"\" t\"\" w l lt 0,\\\n"); |
|
} /* state */ |
|
} /* vpopbased */ |
|
fprintf(ficgp,"\nset out;set out \"%s_%d-%d.svg\"; replot; set out; unset label;\n",subdirf2(optionfilefiname,"E_"),k1,nres); /* Buggy gnuplot */ |
|
} /* end nres */ |
|
} /* k1 end 2 eme*/ |
|
|
|
|
|
/*3eme*/ |
|
for (k1=1; k1<= m ; k1 ++){ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
|
|
for (cpt=1; cpt<= nlstate ; cpt ++) { |
|
fprintf(ficgp,"\n\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); |
|
strcpy(gplotlabel,"("); |
|
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 */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
|
} |
|
|
|
/* k=2+nlstate*(2*cpt-2); */ |
|
k=2+(nlstate+1)*(cpt-1); |
|
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"%s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",gplotlabel); |
|
fprintf(ficgp,"set ter svg size 640, 480\n\ |
|
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:%d t \"e%d1\" w l",ageminpar,fage,subdirf2(fileresu,"E_"),nres-1,nres-1,k,cpt); |
|
/*fprintf(ficgp,",\"e%s\" every :::%d::%d u 1:($%d-2*$%d) \"\%%lf ",fileres,k1-1,k1-1,k,k+1); |
|
for (i=1; i<= nlstate*2 ; i ++) fprintf(ficgp,"\%%lf (\%%lf) "); |
|
fprintf(ficgp,"\" t \"e%d1\" w l",cpt); |
|
fprintf(ficgp,",\"e%s\" every :::%d::%d u 1:($%d+2*$%d) \"\%%lf ",fileres,k1-1,k1-1,k,k+1); |
|
for (i=1; i<= nlstate*2 ; i ++) fprintf(ficgp,"\%%lf (\%%lf) "); |
|
fprintf(ficgp,"\" t \"e%d1\" w l",cpt); |
|
|
*/ |
*/ |
for (i=1; i< nlstate ; i ++) { |
for (i=1; i< nlstate ; i ++) { |
fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",subdirf2(fileresu,"E_"),k1-1,k1-1,k+i,cpt,i+1); |
fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",subdirf2(fileresu,"E_"),nres-1,nres-1,k+i,cpt,i+1); |
/* fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",subdirf2(fileres,"e"),k1-1,k1-1,k+2*i,cpt,i+1);*/ |
/* fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",subdirf2(fileres,"e"),k1-1,k1-1,k+2*i,cpt,i+1);*/ |
|
|
} |
} |
fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d.\" w l",subdirf2(fileresu,"E_"),k1-1,k1-1,k+nlstate,cpt); |
fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d.\" w l",subdirf2(fileresu,"E_"),nres-1,nres-1,k+nlstate,cpt); |
} |
} |
} |
fprintf(ficgp,"\nunset label;\n"); |
|
} /* end nres */ |
|
} /* end kl 3eme */ |
|
|
/* 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 and each value */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
if(m != 1 && TKresult[nres]!= k1) |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
|
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 */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
} |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
continue; |
} |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ |
|
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"LIJ_"),cpt,k1); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability to be alive\" \n\ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
set ter svg size 640, 480\n \ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
unset log y\n \ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
plot [%.f:%.f] ", ageminpar, agemaxpar); |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
k=3; |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
for (i=1; i<= nlstate ; i ++){ |
vlv= nbcode[Tvaraff[k]][lv]; |
if(i==1){ |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
}else{ |
|
fprintf(ficgp,", '' "); |
|
} |
} |
l=(nlstate+ndeath)*(i-1)+1; |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
for (j=2; j<= nlstate+ndeath ; j ++) |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp,"+$%d",k+l+j-1); |
} |
fprintf(ficgp,")) t \"l(%d,%d)\" w l",i,cpt); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
} /* nlstate */ |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\nset out\n"); |
if(invalidvarcomb[k1]){ |
} /* end cpt state*/ |
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
} /* end covariate */ |
continue; |
|
} |
|
|
|
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
|
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability to be alive\" \n\ |
|
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
|
k=3; |
|
for (i=1; i<= nlstate ; i ++){ |
|
if(i==1){ |
|
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
|
}else{ |
|
fprintf(ficgp,", '' "); |
|
} |
|
l=(nlstate+ndeath)*(i-1)+1; |
|
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); |
|
for (j=2; j<= nlstate+ndeath ; j ++) |
|
fprintf(ficgp,"+$%d",k+l+j-1); |
|
fprintf(ficgp,")) t \"l(%d,%d)\" w l",i,cpt); |
|
} /* nlstate */ |
|
fprintf(ficgp,"\nset out; unset label;\n"); |
|
} /* end cpt state*/ |
|
} /* end nres */ |
|
} /* end covariate k1 */ |
|
|
/* 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 (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(m != 1 && TKresult[nres]!= k1) |
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); |
|
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 */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
} |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
continue; |
} |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
|
strcpy(gplotlabel,"("); |
|
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); |
|
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 */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
|
} |
|
|
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"LIJT_"),cpt,k1); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability to be alive\" \n\ |
fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
set ter svg size 640, 480\n \ |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability to be alive\" \n\ |
unset log y\n \ |
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
plot [%.f:%.f] ", ageminpar, agemaxpar); |
k=3; |
k=3; |
for (j=1; j<= nlstate ; j ++){ /* Lived in state j */ |
for (j=1; j<= nlstate ; j ++){ /* Lived in state j */ |
if(j==1) |
if(j==1) |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
else |
else |
fprintf(ficgp,", '' "); |
fprintf(ficgp,", '' "); |
l=(nlstate+ndeath)*(cpt-1) +j; |
l=(nlstate+ndeath)*(cpt-1) +j; |
fprintf(ficgp," u (($1==%d && (floor($2)%%5 == 0)) ? ($3):1/0):($%d",k1,k+l); |
fprintf(ficgp," u (($1==%d && (floor($2)%%5 == 0)) ? ($3):1/0):($%d",k1,k+l); |
/* for (i=2; i<= nlstate+ndeath ; i ++) */ |
/* for (i=2; i<= nlstate+ndeath ; i ++) */ |
/* fprintf(ficgp,"+$%d",k+l+i-1); */ |
/* fprintf(ficgp,"+$%d",k+l+i-1); */ |
fprintf(ficgp,") t \"l(%d,%d)\" w l",cpt,j); |
fprintf(ficgp,") t \"l(%d,%d)\" w l",cpt,j); |
} /* nlstate */ |
} /* nlstate */ |
fprintf(ficgp,", '' "); |
fprintf(ficgp,", '' "); |
fprintf(ficgp," u (($1==%d && (floor($2)%%5 == 0)) ? ($3):1/0):(",k1); |
fprintf(ficgp," u (($1==%d && (floor($2)%%5 == 0)) ? ($3):1/0):(",k1); |
for (j=1; j<= nlstate ; j ++){ /* Lived in state j */ |
for (j=1; j<= nlstate ; j ++){ /* Lived in state j */ |
l=(nlstate+ndeath)*(cpt-1) +j; |
l=(nlstate+ndeath)*(cpt-1) +j; |
if(j < nlstate) |
if(j < nlstate) |
fprintf(ficgp,"$%d +",k+l); |
fprintf(ficgp,"$%d +",k+l); |
else |
else |
fprintf(ficgp,"$%d) t\"l(%d,.)\" w l",k+l,cpt); |
fprintf(ficgp,"$%d) t\"l(%d,.)\" w l",k+l,cpt); |
} |
} |
fprintf(ficgp,"\nset out; unset label;\n"); |
fprintf(ficgp,"\nset out\n"); |
} /* end cpt state*/ |
} /* end cpt state*/ |
} /* end covariate */ |
} /* end covariate */ |
} /* end nres */ |
|
|
/* 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 (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state of arrival */ |
|
strcpy(gplotlabel,"("); |
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); |
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 6412 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7407 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/* 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= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
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,"P_"),cpt,k1); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
set ter svg size 640, 480\n \ |
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
unset log y\n \ |
|
plot [%.f:%.f] ", ageminpar, agemaxpar); |
|
k=3; /* Offset */ |
k=3; /* Offset */ |
for (i=1; i<= nlstate ; i ++){ |
for (i=1; i<= nlstate ; i ++){ /* State of origin */ |
if(i==1) |
if(i==1) |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJ_")); |
else |
else |
fprintf(ficgp,", '' "); |
fprintf(ficgp,", '' "); |
l=(nlstate+ndeath)*(i-1)+1; |
l=(nlstate+ndeath)*(i-1)+1; /* 1, 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); |
for (j=2; j<= nlstate ; j ++) |
for (j=2; j<= nlstate ; j ++) |
fprintf(ficgp,"+$%d",k+l+j-1); |
fprintf(ficgp,"+$%d",k+l+j-1); |
fprintf(ficgp,")) t \"prev(%d,%d)\" w l",i,cpt); |
fprintf(ficgp,")) t \"prev(%d,%d)\" w l",i,cpt); |
} /* nlstate */ |
} /* nlstate */ |
fprintf(ficgp,"\nset out\n"); |
fprintf(ficgp,"\nset out; unset label;\n"); |
} /* end cpt state*/ |
} /* end cpt state*/ |
} /* end covariate */ |
} /* end covariate */ |
|
|
Line 6444 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7444 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 (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life origin state */ |
|
strcpy(gplotlabel,"("); |
|
fprintf(ficgp,"\n#\n#\n#CV Back preval stable (period): 'pijb' 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 */ |
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 */ |
Line 6454 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7458 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/* 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= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
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,"PB_"),cpt,k1); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"Origin alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\ |
set ter svg size 640, 480\n \ |
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
unset log y\n \ |
|
plot [%.f:%.f] ", ageminpar, agemaxpar); |
|
k=3; /* Offset */ |
k=3; /* Offset */ |
for (i=1; i<= nlstate ; i ++){ |
for (i=1; i<= nlstate ; i ++){ /* State of arrival */ |
if(i==1) |
if(i==1) |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_")); |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"PIJB_")); |
else |
else |
fprintf(ficgp,", '' "); |
fprintf(ficgp,", '' "); |
/* l=(nlstate+ndeath)*(i-1)+1; */ |
/* l=(nlstate+ndeath)*(i-1)+1; */ |
l=(nlstate+ndeath)*(cpt-1)+1; |
l=(nlstate+ndeath)*(cpt-1)+1; /* fixed for i; cpt=1 1, cpt=2 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+(cpt-1)+i-1); /* a vérifier */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+i-1); /* To be verified */ |
/* for (j=2; j<= nlstate ; j ++) */ |
/* for (j=2; j<= nlstate ; j ++) */ |
/* fprintf(ficgp,"+$%d",k+l+j-1); */ |
/* fprintf(ficgp,"+$%d",k+l+j-1); */ |
/* /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */ |
/* /\* fprintf(ficgp,"+$%d",k+l+j-1); *\/ */ |
fprintf(ficgp,") t \"bprev(%d,%d)\" w l",i,cpt); |
fprintf(ficgp,") t \"bprev(%d,%d)\" w l",cpt,i); |
} /* nlstate */ |
} /* nlstate */ |
fprintf(ficgp,"\nset out\n"); |
fprintf(ficgp,"\nset out; unset label;\n"); |
} /* end cpt state*/ |
} /* end cpt state*/ |
} /* end covariate */ |
} /* end covariate */ |
} /* End if backcast */ |
} /* End if backcast */ |
Line 6491 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7500 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(m != 1 && TKresult[nres]!= k1) |
|
continue; |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
|
strcpy(gplotlabel,"("); |
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 */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
Line 6501 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7514 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/* 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= nbcode[Tvaraff[k]][lv]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
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 6509 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7528 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
} |
} |
|
|
fprintf(ficgp,"# hpijx=probability over h years, hp.jx is weighted by observed prev\n "); |
fprintf(ficgp,"# hpijx=probability over h years, hp.jx is weighted by observed prev\n "); |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" \n",subdirf2(optionfilefiname,"PROJ_"),cpt,k1); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"PROJ_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Prevalence\" \n\ |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Prevalence\" \n\ |
set ter svg size 640, 480\n \ |
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
unset log y\n \ |
|
plot [%.f:%.f] ", ageminpar, agemaxpar); |
/* for (i=1; i<= nlstate+1 ; i ++){ /\* nlstate +1 p11 p21 p.1 *\/ */ |
for (i=1; i<= nlstate+1 ; i ++){ /* nlstate +1 p11 p21 p.1 */ |
istart=nlstate+1; /* Could be one if by state, but nlstate+1 is w.i projection only */ |
|
/*istart=1;*/ /* Could be one if by state, but nlstate+1 is w.i projection only */ |
|
for (i=istart; i<= nlstate+1 ; i ++){ /* nlstate +1 p11 p21 p.1 */ |
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
/*# yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
/*# yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
if(i==1){ |
if(i==istart){ |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"F_")); |
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"F_")); |
}else{ |
}else{ |
fprintf(ficgp,",\\\n '' "); |
fprintf(ficgp,",\\\n '' "); |
Line 6531 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7553 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/*# V1 = 1 yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ |
/*# V1 = 1 yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ |
fprintf(ficgp," u %d:(", ioffset); |
fprintf(ficgp," u %d:(", ioffset); |
if(i==nlstate+1) |
if(i==nlstate+1){ |
fprintf(ficgp," $%d/(1.-$%d)) t 'pw.%d' with line ", \ |
fprintf(ficgp," $%d/(1.-$%d)):1 t 'pw.%d' with line lc variable ", \ |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,cpt ); |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,cpt ); |
else |
fprintf(ficgp,",\\\n '' "); |
|
fprintf(ficgp," u %d:(",ioffset); |
|
fprintf(ficgp," (($1-$2) == %d ) ? $%d/(1.-$%d) : 1/0):1 with labels center not ", \ |
|
offyear, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate ); |
|
}else |
fprintf(ficgp," $%d/(1.-$%d)) t 'p%d%d' with line ", \ |
fprintf(ficgp," $%d/(1.-$%d)) t 'p%d%d' with line ", \ |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,i,cpt ); |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,i,cpt ); |
}else{ /* more than 2 covariates */ |
}else{ /* more than 2 covariates */ |
if(cptcoveff ==1){ |
ioffset=2*cptcoveff+2; /* Age is in 4 or 6 or etc.*/ |
ioffset=4; /* Age is in 4 */ |
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
}else{ |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
ioffset=6; /* Age is in 6 */ |
iyearc=ioffset-1; |
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
iagec=ioffset; |
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
|
} |
|
fprintf(ficgp," u %d:(",ioffset); |
fprintf(ficgp," u %d:(",ioffset); |
kl=0; |
kl=0; |
strcpy(gplotcondition,"("); |
strcpy(gplotcondition,"("); |
Line 6566 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7591 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
if(i==nlstate+1){ |
if(i==nlstate+1){ |
fprintf(ficgp,"%s ? $%d/(1.-$%d) : 1/0) t 'p.%d' with line ", gplotcondition, \ |
fprintf(ficgp,"%s ? $%d/(1.-$%d) : 1/0):%d t 'p.%d' with line lc variable", gplotcondition, \ |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,cpt ); |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,iyearc, cpt ); |
|
fprintf(ficgp,",\\\n '' "); |
|
fprintf(ficgp," u %d:(",iagec); |
|
fprintf(ficgp,"%s && (($%d-$%d) == %d ) ? $%d/(1.-$%d) : 1/0):%d with labels center not ", gplotcondition, \ |
|
iyearc, iagec, offyear, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate, iyearc ); |
|
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0) && (($5-$6) == 1947) ? $10/(1.-$22) : 1/0):5 with labels center boxed not*/ |
}else{ |
}else{ |
fprintf(ficgp,"%s ? $%d/(1.-$%d) : 1/0) t 'p%d%d' with line ", gplotcondition, \ |
fprintf(ficgp,"%s ? $%d/(1.-$%d) : 1/0) t 'p%d%d' with line ", gplotcondition, \ |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset +1+(i-1)+(nlstate+1)*nlstate,i,cpt ); |
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset +1+(i-1)+(nlstate+1)*nlstate,i,cpt ); |
} |
} |
} /* end if covariate */ |
} /* end if covariate */ |
} /* nlstate */ |
} /* nlstate */ |
fprintf(ficgp,"\nset out\n"); |
fprintf(ficgp,"\nset out; unset label;\n"); |
} /* end cpt state*/ |
} /* end cpt state*/ |
} /* end covariate */ |
} /* end covariate */ |
} /* End if prevfcast */ |
} /* End if prevfcast */ |
|
|
|
if(backcast==1){ |
|
/* Back projection from cross-sectional to stable (mixed) for each covariate */ |
|
|
|
for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
|
strcpy(gplotlabel,"("); |
|
fprintf(ficgp,"\n#\n#\n#Back projection of prevalence to stable (mixed) back prevalence: 'BPROJ_' files, covariatecombination#=%d originstate=%d",k1, cpt); |
|
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
|
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
|
fprintf(ficgp,"\n#\n"); |
|
if(invalidvarcomb[k1]){ |
|
fprintf(ficgp,"#Combination (%d) ignored because no cases \n",k1); |
|
continue; |
|
} |
|
|
|
fprintf(ficgp,"# hbijx=backprobability over h years, hb.jx is weighted by observed prev at destination state\n "); |
|
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"PROJB_"),cpt,k1,nres); |
|
fprintf(ficgp,"set label \"Origin alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); |
|
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Prevalence\" \n\ |
|
set ter svg size 640, 480\nunset log y\nplot [%.f:%.f] ", ageminpar, agemaxpar); |
|
|
|
/* for (i=1; i<= nlstate+1 ; i ++){ /\* nlstate +1 p11 p21 p.1 *\/ */ |
|
istart=nlstate+1; /* Could be one if by state, but nlstate+1 is w.i projection only */ |
|
/*istart=1;*/ /* Could be one if by state, but nlstate+1 is w.i projection only */ |
|
for (i=istart; i<= nlstate+1 ; i ++){ /* nlstate +1 p11 p21 p.1 */ |
|
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
|
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
|
/*# yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
|
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
|
if(i==istart){ |
|
fprintf(ficgp,"\"%s\"",subdirf2(fileresu,"FB_")); |
|
}else{ |
|
fprintf(ficgp,",\\\n '' "); |
|
} |
|
if(cptcoveff ==0){ /* No covariate */ |
|
ioffset=2; /* Age is in 2 */ |
|
/*# yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ |
|
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ |
|
/*# V1 = 1 yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ |
|
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ |
|
fprintf(ficgp," u %d:(", ioffset); |
|
if(i==nlstate+1){ |
|
fprintf(ficgp," $%d/(1.-$%d)):1 t 'bw%d' with line lc variable ", \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,cpt ); |
|
fprintf(ficgp,",\\\n '' "); |
|
fprintf(ficgp," u %d:(",ioffset); |
|
fprintf(ficgp," (($1-$2) == %d ) ? $%d : 1/0):1 with labels center not ", \ |
|
offbyear, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1) ); |
|
}else |
|
fprintf(ficgp," $%d/(1.-$%d)) t 'b%d%d' with line ", \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), ioffset+1+(i-1)+(nlstate+1)*nlstate,cpt,i ); |
|
}else{ /* more than 2 covariates */ |
|
ioffset=2*cptcoveff+2; /* Age is in 4 or 6 or etc.*/ |
|
/*# V1 = 1 V2 = 0 yearproj age p11 p21 p.1 p12 p22 p.2 p13 p23 p.3*/ |
|
/*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
|
iyearc=ioffset-1; |
|
iagec=ioffset; |
|
fprintf(ficgp," u %d:(",ioffset); |
|
kl=0; |
|
strcpy(gplotcondition,"("); |
|
for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ |
|
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; /* Value of the modality of Tvaraff[k] */ |
|
kl++; |
|
sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
|
kl++; |
|
if(k <cptcoveff && cptcoveff>1) |
|
sprintf(gplotcondition+strlen(gplotcondition)," && "); |
|
} |
|
strcpy(gplotcondition+strlen(gplotcondition),")"); |
|
/* kl=6+(cpt-1)*(nlstate+1)+1+(i-1); /\* 6+(1-1)*(2+1)+1+(1-1)=7, 6+(2-1)(2+1)+1+(1-1)=10 *\/ */ |
|
/*6+(cpt-1)*(nlstate+1)+1+(i-1)+(nlstate+1)*nlstate; 6+(1-1)*(2+1)+1+(1-1) +(2+1)*2=13 */ |
|
/*6+1+(i-1)+(nlstate+1)*nlstate; 6+1+(1-1) +(2+1)*2=13 */ |
|
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0)? $9/(1.-$15) : 1/0):($5==2000? 3:2) t 'p.1' with line lc variable*/ |
|
if(i==nlstate+1){ |
|
fprintf(ficgp,"%s ? $%d : 1/0):%d t 'bw%d' with line lc variable", gplotcondition, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1),iyearc,cpt ); |
|
fprintf(ficgp,",\\\n '' "); |
|
fprintf(ficgp," u %d:(",iagec); |
|
/* fprintf(ficgp,"%s && (($5-$6) == %d ) ? $%d/(1.-$%d) : 1/0):5 with labels center not ", gplotcondition, \ */ |
|
fprintf(ficgp,"%s && (($%d-$%d) == %d ) ? $%d : 1/0):%d with labels center not ", gplotcondition, \ |
|
iyearc,iagec,offbyear, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), iyearc ); |
|
/* '' u 6:(($1==1 && $2==0 && $3==2 && $4==0) && (($5-$6) == 1947) ? $10/(1.-$22) : 1/0):5 with labels center boxed not*/ |
|
}else{ |
|
/* fprintf(ficgp,"%s ? $%d/(1.-$%d) : 1/0) t 'p%d%d' with line ", gplotcondition, \ */ |
|
fprintf(ficgp,"%s ? $%d : 1/0) t 'b%d%d' with line ", gplotcondition, \ |
|
ioffset+(cpt-1)*(nlstate+1)+1+(i-1), cpt,i ); |
|
} |
|
} /* end if covariate */ |
|
} /* nlstate */ |
|
fprintf(ficgp,"\nset out; unset label;\n"); |
|
} /* end cpt state*/ |
|
} /* end covariate */ |
|
} /* End if backcast */ |
|
|
|
|
/* proba elementaires */ |
/* 9eme writing MLE parameters */ |
fprintf(ficgp,"\n##############\n#MLE estimated parameters\n#############\n"); |
fprintf(ficgp,"\n##############\n#9eme MLE estimated parameters\n#############\n"); |
for(i=1,jk=1; i <=nlstate; i++){ |
for(i=1,jk=1; i <=nlstate; i++){ |
fprintf(ficgp,"# initial state %d\n",i); |
fprintf(ficgp,"# initial state %d\n",i); |
for(k=1; k <=(nlstate+ndeath); k++){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
Line 6598 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7744 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
fprintf(ficgp,"##############\n#\n"); |
fprintf(ficgp,"##############\n#\n"); |
|
|
/*goto avoid;*/ |
/*goto avoid;*/ |
fprintf(ficgp,"\n##############\n#Graphics of probabilities or incidences\n#############\n"); |
/* 10eme Graphics of probabilities or incidences using written MLE parameters */ |
|
fprintf(ficgp,"\n##############\n#10eme Graphics of probabilities or incidences\n#############\n"); |
fprintf(ficgp,"# logi(p12/p11)=a12+b12*age+c12age*age+d12*V1+e12*V1*age\n"); |
fprintf(ficgp,"# logi(p12/p11)=a12+b12*age+c12age*age+d12*V1+e12*V1*age\n"); |
fprintf(ficgp,"# logi(p12/p11)=p1 +p2*age +p3*age*age+ p4*V1+ p5*V1*age\n"); |
fprintf(ficgp,"# logi(p12/p11)=p1 +p2*age +p3*age*age+ p4*V1+ p5*V1*age\n"); |
fprintf(ficgp,"# logi(p13/p11)=a13+b13*age+c13age*age+d13*V1+e13*V1*age\n"); |
fprintf(ficgp,"# logi(p13/p11)=a13+b13*age+c13age*age+d13*V1+e13*V1*age\n"); |
Line 6613 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7760 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,"# ng=%d\n",ng); |
fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year\n"); |
fprintf(ficgp,"# jk=1 to 2^%d=%d\n",cptcoveff,m); |
fprintf(ficgp,"#model=%s \n",model); |
for(jk=1; jk <=m; jk++) { |
fprintf(ficgp,"# Type of graphic ng=%d\n",ng); |
fprintf(ficgp,"# jk=%d\n",jk); |
fprintf(ficgp,"# k1=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ |
fprintf(ficgp,"\nset out \"%s_%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),jk,ng); |
for(k1=1; k1 <=m; k1++) /* For each combination of covariate */ |
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
fprintf(ficgp,"\n\n# Combination of dummy k1=%d which is ",k1); |
|
strcpy(gplotlabel,"("); |
|
/*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ |
|
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
|
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
|
/* 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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
|
vlv= nbcode[Tvaraff[k]][lv]; |
|
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
|
sprintf(gplotlabel+strlen(gplotlabel)," 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]); |
|
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
strcpy(gplotlabel+strlen(gplotlabel),")"); |
|
fprintf(ficgp,"\n#\n"); |
|
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),k1,ng,nres); |
|
fprintf(ficgp,"\nset key outside "); |
|
/* fprintf(ficgp,"\nset label \"%s\" at graph 1.2,0.5 center rotate font \"Helvetica,12\"\n",gplotlabel); */ |
|
fprintf(ficgp,"\nset title \"%s\" font \"Helvetica,12\"\n",gplotlabel); |
fprintf(ficgp,"\nset ter svg size 640, 480 "); |
fprintf(ficgp,"\nset ter svg size 640, 480 "); |
if (ng==1){ |
if (ng==1){ |
fprintf(ficgp,"\nset ylabel \"Value of the logit of the model\"\n"); /* exp(a12+b12*x) could be nice */ |
fprintf(ficgp,"\nset ylabel \"Value of the logit of the model\"\n"); /* exp(a12+b12*x) could be nice */ |
Line 6657 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7829 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(cptcovage >0){ /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
if(j==Tage[ij]) { /* Product by age To be looked at!!*/ |
fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,j-2)]); |
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,Tvar[j-2])]); */ |
if(DummyV[j]==0){ |
ij++; |
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(k1,Tvar[j-2])]); */ |
|
} |
|
ij++; |
|
} |
|
} |
|
}else if(cptcovprod >0){ |
|
if(j==Tprod[ijp]) { /* */ |
|
/* printf("Tprod[%d]=%d, j=%d\n", ij, Tprod[ijp], j); */ |
|
if(ijp <=cptcovprod) { /* Product */ |
|
if(DummyV[Tvard[ijp][1]]==0){/* Vn is dummy */ |
|
if(DummyV[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(k1,j)],nbcode[Tvard[ijp][2]][codtabm(k1,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(k1,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(DummyV[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]]); |
|
} |
|
} |
|
ijp++; |
|
} |
|
} /* end Tprod */ |
|
} else{ /* simple covariate */ |
|
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,nbcode[Tvar[j]][codtabm(k1,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(k1,Tvar[j-2])]); */ |
} |
} |
} |
} /* end simple */ |
else |
} /* end j */ |
fprintf(ficgp,"+p%d*%d",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(jk,j-2)]); /* Valgrind bug nbcode */ |
|
} |
|
}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 6678 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7886 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
if(ng != 1){ |
if(ng != 1){ |
fprintf(ficgp,")/(1"); |
fprintf(ficgp,")/(1"); |
|
|
for(k1=1; k1 <=nlstate; k1++){ |
for(cpt=1; cpt <=nlstate; cpt++){ |
if(nagesqr==0) |
if(nagesqr==0) |
fprintf(ficgp,"+exp(p%d+p%d*x",k3+(k1-1)*ncovmodel,k3+(k1-1)*ncovmodel+1); |
fprintf(ficgp,"+exp(p%d+p%d*x",k3+(cpt-1)*ncovmodel,k3+(cpt-1)*ncovmodel+1); |
else /* nagesqr =1 */ |
else /* nagesqr =1 */ |
fprintf(ficgp,"+exp(p%d+p%d*x+p%d*x*x",k3+(k1-1)*ncovmodel,k3+(k1-1)*ncovmodel+1,k3+(k1-1)*ncovmodel+1+nagesqr); |
fprintf(ficgp,"+exp(p%d+p%d*x+p%d*x*x",k3+(cpt-1)*ncovmodel,k3+(cpt-1)*ncovmodel+1,k3+(cpt-1)*ncovmodel+1+nagesqr); |
|
|
ij=1; |
ij=1; |
for(j=3; j <=ncovmodel-nagesqr; j++){ |
for(j=3; j <=ncovmodel-nagesqr; j++){ |
if(ij <=cptcovage) { /* Bug valgrind */ |
if(cptcovage >0){ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
fprintf(ficgp,"+p%d*%d*x",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,j-2)]); |
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,Tvar[j-2])]); */ |
fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]); |
ij++; |
/* fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
} |
ij++; |
} |
} |
else |
} |
fprintf(ficgp,"+p%d*%d",k3+(k1-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(jk,j-2)]);/* Valgrind bug nbcode */ |
}else |
|
fprintf(ficgp,"+p%d*%d",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]);/* Valgrind bug nbcode */ |
} |
} |
fprintf(ficgp,")"); |
fprintf(ficgp,")"); |
} |
} |
fprintf(ficgp,")"); |
fprintf(ficgp,")"); |
if(ng ==2) |
if(ng ==2) |
fprintf(ficgp," t \"p%d%d\" ", k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"p%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
else /* ng= 3 */ |
else /* ng= 3 */ |
fprintf(ficgp," t \"i%d%d\" ", k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"i%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
}else{ /* end ng <> 1 */ |
}else{ /* end ng <> 1 */ |
if( k !=k2) /* logit p11 is hard to draw */ |
if( k !=k2) /* logit p11 is hard to draw */ |
fprintf(ficgp," t \"logit(p%d%d)\" ", k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"logit(p%d%d)\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
} |
} |
if ((k+k2)!= (nlstate*2+ndeath) && ng != 1) |
if ((k+k2)!= (nlstate*2+ndeath) && ng != 1) |
fprintf(ficgp,","); |
fprintf(ficgp,","); |
Line 6714 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7923 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
i=i+ncovmodel; |
i=i+ncovmodel; |
} /* end k */ |
} /* end k */ |
} /* end k2 */ |
} /* end k2 */ |
fprintf(ficgp,"\n set out\n"); |
/* fprintf(ficgp,"\n set out; unset label;set key default;\n"); */ |
} /* end jk */ |
fprintf(ficgp,"\n set out; unset title;set key default;\n"); |
|
} /* end k1 */ |
} /* end ng */ |
} /* end ng */ |
/* avoid: */ |
/* avoid: */ |
fflush(ficgp); |
fflush(ficgp); |
Line 6731 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7941 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
int mobilavrange, mob; |
int mobilavrange, mob; |
int iage=0; |
int iage=0; |
|
|
double sum=0.; |
double sum=0., sumr=0.; |
double age; |
double age; |
double *sumnewp, *sumnewm; |
double *sumnewp, *sumnewm, *sumnewmr; |
double *agemingood, *agemaxgood; /* Currently identical for all covariates */ |
double *agemingood, *agemaxgood; |
|
double *agemingoodr, *agemaxgoodr; |
|
|
|
|
/* modcovmax=2*cptcoveff;/\* Max number of modalities. We suppose */ |
/* modcovmax=2*cptcoveff; Max number of modalities. We suppose */ |
/* a covariate has 2 modalities, should be equal to ncovcombmax *\/ */ |
/* a covariate has 2 modalities, should be equal to ncovcombmax */ |
|
|
sumnewp = vector(1,ncovcombmax); |
sumnewp = vector(1,ncovcombmax); |
sumnewm = vector(1,ncovcombmax); |
sumnewm = vector(1,ncovcombmax); |
|
sumnewmr = vector(1,ncovcombmax); |
agemingood = vector(1,ncovcombmax); |
agemingood = vector(1,ncovcombmax); |
|
agemingoodr = vector(1,ncovcombmax); |
agemaxgood = vector(1,ncovcombmax); |
agemaxgood = vector(1,ncovcombmax); |
|
agemaxgoodr = vector(1,ncovcombmax); |
|
|
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ |
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ |
sumnewm[cptcod]=0.; |
sumnewm[cptcod]=0.; sumnewmr[cptcod]=0.; |
sumnewp[cptcod]=0.; |
sumnewp[cptcod]=0.; |
agemingood[cptcod]=0; |
agemingood[cptcod]=0, agemingoodr[cptcod]=0; |
agemaxgood[cptcod]=0; |
agemaxgood[cptcod]=0, agemaxgoodr[cptcod]=0; |
} |
} |
if (cptcovn<1) ncovcombmax=1; /* At least 1 pass */ |
if (cptcovn<1) ncovcombmax=1; /* At least 1 pass */ |
|
|
if(mobilav==1||mobilav ==3 ||mobilav==5 ||mobilav== 7){ |
if(mobilav==-1 || mobilav==1||mobilav ==3 ||mobilav==5 ||mobilav== 7){ |
if(mobilav==1) mobilavrange=5; /* default */ |
if(mobilav==1 || mobilav==-1) mobilavrange=5; /* default */ |
else mobilavrange=mobilav; |
else mobilavrange=mobilav; |
for (age=bage; age<=fage; age++) |
for (age=bage; age<=fage; age++) |
for (i=1; i<=nlstate;i++) |
for (i=1; i<=nlstate;i++) |
Line 6766 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 7980 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
*/ |
*/ |
for (mob=3;mob <=mobilavrange;mob=mob+2){ |
for (mob=3;mob <=mobilavrange;mob=mob+2){ |
for (age=bage+(mob-1)/2; age<=fage-(mob-1)/2; age++){ |
for (age=bage+(mob-1)/2; age<=fage-(mob-1)/2; age++){ |
for (i=1; i<=nlstate;i++){ |
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ |
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ |
sumnewm[cptcod]=0.; |
|
for (i=1; i<=nlstate;i++){ |
mobaverage[(int)age][i][cptcod] =probs[(int)age][i][cptcod]; |
mobaverage[(int)age][i][cptcod] =probs[(int)age][i][cptcod]; |
for (cpt=1;cpt<=(mob-1)/2;cpt++){ |
for (cpt=1;cpt<=(mob-1)/2;cpt++){ |
mobaverage[(int)age][i][cptcod] +=probs[(int)age-cpt][i][cptcod]; |
mobaverage[(int)age][i][cptcod] +=probs[(int)age-cpt][i][cptcod]; |
mobaverage[(int)age][i][cptcod] +=probs[(int)age+cpt][i][cptcod]; |
mobaverage[(int)age][i][cptcod] +=probs[(int)age+cpt][i][cptcod]; |
} |
} |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)age][i][cptcod]/mob; |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)age][i][cptcod]/mob; |
} |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
} |
} /* end i */ |
|
if(sumnewm[cptcod] >1.e-3) mobaverage[(int)age][i][cptcod]=mobaverage[(int)age][i][cptcod]/sumnewm[cptcod]; /* Rescaling to sum one */ |
|
} /* end cptcod */ |
}/* end age */ |
}/* end age */ |
}/* end mob */ |
}/* end mob */ |
}else |
}else{ |
|
printf("Error internal in movingaverage, mobilav=%d.\n",mobilav); |
return -1; |
return -1; |
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ |
} |
|
|
|
for (cptcod=1;cptcod<=ncovcombmax;cptcod++){ /* for each combination */ |
/* for (age=bage+(mob-1)/2; age<=fage-(mob-1)/2; age++){ */ |
/* for (age=bage+(mob-1)/2; age<=fage-(mob-1)/2; age++){ */ |
if(invalidvarcomb[cptcod]){ |
if(invalidvarcomb[cptcod]){ |
printf("\nCombination (%d) ignored because no cases \n",cptcod); |
printf("\nCombination (%d) ignored because no cases \n",cptcod); |
continue; |
continue; |
} |
} |
|
|
agemingood[cptcod]=fage-(mob-1)/2; |
for (age=fage-(mob-1)/2; age>=bage+(mob-1)/2; age--){ /*looking for the youngest and oldest good age */ |
for (age=fage-(mob-1)/2; age>=bage; age--){/* From oldest to youngest, finding the youngest wrong */ |
|
sumnewm[cptcod]=0.; |
sumnewm[cptcod]=0.; |
|
sumnewmr[cptcod]=0.; |
for (i=1; i<=nlstate;i++){ |
for (i=1; i<=nlstate;i++){ |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
|
sumnewmr[cptcod]+=probs[(int)age][i][cptcod]; |
|
} |
|
if(fabs(sumnewmr[cptcod] - 1.) <= 1.e-3) { /* good without smoothing */ |
|
agemingoodr[cptcod]=age; |
} |
} |
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
agemingood[cptcod]=age; |
agemingood[cptcod]=age; |
}else{ /* bad */ |
} |
for (i=1; i<=nlstate;i++){ |
} /* age */ |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; |
for (age=bage+(mob-1)/2; age<=fage-(mob-1)/2; age++){ /*looking for the youngest and oldest good age */ |
} /* i */ |
|
} /* end bad */ |
|
}/* age */ |
|
sum=0.; |
|
for (i=1; i<=nlstate;i++){ |
|
sum+=mobaverage[(int)agemingood[cptcod]][i][cptcod]; |
|
} |
|
if(fabs(sum - 1.) > 1.e-3) { /* bad */ |
|
printf("For this combination of covariate cptcod=%d, we can't get a smoothed prevalence which sums to one at any descending age!\n",cptcod); |
|
/* for (i=1; i<=nlstate;i++){ */ |
|
/* mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; */ |
|
/* } /\* i *\/ */ |
|
} /* end bad */ |
|
/* else{ /\* We found some ages summing to one, we will smooth the oldest *\/ */ |
|
/* From youngest, finding the oldest wrong */ |
|
agemaxgood[cptcod]=bage+(mob-1)/2; |
|
for (age=bage+(mob-1)/2; age<=fage; age++){ |
|
sumnewm[cptcod]=0.; |
sumnewm[cptcod]=0.; |
|
sumnewmr[cptcod]=0.; |
for (i=1; i<=nlstate;i++){ |
for (i=1; i<=nlstate;i++){ |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
|
sumnewmr[cptcod]+=probs[(int)age][i][cptcod]; |
|
} |
|
if(fabs(sumnewmr[cptcod] - 1.) <= 1.e-3) { /* good without smoothing */ |
|
agemaxgoodr[cptcod]=age; |
} |
} |
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
agemaxgood[cptcod]=age; |
agemaxgood[cptcod]=age; |
}else{ /* bad */ |
} |
for (i=1; i<=nlstate;i++){ |
} /* age */ |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemaxgood[cptcod]][i][cptcod]; |
/* Thus we have agemingood and agemaxgood as well as goodr for raw (preobs) */ |
} /* i */ |
/* but they will change */ |
|
for (age=fage-(mob-1)/2; age>=bage; age--){/* From oldest to youngest, filling up to the youngest */ |
|
sumnewm[cptcod]=0.; |
|
sumnewmr[cptcod]=0.; |
|
for (i=1; i<=nlstate;i++){ |
|
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
|
sumnewmr[cptcod]+=probs[(int)age][i][cptcod]; |
|
} |
|
if(mobilav==-1){ /* Forcing raw ages if good else agemingood */ |
|
if(fabs(sumnewmr[cptcod] - 1.) <= 1.e-3) { /* good without smoothing */ |
|
agemaxgoodr[cptcod]=age; /* age min */ |
|
for (i=1; i<=nlstate;i++) |
|
mobaverage[(int)age][i][cptcod]=probs[(int)age][i][cptcod]; |
|
}else{ /* bad we change the value with the values of good ages */ |
|
for (i=1; i<=nlstate;i++){ |
|
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemaxgoodr[cptcod]][i][cptcod]; |
|
} /* i */ |
|
} /* end bad */ |
|
}else{ |
|
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
|
agemaxgood[cptcod]=age; |
|
}else{ /* bad we change the value with the values of good ages */ |
|
for (i=1; i<=nlstate;i++){ |
|
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemaxgood[cptcod]][i][cptcod]; |
|
} /* i */ |
|
} /* end bad */ |
|
}/* end else */ |
|
sum=0.;sumr=0.; |
|
for (i=1; i<=nlstate;i++){ |
|
sum+=mobaverage[(int)age][i][cptcod]; |
|
sumr+=probs[(int)age][i][cptcod]; |
|
} |
|
if(fabs(sum - 1.) > 1.e-3) { /* bad */ |
|
printf("Moving average A1: For this combination of covariate cptcod=%d, we can't get a smoothed prevalence which sums to one (%f) at any descending age! age=%d, could you increase bage=%d\n",cptcod,sumr, (int)age, (int)bage); |
|
} /* end bad */ |
|
/* else{ /\* We found some ages summing to one, we will smooth the oldest *\/ */ |
|
if(fabs(sumr - 1.) > 1.e-3) { /* bad */ |
|
printf("Moving average A2: For this combination of covariate cptcod=%d, the raw prevalence doesn't sums to one (%f) even with smoothed values at young ages! age=%d, could you increase bage=%d\n",cptcod,sumr, (int)age, (int)bage); |
} /* end bad */ |
} /* end bad */ |
}/* age */ |
}/* age */ |
sum=0.; |
|
for (i=1; i<=nlstate;i++){ |
for (age=bage+(mob-1)/2; age<=fage; age++){/* From youngest, finding the oldest wrong */ |
sum+=mobaverage[(int)agemaxgood[cptcod]][i][cptcod]; |
sumnewm[cptcod]=0.; |
} |
sumnewmr[cptcod]=0.; |
if(fabs(sum - 1.) > 1.e-3) { /* bad */ |
for (i=1; i<=nlstate;i++){ |
printf("For this combination of covariate cptcod=%d, we can't get a smoothed prevalence which sums to one at any ascending age!\n",cptcod); |
sumnewm[cptcod]+=mobaverage[(int)age][i][cptcod]; |
/* for (i=1; i<=nlstate;i++){ */ |
sumnewmr[cptcod]+=probs[(int)age][i][cptcod]; |
/* mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; */ |
} |
/* } /\* i *\/ */ |
if(mobilav==-1){ /* Forcing raw ages if good else agemingood */ |
} /* end bad */ |
if(fabs(sumnewmr[cptcod] - 1.) <= 1.e-3) { /* good */ |
|
agemingoodr[cptcod]=age; |
|
for (i=1; i<=nlstate;i++) |
|
mobaverage[(int)age][i][cptcod]=probs[(int)age][i][cptcod]; |
|
}else{ /* bad we change the value with the values of good ages */ |
|
for (i=1; i<=nlstate;i++){ |
|
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingoodr[cptcod]][i][cptcod]; |
|
} /* i */ |
|
} /* end bad */ |
|
}else{ |
|
if(fabs(sumnewm[cptcod] - 1.) <= 1.e-3) { /* good */ |
|
agemingood[cptcod]=age; |
|
}else{ /* bad */ |
|
for (i=1; i<=nlstate;i++){ |
|
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; |
|
} /* i */ |
|
} /* end bad */ |
|
}/* end else */ |
|
sum=0.;sumr=0.; |
|
for (i=1; i<=nlstate;i++){ |
|
sum+=mobaverage[(int)age][i][cptcod]; |
|
sumr+=mobaverage[(int)age][i][cptcod]; |
|
} |
|
if(fabs(sum - 1.) > 1.e-3) { /* bad */ |
|
printf("Moving average B1: For this combination of covariate cptcod=%d, we can't get a smoothed prevalence which sums to one (%f) at any descending age! age=%d, could you decrease fage=%d?\n",cptcod, sum, (int) age, (int)fage); |
|
} /* end bad */ |
|
/* else{ /\* We found some ages summing to one, we will smooth the oldest *\/ */ |
|
if(fabs(sumr - 1.) > 1.e-3) { /* bad */ |
|
printf("Moving average B2: For this combination of covariate cptcod=%d, the raw prevalence doesn't sums to one (%f) even with smoothed values at young ages! age=%d, could you increase fage=%d\n",cptcod,sumr, (int)age, (int)fage); |
|
} /* end bad */ |
|
}/* age */ |
|
|
|
|
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 6851 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
Line 8131 plot [%.f:%.f] ", ageminpar, agemaxpar)
|
} |
} |
/* printf("\n"); */ |
/* printf("\n"); */ |
/* } */ |
/* } */ |
|
|
/* brutal averaging */ |
/* brutal averaging */ |
for (i=1; i<=nlstate;i++){ |
/* for (i=1; i<=nlstate;i++){ */ |
for (age=1; age<=bage; age++){ |
/* for (age=1; age<=bage; age++){ */ |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; |
/* mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemingood[cptcod]][i][cptcod]; */ |
/* printf("age=%d i=%d cptcod=%d mobaverage=%.4f \n",(int)age,i, cptcod, mobaverage[(int)age][i][cptcod]); */ |
/* /\* printf("age=%d i=%d cptcod=%d mobaverage=%.4f \n",(int)age,i, cptcod, mobaverage[(int)age][i][cptcod]); *\/ */ |
} |
/* } */ |
for (age=fage; age<=AGESUP; age++){ |
/* for (age=fage; age<=AGESUP; age++){ */ |
mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemaxgood[cptcod]][i][cptcod]; |
/* mobaverage[(int)age][i][cptcod]=mobaverage[(int)agemaxgood[cptcod]][i][cptcod]; */ |
/* printf("age=%d i=%d cptcod=%d mobaverage=%.4f \n",(int)age,i, cptcod, mobaverage[(int)age][i][cptcod]); */ |
/* /\* printf("age=%d i=%d cptcod=%d mobaverage=%.4f \n",(int)age,i, cptcod, mobaverage[(int)age][i][cptcod]); *\/ */ |
} |
/* } */ |
} /* end i status */ |
/* } /\* end i status *\/ */ |
for (i=nlstate+1; i<=nlstate+ndeath;i++){ |
/* for (i=nlstate+1; i<=nlstate+ndeath;i++){ */ |
for (age=1; age<=AGESUP; age++){ |
/* for (age=1; age<=AGESUP; age++){ */ |
/*printf("i=%d, age=%d, cptcod=%d\n",i, (int)age, cptcod);*/ |
/* /\*printf("i=%d, age=%d, cptcod=%d\n",i, (int)age, cptcod);*\/ */ |
mobaverage[(int)age][i][cptcod]=0.; |
/* mobaverage[(int)age][i][cptcod]=0.; */ |
} |
/* } */ |
} |
/* } */ |
}/* end cptcod */ |
}/* end cptcod */ |
free_vector(sumnewm,1, ncovcombmax); |
free_vector(agemaxgoodr,1, ncovcombmax); |
free_vector(sumnewp,1, ncovcombmax); |
|
free_vector(agemaxgood,1, ncovcombmax); |
free_vector(agemaxgood,1, ncovcombmax); |
free_vector(agemingood,1, ncovcombmax); |
free_vector(agemingood,1, ncovcombmax); |
|
free_vector(agemingoodr,1, ncovcombmax); |
|
free_vector(sumnewmr,1, ncovcombmax); |
|
free_vector(sumnewm,1, ncovcombmax); |
|
free_vector(sumnewp,1, ncovcombmax); |
return 0; |
return 0; |
}/* End movingaverage */ |
}/* End movingaverage */ |
|
|
|
|
/************** 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 ***prev, 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 6906 void prevforecast(char fileres[], double
|
Line 8190 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 6917 void prevforecast(char fileres[], double
|
Line 8201 void prevforecast(char fileres[], double
|
if(estepm < stepm){ |
if(estepm < stepm){ |
printf ("Problem %d lower than %d\n",estepm, stepm); |
printf ("Problem %d lower than %d\n",estepm, stepm); |
} |
} |
else hstepm=estepm; |
else{ |
|
hstepm=estepm; |
|
} |
|
if(estepm > stepm){ /* Yes every two year */ |
|
stepsize=2; |
|
} |
|
|
hstepm=hstepm/stepm; |
hstepm=hstepm/stepm; |
yp1=modf(dateintmean,&yp);/* extracts integral of datemean in yp and |
yp1=modf(dateintmean,&yp);/* extracts integral of datemean in yp and |
Line 6938 void prevforecast(char fileres[], double
|
Line 8227 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(i1 != 1 && 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 6947 void prevforecast(char fileres[], double
|
Line 8239 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 */ |
|
fprintf(ficresf," 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 6956 void prevforecast(char fileres[], double
|
Line 8251 void prevforecast(char fileres[], double
|
for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { |
for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { |
fprintf(ficresf,"\n"); |
fprintf(ficresf,"\n"); |
fprintf(ficresf,"\n# Forecasting at date %.lf/%.lf/%.lf ",jproj1,mproj1,anproj1+yearp); |
fprintf(ficresf,"\n# Forecasting at date %.lf/%.lf/%.lf ",jproj1,mproj1,anproj1+yearp); |
for (agec=fage; agec>=(ageminpar-1); agec--){ |
/* for (agec=fage; agec>=(ageminpar-1); agec--){ */ |
|
for (agec=fage; agec>=(bage); agec--){ |
nhstepm=(int) rint((agelim-agec)*YEARM/stepm); |
nhstepm=(int) rint((agelim-agec)*YEARM/stepm); |
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); |
/* We compute pii at age agec over nhstepm);*/ |
|
hpxij(p3mat,nhstepm,agec,hstepm,p,nlstate,stepm,oldm,savm, k,nres); |
|
/* Then we print p3mat for h corresponding to the right agec+h*stepms=yearp */ |
for (h=0; h<=nhstepm; h++){ |
for (h=0; h<=nhstepm; h++){ |
if (h*hstepm/YEARM*stepm ==yearp) { |
if (h*hstepm/YEARM*stepm ==yearp) { |
fprintf(ficresf,"\n"); |
break; |
for(j=1;j<=cptcoveff;j++) |
} |
fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
fprintf(ficresf,"%.f %.f ",anproj1+yearp,agec+h*hstepm/YEARM*stepm); |
fprintf(ficresf,"\n"); |
} |
for(j=1;j<=cptcoveff;j++) |
for(j=1; j<=nlstate+ndeath;j++) { |
fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
ppij=0.; |
fprintf(ficresf,"%.f %.f ",anproj1+yearp,agec+h*hstepm/YEARM*stepm); |
for(i=1; i<=nlstate;i++) { |
|
if (mobilav==1) |
for(j=1; j<=nlstate+ndeath;j++) { |
ppij=ppij+p3mat[i][j][h]*mobaverage[(int)agec][i][k]; |
ppij=0.; |
else { |
for(i=1; i<=nlstate;i++) { |
ppij=ppij+p3mat[i][j][h]*probs[(int)(agec)][i][k]; |
if (mobilav>=1) |
} |
ppij=ppij+p3mat[i][j][h]*prev[(int)agec][i][k]; |
if (h*hstepm/YEARM*stepm== yearp) { |
else { /* even if mobilav==-1 we use mobaverage, probs may not sums to 1 */ |
fprintf(ficresf," %.3f", p3mat[i][j][h]); |
ppij=ppij+p3mat[i][j][h]*probs[(int)(agec)][i][k]; |
} |
|
} /* end i */ |
|
if (h*hstepm/YEARM*stepm==yearp) { |
|
fprintf(ficresf," %.3f", ppij); |
|
} |
} |
}/* end j */ |
fprintf(ficresf," %.3f", p3mat[i][j][h]); |
} /* end h */ |
} /* end i */ |
|
fprintf(ficresf," %.3f", ppij); |
|
}/* end j */ |
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
} /* end agec */ |
} /* end agec */ |
|
/* diffyear=(int) anproj1+yearp-ageminpar-1; */ |
|
/*printf("Prevforecast %d+%d-%d=diffyear=%d\n",(int) anproj1, (int)yearp,(int)ageminpar,(int) anproj1-(int)ageminpar);*/ |
} /* end yearp */ |
} /* end yearp */ |
} /* end k */ |
} /* end k */ |
|
|
Line 6998 void prevforecast(char fileres[], double
|
Line 8295 void prevforecast(char fileres[], double
|
|
|
} |
} |
|
|
/* /\************** Back Forecasting ******************\/ */ |
/************** Back Forecasting ******************/ |
/* void prevbackforecast(char fileres[], double anback1, double mback1, double jback1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anback2, double p[], int cptcoveff){ */ |
void prevbackforecast(char fileres[], double ***prevacurrent, double anback1, double mback1, double jback1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anback2, double p[], int cptcoveff){ |
/* /\* back1, year, month, day of starting backection */ |
/* back1, year, month, day of starting backection |
/* 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 |
/* anback2 year of en of backection (same day and month as back1). */ |
anback2 year of end of backprojection (same day and month as back1). |
/* *\/ */ |
prevacurrent and prev are prevalences. |
/* int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1; */ |
*/ |
/* double agec; /\* generic age *\/ */ |
int yearp, stepsize, hstepm, nhstepm, j, k, cptcod, i, h, i1, k4, nres=0; |
/* double agelim, ppij, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; */ |
double agec; /* generic age */ |
/* double *popeffectif,*popcount; */ |
double agelim, ppij, ppi, yp,yp1,yp2,jprojmean,mprojmean,anprojmean; |
/* double ***p3mat; */ |
double *popeffectif,*popcount; |
/* /\* double ***mobaverage; *\/ */ |
double ***p3mat; |
/* char fileresfb[FILENAMELENGTH]; */ |
/* double ***mobaverage; */ |
|
char fileresfb[FILENAMELENGTH]; |
/* agelim=AGESUP; */ |
|
/* /\* Compute observed prevalence between dateprev1 and dateprev2 by counting the number of people */ |
agelim=AGEINF; |
/* in each health status at the date of interview (if between dateprev1 and dateprev2). */ |
/* Compute observed prevalence between dateprev1 and dateprev2 by counting the number of people |
/* We still use firstpass and lastpass as another selection. */ |
in each health status at the date of interview (if between dateprev1 and dateprev2). |
/* *\/ */ |
We still use firstpass and lastpass as another selection. |
/* /\* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint,strstart,\ *\/ */ |
*/ |
/* /\* firstpass, lastpass, stepm, weightopt, model); *\/ */ |
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint,strstart,\ */ |
/* prevalence(probs, ageminpar, agemax, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
/* firstpass, lastpass, stepm, weightopt, model); */ |
|
|
/* strcpy(fileresfb,"FB_"); */ |
/*Do we need to compute prevalence again?*/ |
/* strcat(fileresfb,fileresu); */ |
|
/* if((ficresfb=fopen(fileresfb,"w"))==NULL) { */ |
/* prevalence(probs, ageminpar, agemax, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
/* printf("Problem with back forecast resultfile: %s\n", fileresfb); */ |
|
/* fprintf(ficlog,"Problem with back forecast resultfile: %s\n", fileresfb); */ |
|
/* } */ |
|
/* printf("Computing back forecasting: result on file '%s', please wait... \n", fileresfb); */ |
|
/* fprintf(ficlog,"Computing back forecasting: result on file '%s', please wait... \n", fileresfb); */ |
|
|
|
/* if (cptcoveff==0) ncodemax[cptcoveff]=1; */ |
|
|
|
/* /\* if (mobilav!=0) { *\/ */ |
|
/* /\* mobaverage= ma3x(1, AGESUP,1,NCOVMAX, 1,NCOVMAX); *\/ */ |
|
/* /\* if (movingaverage(probs, ageminpar, fage, mobaverage,mobilav)!=0){ *\/ */ |
|
/* /\* fprintf(ficlog," Error in movingaverage mobilav=%d\n",mobilav); *\/ */ |
|
/* /\* printf(" Error in movingaverage mobilav=%d\n",mobilav); *\/ */ |
|
/* /\* } *\/ */ |
|
/* /\* } *\/ */ |
|
|
|
/* stepsize=(int) (stepm+YEARM-1)/YEARM; */ |
|
/* if (stepm<=12) stepsize=1; */ |
|
/* if(estepm < stepm){ */ |
|
/* printf ("Problem %d lower than %d\n",estepm, stepm); */ |
|
/* } */ |
|
/* else hstepm=estepm; */ |
|
|
|
/* hstepm=hstepm/stepm; */ |
|
/* yp1=modf(dateintmean,&yp);/\* extracts integral of datemean in yp and */ |
|
/* fractional in yp1 *\/ */ |
|
/* anprojmean=yp; */ |
|
/* yp2=modf((yp1*12),&yp); */ |
|
/* mprojmean=yp; */ |
|
/* yp1=modf((yp2*30.5),&yp); */ |
|
/* jprojmean=yp; */ |
|
/* if(jprojmean==0) jprojmean=1; */ |
|
/* if(mprojmean==0) jprojmean=1; */ |
|
|
|
/* i1=cptcoveff; */ |
|
/* if (cptcovn < 1){i1=1;} */ |
|
|
|
/* fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); */ |
strcpy(fileresfb,"FB_"); |
|
strcat(fileresfb,fileresu); |
|
if((ficresfb=fopen(fileresfb,"w"))==NULL) { |
|
printf("Problem with back forecast resultfile: %s\n", fileresfb); |
|
fprintf(ficlog,"Problem with back forecast resultfile: %s\n", fileresfb); |
|
} |
|
printf("\nComputing back forecasting: result on file '%s', please wait... \n", fileresfb); |
|
fprintf(ficlog,"\nComputing back forecasting: result on file '%s', please wait... \n", fileresfb); |
|
|
/* fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); */ |
if (cptcoveff==0) ncodemax[cptcoveff]=1; |
|
|
/* /\* if (h==(int)(YEARM*yearp)){ *\/ */ |
|
/* for(cptcov=1, k=0;cptcov<=i1;cptcov++){ */ |
stepsize=(int) (stepm+YEARM-1)/YEARM; |
/* for(cptcod=1;cptcod<=ncodemax[cptcoveff];cptcod++){ */ |
if (stepm<=12) stepsize=1; |
/* k=k+1; */ |
if(estepm < stepm){ |
/* fprintf(ficresfb,"\n#****** hbijx=probability over h years, hp.jx is weighted by observed prev \n#"); */ |
printf ("Problem %d lower than %d\n",estepm, stepm); |
/* for(j=1;j<=cptcoveff;j++) { */ |
} |
/* fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); */ |
else{ |
/* } */ |
hstepm=estepm; |
/* fprintf(ficresfb," yearbproj age"); */ |
} |
/* for(j=1; j<=nlstate+ndeath;j++){ */ |
if(estepm >= stepm){ /* Yes every two year */ |
/* for(i=1; i<=nlstate;i++) */ |
stepsize=2; |
/* fprintf(ficresfb," p%d%d",i,j); */ |
} |
/* fprintf(ficresfb," p.%d",j); */ |
|
/* } */ |
hstepm=hstepm/stepm; |
/* for (yearp=0; yearp>=(anback2-anback1);yearp -=stepsize) { */ |
yp1=modf(dateintmean,&yp);/* extracts integral of datemean in yp and |
/* /\* for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { *\/ */ |
fractional in yp1 */ |
/* fprintf(ficresfb,"\n"); */ |
anprojmean=yp; |
/* fprintf(ficresfb,"\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); */ |
yp2=modf((yp1*12),&yp); |
/* for (agec=fage; agec>=(ageminpar-1); agec--){ */ |
mprojmean=yp; |
/* nhstepm=(int) rint((agelim-agec)*YEARM/stepm); */ |
yp1=modf((yp2*30.5),&yp); |
/* nhstepm = nhstepm/hstepm; */ |
jprojmean=yp; |
/* p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); */ |
if(jprojmean==0) jprojmean=1; |
/* oldm=oldms;savm=savms; */ |
if(mprojmean==0) jprojmean=1; |
/* hbxij(p3mat,nhstepm,agec,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm,oldm,savm, dnewm, doldm, dsavm, k); */ |
|
/* for (h=0; h<=nhstepm; h++){ */ |
i1=pow(2,cptcoveff); |
/* if (h*hstepm/YEARM*stepm ==yearp) { */ |
if (cptcovn < 1){i1=1;} |
/* fprintf(ficresfb,"\n"); */ |
|
/* for(j=1;j<=cptcoveff;j++) */ |
fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); |
/* fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); */ |
printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jprojmean,mprojmean,anprojmean,dateintmean,dateprev1,dateprev2); |
/* fprintf(ficresfb,"%.f %.f ",anback1+yearp,agec+h*hstepm/YEARM*stepm); */ |
|
/* } */ |
fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); |
/* for(j=1; j<=nlstate+ndeath;j++) { */ |
|
/* ppij=0.; */ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
/* for(i=1; i<=nlstate;i++) { */ |
for(k=1; k<=i1;k++){ |
/* if (mobilav==1) */ |
if(i1 != 1 && TKresult[nres]!= k) |
/* ppij=ppij+p3mat[i][j][h]*mobaverage[(int)agec][i][cptcod]; */ |
continue; |
/* else { */ |
if(invalidvarcomb[k]){ |
/* ppij=ppij+p3mat[i][j][h]*probs[(int)(agec)][i][cptcod]; */ |
printf("\nCombination (%d) projection ignored because no cases \n",k); |
/* } */ |
continue; |
/* if (h*hstepm/YEARM*stepm== yearp) { */ |
} |
/* fprintf(ficresfb," %.3f", p3mat[i][j][h]); */ |
fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); |
/* } */ |
for(j=1;j<=cptcoveff;j++) { |
/* } /\* end i *\/ */ |
fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* if (h*hstepm/YEARM*stepm==yearp) { */ |
} |
/* fprintf(ficresfb," %.3f", ppij); */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
/* } */ |
fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
/* }/\* end j *\/ */ |
} |
/* } /\* end h *\/ */ |
fprintf(ficresfb," yearbproj age"); |
/* free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); */ |
for(j=1; j<=nlstate+ndeath;j++){ |
/* } /\* end agec *\/ */ |
for(i=1; i<=nlstate;i++) |
/* } /\* end yearp *\/ */ |
fprintf(ficresfb," b%d%d",i,j); |
/* } /\* end cptcod *\/ */ |
fprintf(ficresfb," b.%d",j); |
/* } /\* end cptcov *\/ */ |
} |
|
for (yearp=0; yearp>=(anback2-anback1);yearp -=stepsize) { |
/* /\* if (mobilav!=0) free_ma3x(mobaverage,1, AGESUP,1,NCOVMAX, 1,NCOVMAX); *\/ */ |
/* for (yearp=0; yearp<=(anproj2-anproj1);yearp +=stepsize) { */ |
|
fprintf(ficresfb,"\n"); |
/* fclose(ficresfb); */ |
fprintf(ficresfb,"\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); |
/* printf("End of Computing Back forecasting \n"); */ |
/* printf("\n# Back Forecasting at date %.lf/%.lf/%.lf ",jback1,mback1,anback1+yearp); */ |
/* fprintf(ficlog,"End of Computing Back forecasting\n"); */ |
/* for (agec=bage; agec<=agemax-1; agec++){ /\* testing *\/ */ |
|
for (agec=bage; agec<=fage; agec++){ /* testing */ |
|
/* We compute bij at age agec over nhstepm, nhstepm decreases when agec increases because of agemax;*/ |
|
nhstepm=(int) (agec-agelim) *YEARM/stepm;/* nhstepm=(int) rint((agec-agelim)*YEARM/stepm);*/ |
|
nhstepm = nhstepm/hstepm; |
|
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
|
oldm=oldms;savm=savms; |
|
/* computes hbxij at age agec over 1 to nhstepm */ |
|
/* printf("####prevbackforecast debug agec=%.2f nhstepm=%d\n",agec, nhstepm);fflush(stdout); */ |
|
hbxij(p3mat,nhstepm,agec,hstepm,p,prevacurrent,nlstate,stepm, k, nres); |
|
/* hpxij(p3mat,nhstepm,agec,hstepm,p, nlstate,stepm,oldm,savm, k,nres); */ |
|
/* Then we print p3mat for h corresponding to the right agec+h*stepms=yearp */ |
|
/* printf(" agec=%.2f\n",agec);fflush(stdout); */ |
|
for (h=0; h<=nhstepm; h++){ |
|
if (h*hstepm/YEARM*stepm ==-yearp) { |
|
break; |
|
} |
|
} |
|
fprintf(ficresfb,"\n"); |
|
for(j=1;j<=cptcoveff;j++) |
|
fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
fprintf(ficresfb,"%.f %.f ",anback1+yearp,agec-h*hstepm/YEARM*stepm); |
|
for(i=1; i<=nlstate+ndeath;i++) { |
|
ppij=0.;ppi=0.; |
|
for(j=1; j<=nlstate;j++) { |
|
/* if (mobilav==1) */ |
|
ppij=ppij+p3mat[i][j][h]*prevacurrent[(int)agec][j][k]; |
|
ppi=ppi+prevacurrent[(int)agec][j][k]; |
|
/* ppij=ppij+p3mat[i][j][h]*mobaverage[(int)agec][j][k]; */ |
|
/* ppi=ppi+mobaverage[(int)agec][j][k]; */ |
|
/* else { */ |
|
/* ppij=ppij+p3mat[i][j][h]*probs[(int)(agec)][i][k]; */ |
|
/* } */ |
|
fprintf(ficresfb," %.3f", p3mat[i][j][h]); |
|
} /* end j */ |
|
if(ppi <0.99){ |
|
printf("Error in prevbackforecast, prevalence doesn't sum to 1 for state %d: %3f\n",i, ppi); |
|
fprintf(ficlog,"Error in prevbackforecast, prevalence doesn't sum to 1 for state %d: %3f\n",i, ppi); |
|
} |
|
fprintf(ficresfb," %.3f", ppij); |
|
}/* end j */ |
|
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
|
} /* end agec */ |
|
} /* end yearp */ |
|
} /* end k */ |
|
|
|
/* if (mobilav!=0) free_ma3x(mobaverage,1, AGESUP,1,NCOVMAX, 1,NCOVMAX); */ |
|
|
|
fclose(ficresfb); |
|
printf("End of Computing Back forecasting \n"); |
|
fprintf(ficlog,"End of Computing Back forecasting\n"); |
|
|
/* } */ |
} |
|
|
|
/* Variance of prevalence limit: varprlim */ |
|
void varprlim(char fileresu[], int nresult, double ***prevacurrent, int mobilavproj, double bage, double fage, double **prlim, int *ncvyearp, double ftolpl, double p[], double **matcov, double *delti, int stepm, int cptcoveff){ |
|
/*------- Variance of period (stable) prevalence------*/ |
|
|
|
char fileresvpl[FILENAMELENGTH]; |
|
FILE *ficresvpl; |
|
double **oldm, **savm; |
|
double **varpl; /* Variances of prevalence limits by age */ |
|
int i1, k, nres, j ; |
|
|
|
strcpy(fileresvpl,"VPL_"); |
|
strcat(fileresvpl,fileresu); |
|
if((ficresvpl=fopen(fileresvpl,"w"))==NULL) { |
|
printf("Problem with variance of period (stable) prevalence resultfile: %s\n", fileresvpl); |
|
exit(0); |
|
} |
|
printf("Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(stdout); |
|
fprintf(ficlog, "Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(ficlog); |
|
|
|
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
|
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
|
|
|
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(i1 != 1 && TKresult[nres]!= k) |
|
continue; |
|
fprintf(ficresvpl,"\n#****** "); |
|
printf("\n#****** "); |
|
fprintf(ficlog,"\n#****** "); |
|
for(j=1;j<=cptcoveff;j++) { |
|
fprintf(ficresvpl,"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)]); |
|
} |
|
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"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
|
|
varpl=matrix(1,nlstate,(int) bage, (int) fage); |
|
oldm=oldms;savm=savms; |
|
varprevlim(fileresvpl, ficresvpl, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, ncvyearp, k, strstart, nres); |
|
free_matrix(varpl,1,nlstate,(int) bage, (int)fage); |
|
/*}*/ |
|
} |
|
|
|
fclose(ficresvpl); |
|
printf("done variance-covariance of period prevalence\n");fflush(stdout); |
|
fprintf(ficlog,"done variance-covariance of period prevalence\n");fflush(ficlog); |
|
|
|
} |
|
/* Variance of back prevalence: varbprlim */ |
|
void varbprlim(char fileresu[], int nresult, double ***prevacurrent, int mobilavproj, double bage, double fage, double **bprlim, int *ncvyearp, double ftolpl, double p[], double **matcov, double *delti, int stepm, int cptcoveff){ |
|
/*------- Variance of back (stable) prevalence------*/ |
|
|
|
char fileresvbl[FILENAMELENGTH]; |
|
FILE *ficresvbl; |
|
|
|
double **oldm, **savm; |
|
double **varbpl; /* Variances of back prevalence limits by age */ |
|
int i1, k, nres, j ; |
|
|
|
strcpy(fileresvbl,"VBL_"); |
|
strcat(fileresvbl,fileresu); |
|
if((ficresvbl=fopen(fileresvbl,"w"))==NULL) { |
|
printf("Problem with variance of back (stable) prevalence resultfile: %s\n", fileresvbl); |
|
exit(0); |
|
} |
|
printf("Computing Variance-covariance of back (stable) prevalence: file '%s' ...", fileresvbl);fflush(stdout); |
|
fprintf(ficlog, "Computing Variance-covariance of back (stable) prevalence: file '%s' ...", fileresvbl);fflush(ficlog); |
|
|
|
|
|
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(i1 != 1 && TKresult[nres]!= k) |
|
continue; |
|
fprintf(ficresvbl,"\n#****** "); |
|
printf("\n#****** "); |
|
fprintf(ficlog,"\n#****** "); |
|
for(j=1;j<=cptcoveff;j++) { |
|
fprintf(ficresvbl,"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)]); |
|
} |
|
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficresvbl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
|
fprintf(ficresvbl,"******\n"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
|
|
varbpl=matrix(1,nlstate,(int) bage, (int) fage); |
|
oldm=oldms;savm=savms; |
|
|
|
varbrevlim(fileresvbl, ficresvbl, varbpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, bprlim, ftolpl, mobilavproj, ncvyearp, k, strstart, nres); |
|
free_matrix(varbpl,1,nlstate,(int) bage, (int)fage); |
|
/*}*/ |
|
} |
|
|
|
fclose(ficresvbl); |
|
printf("done variance-covariance of back prevalence\n");fflush(stdout); |
|
fprintf(ficlog,"done variance-covariance of back prevalence\n");fflush(ficlog); |
|
|
|
} /* End of varbprlim */ |
|
|
/************** Forecasting *****not tested NB*************/ |
/************** Forecasting *****not tested NB*************/ |
/* void populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2s, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){ */ |
/* void populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2s, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){ */ |
Line 7554 int readdata(char datafile[], int firsto
|
Line 8989 int readdata(char datafile[], int firsto
|
/*-------- data file ----------*/ |
/*-------- data file ----------*/ |
FILE *fic; |
FILE *fic; |
char dummy[]=" "; |
char dummy[]=" "; |
int i=0, j=0, n=0, iv=0; |
int i=0, j=0, n=0, iv=0, v; |
int lstra; |
int lstra; |
int linei, month, year,iout; |
int linei, month, year,iout; |
char line[MAXLINE], linetmp[MAXLINE]; |
char line[MAXLINE], linetmp[MAXLINE]; |
char stra[MAXLINE], strb[MAXLINE]; |
char stra[MAXLINE], strb[MAXLINE]; |
char *stratrunc; |
char *stratrunc; |
|
|
|
DummyV=ivector(1,NCOVMAX); /* 1 to 3 */ |
|
FixedV=ivector(1,NCOVMAX); /* 1 to 3 */ |
|
|
|
for(v=1; v <=ncovcol;v++){ |
|
DummyV[v]=0; |
|
FixedV[v]=0; |
|
} |
|
for(v=ncovcol+1; v <=ncovcol+nqv;v++){ |
|
DummyV[v]=1; |
|
FixedV[v]=0; |
|
} |
|
for(v=ncovcol+nqv+1; v <=ncovcol+nqv+ntv;v++){ |
|
DummyV[v]=0; |
|
FixedV[v]=1; |
|
} |
|
for(v=ncovcol+nqv+ntv+1; v <=ncovcol+nqv+ntv+nqtv;v++){ |
|
DummyV[v]=1; |
|
FixedV[v]=1; |
|
} |
|
for(v=1; v <=ncovcol+nqv+ntv+nqtv;v++){ |
|
printf("Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); |
|
fprintf(ficlog,"Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); |
|
} |
|
|
if((fic=fopen(datafile,"r"))==NULL) { |
if((fic=fopen(datafile,"r"))==NULL) { |
printf("Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(stdout); |
printf("Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(stdout); |
Line 7595 int readdata(char datafile[], int firsto
|
Line 9052 int readdata(char datafile[], int firsto
|
if(strb[0]=='.') { /* Missing value */ |
if(strb[0]=='.') { /* Missing value */ |
lval=-1; |
lval=-1; |
cotqvar[j][iv][i]=-1; /* 0.0/0.0 */ |
cotqvar[j][iv][i]=-1; /* 0.0/0.0 */ |
|
cotvar[j][ntv+iv][i]=-1; /* For performance reasons */ |
if(isalpha(strb[1])) { /* .m or .d Really Missing value */ |
if(isalpha(strb[1])) { /* .m or .d Really Missing value */ |
printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j); |
printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j); |
fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j);fflush(ficlog); |
fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j);fflush(ficlog); |
Line 7614 int readdata(char datafile[], int firsto
|
Line 9072 int readdata(char datafile[], int firsto
|
return 1; |
return 1; |
} |
} |
cotqvar[j][iv][i]=dval; |
cotqvar[j][iv][i]=dval; |
|
cotvar[j][ntv+iv][i]=dval; |
} |
} |
strcpy(line,stra); |
strcpy(line,stra); |
}/* end loop ntqv */ |
}/* end loop ntqv */ |
Line 7827 int readdata(char datafile[], int firsto
|
Line 9286 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 7855 int decoderesult ( char resultline[])
|
Line 9320 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 == 0){ /* Resultline but no = */ |
for(k=1; k<=j;k++){ /* Loop on total covariates of the model */ |
TKresult[nres]=0; /* Combination for the nresult and the model */ |
cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' |
return (0); |
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 */ |
|
|
if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
|
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); |
|
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); |
|
} |
|
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 7869 int decoderesult ( char resultline[])
|
Line 9345 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 7893 int decodemodel( char model[], int lasto
|
Line 9438 int decodemodel( char model[], int lasto
|
* - Tvard[k] p Tvard[1][1]@4 {7, 8, 5, 6} for V7*V8 and V5*V6 . |
* - Tvard[k] p Tvard[1][1]@4 {7, 8, 5, 6} for V7*V8 and V5*V6 . |
*/ |
*/ |
{ |
{ |
int i, j, k, ks; |
int i, j, k, ks, v; |
int j1, k1, k2, k3, k4; |
int j1, k1, k2, k3, k4; |
char modelsav[80]; |
char modelsav[80]; |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
Line 7916 int decodemodel( char model[], int lasto
|
Line 9461 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 9574 int decodemodel( char model[], int lasto
|
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 */ |
Line 8099 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 9644 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
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;k<=cptcovt; k++){ Fixed[k]=0; Dummy[k]=0;} |
for(k=1, 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++; |
modell[k].maintype= FTYPE; |
ncovf++; |
|
modell[k].maintype= FTYPE; |
|
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 */ |
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++; |
|
TvarF[ncovf]=Tvar[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 dummy 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; |
|
nsd++; |
|
TvarsD[nsd]=Tvar[k]; |
|
TvarsDind[nsd]=k; |
|
ncovv++; /* Only simple time varying variables */ |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; /* TvarVind[2]=2 TvarVind[3]=3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
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 */ |
|
nsq++; |
|
TvarsQ[nsq]=Tvar[k]; |
|
TvarsQind[nsq]=k; |
|
TvarV[ncovv]=Tvar[k]; |
|
TvarVind[ncovv]=k; /* TvarVind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
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++; |
|
TvarA[ncova]=Tvar[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]; |
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]); |
fprintf(ficlog,"Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
fprintf(ficlog,"Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
Line 8265 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 9895 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, nsd=%d, nsq=%d\n",ncovf,ncovv,ncova,nsd,nsq); |
|
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 8292 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 9924 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
} |
} |
|
|
int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
{ |
{/* Check ages at death */ |
int i, m; |
int i, m; |
int firstone=0; |
int firstone=0; |
|
|
Line 8307 int calandcheckages(int imx, int maxwav,
|
Line 9939 int calandcheckages(int imx, int maxwav,
|
*nberr = *nberr + 1; |
*nberr = *nberr + 1; |
if(firstone == 0){ |
if(firstone == 0){ |
firstone=1; |
firstone=1; |
printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results can be biased (%d) because status is a death state %d at wave %d. Wave dropped.\nOther similar cases in log file\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr,s[m][i],m); |
printf("Warning (#%d)! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown but status is a death state %d at wave %d. If you don't know the vital status, please enter -2. If he/she is still alive but don't know the state, please code with '-1 or '.'. Here, we do not believe in a death, skipped.\nOther similar cases in log file\n", *nberr,(int)moisdc[i],(int)andc[i],num[i],i,s[m][i],m); |
} |
} |
fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results can be biased (%d) because status is a death state %d at wave %d. Wave dropped.\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr,s[m][i],m); |
fprintf(ficlog,"Warning (#%d)! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown but status is a death state %d at wave %d. If you don't know the vital status, please enter -2. If he/she is still alive but don't know the state, please code with '-1 or '.'. Here, we do not believe in a death, skipped.\n", *nberr,(int)moisdc[i],(int)andc[i],num[i],i,s[m][i],m); |
s[m][i]=-1; |
s[m][i]=-1; /* Droping the death status */ |
} |
} |
if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
(*nberr)++; |
(*nberr)++; |
printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); |
printf("Error (#%d)! Month of death of individual %ld on line %d was unknown (%2d) (year of death is %4d) and status is a death state %d at wave %d. Please impute an arbitrary (or not) month and rerun. Currently this transition to death will be skipped (status is set to -2).\nOther similar cases in log file\n", *nberr, num[i],i,(int)moisdc[i],(int)andc[i],s[m][i],m); |
fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); |
fprintf(ficlog,"Error (#%d)! Month of death of individual %ld on line %d was unknown (%2d) (year of death is %4d) and status is a death state %d at wave %d. Please impute an arbitrary (or not) month and rerun. Currently this transition to death will be skipped (status is set to -2).\n", *nberr, num[i],i,(int)moisdc[i],(int)andc[i],s[m][i],m); |
s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
s[m][i]=-2; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
} |
} |
} |
} |
} |
} |
Line 8599 void syscompilerinfo(int logged)
|
Line 10231 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 8624 int prevalence_limit(double *p, double *
|
Line 10256 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(k=1; k<=i1;k++){ |
for(k=1; k<=i1;k++){ /* For each combination k of dummy covariates in the model */ |
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
/* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ |
if(i1 != 1 && TKresult[nres]!= k) |
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
continue; |
/* k=k+1; */ |
|
/* to clean */ |
|
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
|
fprintf(ficrespl,"#******"); |
|
printf("#******"); |
|
fprintf(ficlog,"#******"); |
|
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
|
fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); /* Here problem for varying dummy*/ |
|
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(ficrespl,"******\n"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
if(invalidvarcomb[k]){ |
|
printf("\nCombination (%d) ignored because no case \n",k); |
|
fprintf(ficrespl,"#Combination (%d) ignored because no case \n",k); |
|
fprintf(ficlog,"\nCombination (%d) ignored because no case \n",k); |
|
continue; |
|
} |
|
|
|
fprintf(ficrespl,"#Age "); |
/* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
for(j=1;j<=cptcoveff;j++) { |
/* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ |
fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
} |
/* k=k+1; */ |
for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); |
/* to clean */ |
fprintf(ficrespl,"Total Years_to_converge\n"); |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
|
fprintf(ficrespl,"#******"); |
|
printf("#******"); |
|
fprintf(ficlog,"#******"); |
|
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
|
fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); /* Here problem for varying dummy*/ |
|
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)]); |
|
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficrespl," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
fprintf(ficlog," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
fprintf(ficrespl,"******\n"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
if(invalidvarcomb[k]){ |
|
printf("\nCombination (%d) ignored because no case \n",k); |
|
fprintf(ficrespl,"#Combination (%d) ignored because no case \n",k); |
|
fprintf(ficlog,"\nCombination (%d) ignored because no case \n",k); |
|
continue; |
|
} |
|
|
|
fprintf(ficrespl,"#Age "); |
|
for(j=1;j<=cptcoveff;j++) { |
|
fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
|
} |
|
for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); |
|
fprintf(ficrespl,"Total Years_to_converge\n"); |
|
|
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)]); |
tot=0.; |
tot=0.; |
for(i=1; i<=nlstate;i++){ |
for(i=1; i<=nlstate;i++){ |
tot += prlim[i][i]; |
tot += prlim[i][i]; |
fprintf(ficrespl," %.5f", prlim[i][i]); |
fprintf(ficrespl," %.5f", prlim[i][i]); |
} |
} |
fprintf(ficrespl," %.3f %d\n", tot, *ncvyearp); |
fprintf(ficrespl," %.3f %d\n", tot, *ncvyearp); |
} /* Age */ |
} /* Age */ |
/* was end of cptcod */ |
/* was end of cptcod */ |
} /* cptcov */ |
} /* cptcov */ |
|
} /* nres */ |
return 0; |
return 0; |
} |
} |
|
|
Line 8683 int back_prevalence_limit(double *p, dou
|
Line 10325 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 8714 int back_prevalence_limit(double *p, dou
|
Line 10356 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 */ |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
fprintf(ficresplb,"#******"); |
if(i1 != 1 && TKresult[nres]!= k) |
printf("#******"); |
continue; |
fprintf(ficlog,"#******"); |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
fprintf(ficresplb,"#******"); |
fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("#******"); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"#******"); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
} |
fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb,"******\n"); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("******\n"); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"******\n"); |
} |
if(invalidvarcomb[k]){ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
printf("\nCombination (%d) ignored because no cases \n",k); |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresplb,"#Combination (%d) ignored because no cases \n",k); |
fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficlog,"\nCombination (%d) ignored because no cases \n",k); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
continue; |
} |
} |
fprintf(ficresplb,"******\n"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
if(invalidvarcomb[k]){ |
|
printf("\nCombination (%d) ignored because no cases \n",k); |
|
fprintf(ficresplb,"#Combination (%d) ignored because no cases \n",k); |
|
fprintf(ficlog,"\nCombination (%d) ignored because no cases \n",k); |
|
continue; |
|
} |
|
|
fprintf(ficresplb,"#Age "); |
fprintf(ficresplb,"#Age "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
} |
} |
for(i=1; i<=nlstate;i++) fprintf(ficresplb," %d-%d ",i,i); |
for(i=1; i<=nlstate;i++) fprintf(ficresplb," %d-%d ",i,i); |
fprintf(ficresplb,"Total Years_to_converge\n"); |
fprintf(ficresplb,"Total Years_to_converge\n"); |
|
|
|
|
for (age=agebase; age<=agelim; age++){ |
for (age=agebase; age<=agelim; age++){ |
/* for (age=agebase; age<=agebase; age++){ */ |
/* for (age=agebase; age<=agebase; age++){ */ |
if(mobilavproj > 0){ |
if(mobilavproj > 0){ |
/* bprevalim(bprlim, mobaverage, nlstate, p, age, ageminpar, agemaxpar, oldm, savm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
/* bprevalim(bprlim, mobaverage, nlstate, p, age, ageminpar, agemaxpar, oldm, savm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
/* bprevalim(bprlim, mobaverage, nlstate, p, age, oldm, savm, dnewm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
/* bprevalim(bprlim, mobaverage, nlstate, p, age, oldm, savm, dnewm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
bprevalim(bprlim, mobaverage, nlstate, p, age, ftolpl, ncvyearp, k); |
bprevalim(bprlim, mobaverage, nlstate, p, age, ftolpl, ncvyearp, k, nres); |
}else if (mobilavproj == 0){ |
}else if (mobilavproj == 0){ |
printf("There is no chance to get back prevalence limit if data aren't non zero and summing to 1, please try a non null mobil_average(=%d) parameter or mobil_average=-1 if you want to try at your own risk.\n",mobilavproj); |
printf("There is no chance to get back prevalence limit if data aren't non zero and summing to 1, please try a non null mobil_average(=%d) parameter or mobil_average=-1 if you want to try at your own risk.\n",mobilavproj); |
fprintf(ficlog,"There is no chance to get back prevalence limit if data aren't non zero and summing to 1, please try a non null mobil_average(=%d) parameter or mobil_average=-1 if you want to try at your own risk.\n",mobilavproj); |
fprintf(ficlog,"There is no chance to get back prevalence limit if data aren't non zero and summing to 1, please try a non null mobil_average(=%d) parameter or mobil_average=-1 if you want to try at your own risk.\n",mobilavproj); |
exit(1); |
exit(1); |
}else{ |
}else{ |
/* bprevalim(bprlim, probs, nlstate, p, age, oldm, savm, dnewm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
/* bprevalim(bprlim, probs, nlstate, p, age, oldm, savm, dnewm, doldm, dsavm, ftolpl, ncvyearp, k); */ |
bprevalim(bprlim, probs, nlstate, p, age, ftolpl, ncvyearp, k); |
bprevalim(bprlim, probs, nlstate, p, age, ftolpl, ncvyearp, k,nres); |
} |
/* printf("TOTOT\n"); */ |
fprintf(ficresplb,"%.0f ",age ); |
/* exit(1); */ |
for(j=1;j<=cptcoveff;j++) |
} |
fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb,"%.0f ",age ); |
tot=0.; |
for(j=1;j<=cptcoveff;j++) |
for(i=1; i<=nlstate;i++){ |
fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
tot += bprlim[i][i]; |
tot=0.; |
fprintf(ficresplb," %.5f", bprlim[i][i]); |
for(i=1; i<=nlstate;i++){ |
} |
tot += bprlim[i][i]; |
fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp); |
fprintf(ficresplb," %.5f", bprlim[i][i]); |
} /* Age */ |
} |
/* was end of cptcod */ |
fprintf(ficresplb," %.3f %d\n", tot, *ncvyearp); |
} /* cptcov */ |
} /* Age */ |
|
/* was end of cptcod */ |
|
/*fprintf(ficresplb,"\n");*/ /* Seems to be necessary for gnuplot only if two result lines and no covariate. */ |
|
} /* end of any combination */ |
|
} /* end of nres */ |
/* hBijx(p, bage, fage); */ |
/* hBijx(p, bage, fage); */ |
/* fclose(ficrespijb); */ |
/* fclose(ficrespijb); */ |
|
|
Line 8782 int hPijx(double *p, int bage, int fage)
|
Line 10435 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 8809 int hPijx(double *p, int bage, int fage)
|
Line 10462 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(i1 != 1 && 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 8823 int hPijx(double *p, int bage, int fage)
|
Line 10483 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 8853 int hPijx(double *p, int bage, int fage)
|
Line 10513 int hPijx(double *p, int bage, int fage)
|
int ageminl; |
int ageminl; |
int hstepm; |
int hstepm; |
int nhstepm; |
int nhstepm; |
int h, i, i1, j, k; |
int h, i, i1, j, k, nres; |
|
|
double agedeb; |
double agedeb; |
double ***p3mat; |
double ***p3mat; |
Line 8876 int hPijx(double *p, int bage, int fage)
|
Line 10536 int hPijx(double *p, int bage, int fage)
|
|
|
/* hstepm=1; aff par mois*/ |
/* hstepm=1; aff par mois*/ |
pstamp(ficrespijb); |
pstamp(ficrespijb); |
fprintf(ficrespijb,"#****** h Pij x Back Probability to be in state i at age x-h being in j at x "); |
fprintf(ficrespijb,"#****** h Bij x Back probability to be in state i at age x-h being in j at x: B1j+B2j+...=1 "); |
i1= pow(2,cptcoveff); |
i1= pow(2,cptcoveff); |
/* 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 */ |
fprintf(ficrespijb,"\n#****** "); |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
for(j=1;j<=cptcoveff;j++) |
if(i1 != 1 && TKresult[nres]!= k) |
fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
continue; |
fprintf(ficrespijb,"******\n"); |
fprintf(ficrespijb,"\n#****** "); |
if(invalidvarcomb[k]){ |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); |
fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
continue; |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
} |
fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
} |
/* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ |
fprintf(ficrespijb,"******\n"); |
for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ |
if(invalidvarcomb[k]){ /* Is it necessary here? */ |
/* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ |
fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); |
nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ |
continue; |
nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 */ |
} |
|
|
/* nhstepm=nhstepm*YEARM; aff par mois*/ |
/* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ |
|
for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ |
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
/* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ |
/* oldm=oldms;savm=savms; */ |
nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 */ |
hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k); |
|
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ |
/* nhstepm=nhstepm*YEARM; aff par mois*/ |
fprintf(ficrespijb,"# Cov Agex agex-h hpijx with i,j="); |
|
for(i=1; i<=nlstate;i++) |
p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); /* We can't have it at an upper level because of nhstepm */ |
for(j=1; j<=nlstate+ndeath;j++) |
/* and memory limitations if stepm is small */ |
fprintf(ficrespijb," %1d-%1d",i,j); |
|
fprintf(ficrespijb,"\n"); |
/* oldm=oldms;savm=savms; */ |
for (h=0; h<=nhstepm; h++){ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
/*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ |
hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k, nres); |
fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb - h*hstepm/YEARM*stepm ); |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ |
/* fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); */ |
fprintf(ficrespijb,"# Cov Agex agex-h hbijx 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++) |
fprintf(ficrespijb," %.5f", p3mat[i][j][h]); |
fprintf(ficrespijb," %1d-%1d",i,j); |
fprintf(ficrespijb,"\n"); |
fprintf(ficrespijb,"\n"); |
} |
for (h=0; h<=nhstepm; h++){ |
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
/*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ |
fprintf(ficrespijb,"\n"); |
fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb - h*hstepm/YEARM*stepm ); |
} |
/* fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); */ |
/*}*/ |
for(i=1; i<=nlstate;i++) |
} |
for(j=1; j<=nlstate+ndeath;j++) |
|
fprintf(ficrespijb," %.5f", p3mat[i][j][h]); |
|
fprintf(ficrespijb,"\n"); |
|
} |
|
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
|
fprintf(ficrespijb,"\n"); |
|
} /* end age deb */ |
|
} /* end combination */ |
|
} /* end nres */ |
return 0; |
return 0; |
} /* hBijx */ |
} /* hBijx */ |
|
|
Line 8949 int main(int argc, char *argv[])
|
Line 10617 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; |
|
int endishere=0; |
|
int noffset=0; |
|
int ncurrv=0; /* Temporary variable */ |
|
|
char ca[32], cb[32]; |
char ca[32], cb[32]; |
/* FILE *fichtm; *//* Html File */ |
/* FILE *fichtm; *//* Html File */ |
/* FILE *ficgp;*/ /*Gnuplot File */ |
/* FILE *ficgp;*/ /*Gnuplot File */ |
Line 8967 int main(int argc, char *argv[])
|
Line 10639 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 8993 int main(int argc, char *argv[])
|
Line 10665 int main(int argc, char *argv[])
|
double **prlim; |
double **prlim; |
double **bprlim; |
double **bprlim; |
double ***param; /* Matrix of parameters */ |
double ***param; /* Matrix of parameters */ |
double *p; |
double ***paramstart; /* Matrix of starting parameter values */ |
|
double *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */ |
double **matcov; /* Matrix of covariance */ |
double **matcov; /* Matrix of covariance */ |
double **hess; /* Hessian matrix */ |
double **hess; /* Hessian matrix */ |
double ***delti3; /* Scale */ |
double ***delti3; /* Scale */ |
double *delti; /* Scale */ |
double *delti; /* Scale */ |
double ***eij, ***vareij; |
double ***eij, ***vareij; |
double **varpl; /* Variances of prevalence limits by age */ |
double **varpl; /* Variances of prevalence limits by age */ |
|
|
double *epj, vepp; |
double *epj, vepp; |
|
|
double dateprev1, dateprev2,jproj1=1,mproj1=1,anproj1=2000,jproj2=1,mproj2=1,anproj2=2000; |
double dateprev1, dateprev2; |
double jback1=1,mback1=1,anback1=2000,jback2=1,mback2=1,anback2=2000; |
double jproj1=1,mproj1=1,anproj1=2000,jproj2=1,mproj2=1,anproj2=2000, dateproj1=0, dateproj2=0; |
|
double jback1=1,mback1=1,anback1=2000,jback2=1,mback2=1,anback2=2000, dateback1=0, dateback2=0; |
|
|
double **ximort; |
double **ximort; |
char *alph[]={"a","a","b","c","d","e"}, str[4]="1234"; |
char *alph[]={"a","a","b","c","d","e"}, str[4]="1234"; |
Line 9170 int main(int argc, char *argv[])
|
Line 10845 int main(int argc, char *argv[])
|
fflush(ficlog); |
fflush(ficlog); |
goto end; |
goto end; |
} |
} |
|
/*-------- Rewriting parameter file ----------*/ |
|
strcpy(rfileres,"r"); /* "Rparameterfile */ |
|
strcat(rfileres,optionfilefiname); /* Parameter file first name */ |
|
strcat(rfileres,"."); /* */ |
|
strcat(rfileres,optionfilext); /* Other files have txt extension */ |
|
if((ficres =fopen(rfileres,"w"))==NULL) { |
|
printf("Problem writing new parameter file: %s\n", rfileres);goto end; |
|
fprintf(ficlog,"Problem writing new parameter file: %s\n", rfileres);goto end; |
|
fflush(ficlog); |
|
goto end; |
|
} |
|
fprintf(ficres,"#IMaCh %s\n",version); |
|
|
|
|
/* Reads comments: lines beginning with '#' */ |
/* Reads comments: lines beginning with '#' */ |
numlinepar=0; |
numlinepar=0; |
|
/* Is it a BOM UTF-8 Windows file? */ |
/* First parameter line */ |
/* First parameter line */ |
while(fgets(line, MAXLINE, ficpar)) { |
while(fgets(line, MAXLINE, ficpar)) { |
|
noffset=0; |
|
if( line[0] == (char)0xEF && line[1] == (char)0xBB) /* EF BB BF */ |
|
{ |
|
noffset=noffset+3; |
|
printf("# File is an UTF8 Bom.\n"); // 0xBF |
|
} |
|
else if( line[0] == (char)0xFE && line[1] == (char)0xFF) |
|
{ |
|
noffset=noffset+2; |
|
printf("# File is an UTF16BE BOM file\n"); |
|
} |
|
else if( line[0] == 0 && line[1] == 0) |
|
{ |
|
if( line[2] == (char)0xFE && line[3] == (char)0xFF){ |
|
noffset=noffset+4; |
|
printf("# File is an UTF16BE BOM file\n"); |
|
} |
|
} else{ |
|
;/*printf(" Not a BOM file\n");*/ |
|
} |
|
|
/* If line starts with a # it is a comment */ |
/* If line starts with a # it is a comment */ |
if (line[0] == '#') { |
if (line[noffset] == '#') { |
numlinepar++; |
numlinepar++; |
fputs(line,stdout); |
fputs(line,stdout); |
fputs(line,ficparo); |
fputs(line,ficparo); |
|
fputs(line,ficres); |
fputs(line,ficlog); |
fputs(line,ficlog); |
continue; |
continue; |
}else |
}else |
Line 9201 int main(int argc, char *argv[])
|
Line 10911 int main(int argc, char *argv[])
|
numlinepar++; |
numlinepar++; |
fputs(line,stdout); |
fputs(line,stdout); |
fputs(line,ficparo); |
fputs(line,ficparo); |
|
fputs(line,ficres); |
fputs(line,ficlog); |
fputs(line,ficlog); |
continue; |
continue; |
}else |
}else |
Line 9223 int main(int argc, char *argv[])
|
Line 10934 int main(int argc, char *argv[])
|
numlinepar++; |
numlinepar++; |
fputs(line,stdout); |
fputs(line,stdout); |
fputs(line,ficparo); |
fputs(line,ficparo); |
|
fputs(line,ficres); |
fputs(line,ficlog); |
fputs(line,ficlog); |
continue; |
continue; |
}else |
}else |
break; |
break; |
} |
} |
if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){ |
if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){ |
if (num_filled == 0) |
if (num_filled == 0){ |
model[0]='\0'; |
printf("ERROR %d: Model should be at minimum 'model=1+age.' WITHOUT space:'%s'\n",num_filled, line); |
else if (num_filled != 1){ |
fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age.' WITHOUT space:'%s'\n",num_filled, line); |
|
model[0]='\0'; |
|
goto end; |
|
} else if (num_filled != 1){ |
printf("ERROR %d: Model should be at minimum 'model=1+age.' %s\n",num_filled, line); |
printf("ERROR %d: Model should be at minimum 'model=1+age.' %s\n",num_filled, line); |
fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age.' %s\n",num_filled, line); |
fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age.' %s\n",num_filled, line); |
model[0]='\0'; |
model[0]='\0'; |
Line 9280 int main(int argc, char *argv[])
|
Line 10995 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 */ |
if(nqv>=1)coqvar=matrix(1,nqv,1,n); /**< Fixed quantitative covariate */ |
cotvar=ma3x(1,maxwav,1,ntv,1,n); /**< Time varying covariate */ |
if(nqtv>=1)cotqvar=ma3x(1,maxwav,1,nqtv,1,n); /**< Time varying quantitative covariate */ |
cotqvar=ma3x(1,maxwav,1,nqtv,1,n); /**< Time varying quantitative covariate */ |
if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,1,ntv+nqtv,1,n); /**< Time varying covariate (dummy and quantitative)*/ |
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 |
v1+v2*age+v2*v3 makes cptcovn = 3 |
v1+v2*age+v2*v3 makes cptcovn = 3 |
Line 9304 int main(int argc, char *argv[])
|
Line 11019 int main(int argc, char *argv[])
|
delti=delti3[1][1]; |
delti=delti3[1][1]; |
/*delti=vector(1,npar); *//* Scale of each paramater (output from hesscov)*/ |
/*delti=vector(1,npar); *//* Scale of each paramater (output from hesscov)*/ |
if(mle==-1){ /* Print a wizard for help writing covariance matrix */ |
if(mle==-1){ /* Print a wizard for help writing covariance matrix */ |
|
/* We could also provide initial parameters values giving by simple logistic regression |
|
* only one way, that is without matrix product. We will have nlstate maximizations */ |
|
/* for(i=1;i<nlstate;i++){ */ |
|
/* /\*reducing xi for 1 to npar to 1 to ncovmodel; *\/ */ |
|
/* mlikeli(ficres,p, ncovmodel, ncovmodel, nlstate, ftol, funcnoprod); */ |
|
/* } */ |
prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
printf(" You chose mle=-1, look at file %s for a template of covariance matrix \n",filereso); |
printf(" You chose mle=-1, look at file %s for a template of covariance matrix \n",filereso); |
fprintf(ficlog," You chose mle=-1, look at file %s for a template of covariance matrix \n",filereso); |
fprintf(ficlog," You chose mle=-1, look at file %s for a template of covariance matrix \n",filereso); |
Line 9333 int main(int argc, char *argv[])
|
Line 11054 int main(int argc, char *argv[])
|
ungetc(c,ficpar); |
ungetc(c,ficpar); |
|
|
param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
param= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
|
paramstart= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); |
for(i=1; i <=nlstate; i++){ |
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 parameters values */ |
p=param[1][1]; |
p=param[1][1]; |
|
pstart=paramstart[1][1]; |
|
|
/* Reads comments: lines beginning with '#' */ |
/* Reads comments: lines beginning with '#' */ |
while((c=getc(ficpar))=='#' && c!= EOF){ |
while((c=getc(ficpar))=='#' && c!= EOF){ |
Line 9385 run imach with mle=-1 to get a correct t
|
Line 11108 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 9473 Please run with mle=-1 to get a correct
|
Line 11196 Please run with mle=-1 to get a correct
|
|
|
fflush(ficlog); |
fflush(ficlog); |
|
|
/*-------- Rewriting parameter file ----------*/ |
|
strcpy(rfileres,"r"); /* "Rparameterfile */ |
|
strcat(rfileres,optionfilefiname); /* Parameter file first name*/ |
|
strcat(rfileres,"."); /* */ |
|
strcat(rfileres,optionfilext); /* Other files have txt extension */ |
|
if((ficres =fopen(rfileres,"w"))==NULL) { |
|
printf("Problem writing new parameter file: %s\n", rfileres);goto end; |
|
fprintf(ficlog,"Problem writing new parameter file: %s\n", rfileres);goto end; |
|
} |
|
fprintf(ficres,"#%s\n",version); |
|
} /* End of mle != -3 */ |
} /* End of mle != -3 */ |
|
|
/* Main data |
/* Main data |
Line 9497 Please run with mle=-1 to get a correct
|
Line 11210 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 9518 Please run with mle=-1 to get a correct
|
Line 11231 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); /* */ |
|
TvarFind=ivector(1,NCOVMAX); /* */ |
|
TvarV=ivector(1,NCOVMAX); /* */ |
|
TvarVind=ivector(1,NCOVMAX); /* */ |
|
TvarA=ivector(1,NCOVMAX); /* */ |
|
TvarAind=ivector(1,NCOVMAX); /* */ |
TvarFD=ivector(1,NCOVMAX); /* */ |
TvarFD=ivector(1,NCOVMAX); /* */ |
TvarFDind=ivector(1,NCOVMAX); /* */ |
TvarFDind=ivector(1,NCOVMAX); /* */ |
TvarFQ=ivector(1,NCOVMAX); /* */ |
TvarFQ=ivector(1,NCOVMAX); /* */ |
Line 9536 Please run with mle=-1 to get a correct
|
Line 11259 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 9624 Please run with mle=-1 to get a correct
|
Line 11348 Please run with mle=-1 to get a correct
|
*/ |
*/ |
|
|
concatwav(wav, dh, bh, mw, s, agedc, agev, firstpass, lastpass, imx, nlstate, stepm); |
concatwav(wav, dh, bh, mw, s, agedc, agev, firstpass, lastpass, imx, nlstate, stepm); |
/* */ |
/* Concatenates waves */ |
|
|
free_vector(moisdc,1,n); |
free_vector(moisdc,1,n); |
free_vector(andc,1,n); |
free_vector(andc,1,n); |
Line 9805 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 11529 Title=%s <br>Datafile=%s Firstpass=%d La
|
/* Calculates basic frequencies. Computes observed prevalence at single age |
/* Calculates basic frequencies. Computes observed prevalence at single age |
and for any valid combination of covariates |
and for any valid combination of covariates |
and prints on file fileres'p'. */ |
and prints on file fileres'p'. */ |
freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \ |
freqsummary(fileres, p, pstart, agemin, agemax, s, agev, nlstate, imx, Tvaraff, invalidvarcomb, nbcode, ncodemax,mint,anint,strstart, \ |
firstpass, lastpass, stepm, weightopt, model); |
firstpass, lastpass, stepm, weightopt, model); |
|
|
fprintf(fichtm,"\n"); |
fprintf(fichtm,"\n"); |
fprintf(fichtm,"<br>Total number of observations=%d <br>\n\ |
fprintf(fichtm,"<h4>Parameter line 2</h4><ul><li>Tolerance for the convergence of the likelihood: ftol=%f \n<li>Interval for the elementary matrix (in month): stepm=%d",\ |
|
ftol, stepm); |
|
fprintf(fichtm,"\n<li>Number of fixed dummy covariates: ncovcol=%d ", ncovcol); |
|
ncurrv=1; |
|
for(i=ncurrv; i <=ncovcol; i++) fprintf(fichtm,"V%d ", i); |
|
fprintf(fichtm,"\n<li> Number of fixed quantitative variables: nqv=%d ", nqv); |
|
ncurrv=i; |
|
for(i=ncurrv; i <=ncurrv-1+nqv; i++) fprintf(fichtm,"V%d ", i); |
|
fprintf(fichtm,"\n<li> Number of time varying (wave varying) covariates: ntv=%d ", ntv); |
|
ncurrv=i; |
|
for(i=ncurrv; i <=ncurrv-1+ntv; i++) fprintf(fichtm,"V%d ", i); |
|
fprintf(fichtm,"\n<li>Number of quantitative time varying covariates: nqtv=%d ", nqtv); |
|
ncurrv=i; |
|
for(i=ncurrv; i <=ncurrv-1+nqtv; i++) fprintf(fichtm,"V%d ", i); |
|
fprintf(fichtm,"\n<li>Weights column \n<br>Number of alive states: nlstate=%d <br>Number of death states (not really implemented): ndeath=%d \n<li>Number of waves: maxwav=%d \n<li>Parameter for maximization (1), using parameter values (0), for design of parameters and variance-covariance matrix: mle=%d \n<li>Does the weight column be taken into account (1), or not (0): weight=%d</ul>\n", \ |
|
nlstate, ndeath, maxwav, mle, weightopt); |
|
|
|
fprintf(fichtm,"<h4> Diagram of states <a href=\"%s_.svg\">%s_.svg</a></h4> \n\ |
|
<img src=\"%s_.svg\">", subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_")); |
|
|
|
|
|
fprintf(fichtm,"\n<h4>Some descriptive statistics </h4>\n<br>Total number of observations=%d <br>\n\ |
Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\ |
Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\ |
Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\ |
Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\ |
imx,agemin,agemax,jmin,jmax,jmean); |
imx,agemin,agemax,jmin,jmax,jmean); |
pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
newms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
newms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
savms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
savms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */ |
oldm=oldms; newm=newms; savm=savms; /* Keeps fixed addresses to free */ |
oldm=oldms; newm=newms; savm=savms; /* Keeps fixed addresses to free */ |
|
|
/* For Powell, parameters are in a vector p[] starting at p[1] |
/* For Powell, parameters are in a vector p[] starting at p[1] |
so we point p on param[1][1] so that p[1] maps on param[1][1][1] */ |
so we point p on param[1][1] so that p[1] maps on param[1][1][1] */ |
Line 9827 Interval (in months) between two waves:
|
Line 11572 Interval (in months) between two waves:
|
/* For mortality only */ |
/* For mortality only */ |
if (mle==-3){ |
if (mle==-3){ |
ximort=matrix(1,NDIM,1,NDIM); |
ximort=matrix(1,NDIM,1,NDIM); |
for(i=1;i<=NDIM;i++) |
for(i=1;i<=NDIM;i++) |
for(j=1;j<=NDIM;j++) |
for(j=1;j<=NDIM;j++) |
ximort[i][j]=0.; |
ximort[i][j]=0.; |
/* ximort=gsl_matrix_alloc(1,NDIM,1,NDIM); */ |
/* ximort=gsl_matrix_alloc(1,NDIM,1,NDIM); */ |
cens=ivector(1,n); |
cens=ivector(1,n); |
ageexmed=vector(1,n); |
ageexmed=vector(1,n); |
Line 10065 Please run with mle=-1 to get a correct
|
Line 11810 Please run with mle=-1 to get a correct
|
printf("\n"); |
printf("\n"); |
if(mle>=1){ /* Could be 1 or 2, Real Maximization */ |
if(mle>=1){ /* Could be 1 or 2, Real Maximization */ |
/* mlikeli uses func not funcone */ |
/* mlikeli uses func not funcone */ |
|
/* for(i=1;i<nlstate;i++){ */ |
|
/* /\*reducing xi for 1 to npar to 1 to ncovmodel; *\/ */ |
|
/* mlikeli(ficres,p, ncovmodel, ncovmodel, nlstate, ftol, funcnoprod); */ |
|
/* } */ |
mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func); |
mlikeli(ficres,p, npar, ncovmodel, nlstate, ftol, func); |
} |
} |
if(mle==0) {/* No optimization, will print the likelihoods for the datafile */ |
if(mle==0) {/* No optimization, will print the likelihoods for the datafile */ |
Line 10280 Please run with mle=-1 to get a correct
|
Line 12029 Please run with mle=-1 to get a correct
|
fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl); |
fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl); |
|
|
/* Other stuffs, more or less useful */ |
/* Other stuffs, more or less useful */ |
while((c=getc(ficpar))=='#' && c!= EOF){ |
while(fgets(line, MAXLINE, ficpar)) { |
ungetc(c,ficpar); |
/* If line starts with a # it is a comment */ |
fgets(line, MAXLINE, ficpar); |
if (line[0] == '#') { |
fputs(line,stdout); |
numlinepar++; |
fputs(line,ficparo); |
fputs(line,stdout); |
} |
fputs(line,ficparo); |
ungetc(c,ficpar); |
fputs(line,ficlog); |
|
continue; |
fscanf(ficpar,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav); |
}else |
fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
break; |
fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
|
printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
|
fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
|
|
|
while((c=getc(ficpar))=='#' && c!= EOF){ |
|
ungetc(c,ficpar); |
|
fgets(line, MAXLINE, ficpar); |
|
fputs(line,stdout); |
|
fputs(line,ficparo); |
|
} |
|
ungetc(c,ficpar); |
|
|
|
|
|
dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.; |
|
dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.; |
|
|
|
fscanf(ficpar,"pop_based=%d\n",&popbased); |
|
fprintf(ficlog,"pop_based=%d\n",popbased); |
|
fprintf(ficparo,"pop_based=%d\n",popbased); |
|
fprintf(ficres,"pop_based=%d\n",popbased); |
|
|
|
while((c=getc(ficpar))=='#' && c!= EOF){ |
|
ungetc(c,ficpar); |
|
fgets(line, MAXLINE, ficpar); |
|
fputs(line,stdout); |
|
fputs(line,ficparo); |
|
} |
} |
ungetc(c,ficpar); |
|
|
if((num_filled=sscanf(line,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav)) !=EOF){ |
fscanf(ficpar,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj); |
|
fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
if (num_filled != 7) { |
printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
printf("Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
fprintf(ficlog,"Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
goto end; |
/* day and month of proj2 are not used but only year anproj2.*/ |
} |
|
printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
while((c=getc(ficpar))=='#' && c!= EOF){ |
fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
ungetc(c,ficpar); |
fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
fgets(line, MAXLINE, ficpar); |
fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav); |
fputs(line,stdout); |
|
fputs(line,ficparo); |
|
} |
} |
ungetc(c,ficpar); |
|
|
|
fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj); |
|
fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
/* day and month of proj2 are not used but only year anproj2.*/ |
|
|
|
/* Results */ |
|
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 10352 Please run with mle=-1 to get a correct
|
Line 12065 Please run with mle=-1 to get a correct
|
}else |
}else |
break; |
break; |
} |
} |
while((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ |
|
if (num_filled == 0) |
|
resultline[0]='\0'; |
dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.; |
else if (num_filled != 1){ |
dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.; |
printf("ERROR %d: result line should be at minimum 'result=' %s\n",num_filled, line); |
|
} |
if((num_filled=sscanf(line,"pop_based=%d\n",&popbased)) !=EOF){ |
printf("Result %d: result line should be at minimum 'line=' %s, result=%s\n",num_filled, line, resultline); |
if (num_filled != 1) { |
decoderesult(resultline); |
printf("Error: Not 1 (data)parameters in line but %d, for example:pop_based=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
while(fgets(line, MAXLINE, ficpar)) { |
fprintf(ficlog,"Error: Not 1 (data)parameters in line but %d, for example: pop_based=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
/* If line starts with a # it is a comment */ |
goto end; |
if (line[0] == '#') { |
|
numlinepar++; |
|
fputs(line,stdout); |
|
fputs(line,ficparo); |
|
fputs(line,ficlog); |
|
continue; |
|
}else |
|
break; |
|
} |
} |
if (feof(ficpar)) |
printf("pop_based=%d\n",popbased); |
break; |
fprintf(ficlog,"pop_based=%d\n",popbased); |
else{ /* Processess output results for this combination of covariate values */ |
fprintf(ficparo,"pop_based=%d\n",popbased); |
} |
fprintf(ficres,"pop_based=%d\n",popbased); |
} |
} |
|
|
|
/* Results */ |
|
nresult=0; |
|
do{ |
|
if(!fgets(line, MAXLINE, ficpar)){ |
|
endishere=1; |
|
parameterline=14; |
|
}else if (line[0] == '#') { |
|
/* If line starts with a # it is a comment */ |
|
numlinepar++; |
|
fputs(line,stdout); |
|
fputs(line,ficparo); |
|
fputs(line,ficlog); |
|
continue; |
|
}else if(sscanf(line,"prevforecast=%[^\n]\n",modeltemp)) |
|
parameterline=11; |
|
else if(sscanf(line,"backcast=%[^\n]\n",modeltemp)) |
|
parameterline=12; |
|
else if(sscanf(line,"result:%[^\n]\n",modeltemp)) |
|
parameterline=13; |
|
else{ |
|
parameterline=14; |
|
} |
|
switch (parameterline){ |
|
case 11: |
|
if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF){ |
|
if (num_filled != 8) { |
|
printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
|
fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
|
goto end; |
|
} |
|
fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
|
printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
|
fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
|
fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj); |
|
/* day and month of proj2 are not used but only year anproj2.*/ |
|
dateproj1=anproj1+(mproj1-1)/12.+(jproj1-1)/365.; |
|
dateproj2=anproj2+(mproj2-1)/12.+(jproj2-1)/365.; |
|
|
|
} |
|
break; |
|
case 12: |
|
/*fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);*/ |
|
if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){ |
|
if (num_filled != 8) { |
|
printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
|
fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 final-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line); |
|
goto end; |
|
} |
|
printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj); |
|
/* day and month of proj2 are not used but only year anproj2.*/ |
|
dateback1=anback1+(mback1-1)/12.+(jback1-1)/365.; |
|
dateback2=anback2+(mback2-1)/12.+(jback2-1)/365.; |
|
} |
|
break; |
|
case 13: |
|
if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){ |
|
if (num_filled == 0){ |
|
resultline[0]='\0'; |
|
printf("Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line); |
|
fprintf(ficlog,"Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line); |
|
break; |
|
} else if (num_filled != 1){ |
|
printf("ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line); |
|
fprintf(ficlog,"ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line); |
|
} |
|
nresult++; /* Sum of resultlines */ |
|
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 */ |
|
fprintf(ficparo,"result: %s\n",resultline); |
|
fprintf(ficres,"result: %s\n",resultline); |
|
fprintf(ficlog,"result: %s\n",resultline); |
|
break; |
|
case 14: |
|
if(ncovmodel >2 && nresult==0 ){ |
|
printf("ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line); |
|
goto end; |
|
} |
|
break; |
|
default: |
|
nresult=1; |
|
decoderesult(".",nresult ); /* No covariate */ |
|
} |
|
} /* End switch parameterline */ |
|
}while(endishere==0); /* End do */ |
|
|
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); */ |
/* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); */ |
/* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ |
/* ,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2); */ |
Line 10391 Please run with mle=-1 to get a correct
|
Line 12187 Please run with mle=-1 to get a correct
|
This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ |
This is probably because your parameter file doesn't \n contain the exact number of lines (or columns) corresponding to your model line.\n\ |
Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); |
Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpar); |
}else{ |
}else{ |
printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p); |
/* printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,fage, prevfcast, backcast, pathc,p, (int)anproj1-(int)agemin, (int)anback1-(int)agemax+1); */ |
|
printinggnuplot(fileresu, optionfilefiname,ageminpar,agemaxpar,bage, fage, prevfcast, backcast, pathc,p, (int)anproj1-bage, (int)anback1-fage); |
} |
} |
printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ |
printinghtml(fileresu,title,datafile, firstpass, lastpass, stepm, weightopt, \ |
model,imx,jmin,jmax,jmean,rfileres,popforecast,prevfcast,backcast, estepm, \ |
model,imx,jmin,jmax,jmean,rfileres,popforecast,mobilav,prevfcast,mobilavproj,backcast, estepm, \ |
jprev1,mprev1,anprev1,dateprev1,jprev2,mprev2,anprev2,dateprev2); |
jprev1,mprev1,anprev1,dateprev1, dateproj1, dateback1,jprev2,mprev2,anprev2,dateprev2,dateproj2, dateback2); |
|
|
/*------------ free_vector -------------*/ |
/*------------ free_vector -------------*/ |
/* chdir(path); */ |
/* chdir(path); */ |
Line 10431 Please run with mle=-1 to get a correct
|
Line 12228 Please run with mle=-1 to get a correct
|
k=1; |
k=1; |
varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax,strstart); |
varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax,strstart); |
|
|
/* Prevalence for each covariates in probs[age][status][cov] */ |
/* Prevalence for each covariate combination in probs[age][status][cov] */ |
probs= ma3x(1,AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
probs= ma3x(AGEINF,AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
for(i=1;i<=AGESUP;i++) |
for(i=AGEINF;i<=AGESUP;i++) |
for(j=1;j<=nlstate+ndeath;j++) /* ndeath is useless but a necessity to be compared with mobaverages */ |
for(j=1;j<=nlstate+ndeath;j++) /* ndeath is useless but a necessity to be compared with mobaverages */ |
for(k=1;k<=ncovcombmax;k++) |
for(k=1;k<=ncovcombmax;k++) |
probs[i][j][k]=0.; |
probs[i][j][k]=0.; |
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); |
if (mobilav!=0 ||mobilavproj !=0 ) { |
if (mobilav!=0 ||mobilavproj !=0 ) { |
mobaverages= ma3x(1, AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
mobaverages= ma3x(AGEINF, AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
for(i=1;i<=AGESUP;i++) |
for(i=AGEINF;i<=AGESUP;i++) |
for(j=1;j<=nlstate;j++) |
for(j=1;j<=nlstate+ndeath;j++) |
for(k=1;k<=ncovcombmax;k++) |
for(k=1;k<=ncovcombmax;k++) |
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"); |
|
fprintf(ficlog,"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); |
} |
} |
} |
} else if (mobilavproj !=0) { |
/* /\* Prevalence for each covariates in probs[age][status][cov] *\/ */ |
printf("Movingaveraging projected observed prevalence\n"); |
/* prevalence(probs, ageminpar, agemaxpar, s, agev, nlstate, imx, Tvar, nbcode, ncodemax, mint, anint, dateprev1, dateprev2, firstpass, lastpass); */ |
fprintf(ficlog,"Movingaveraging projected observed prevalence\n"); |
else if (mobilavproj !=0) { |
|
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); |
} |
} |
|
}else{ |
|
printf("Internal error moving average\n"); |
|
fflush(stdout); |
|
exit(1); |
} |
} |
}/* end if moving average */ |
}/* end if moving average */ |
|
|
/*---------- Forecasting ------------------*/ |
/*---------- Forecasting ------------------*/ |
/*if((stepm == 1) && (strcmp(model,".")==0)){*/ |
|
if(prevfcast==1){ |
if(prevfcast==1){ |
/* if(stepm ==1){*/ |
/* if(stepm ==1){*/ |
prevforecast(fileresu, anproj1, mproj1, jproj1, agemin, agemax, dateprev1, dateprev2, mobilavproj, bage, fage, firstpass, lastpass, anproj2, p, cptcoveff); |
prevforecast(fileresu, anproj1, mproj1, jproj1, agemin, agemax, dateprev1, dateprev2, mobilavproj, mobaverage, bage, fage, firstpass, lastpass, anproj2, p, cptcoveff); |
} |
} |
|
|
|
/* Backcasting */ |
if(backcast==1){ |
if(backcast==1){ |
ddnewms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
ddnewms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
ddoldms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
ddoldms=matrix(1,nlstate+ndeath,1,nlstate+ndeath); |
Line 10475 Please run with mle=-1 to get a correct
|
Line 12279 Please run with mle=-1 to get a correct
|
/*--------------- Back Prevalence limit (period or stable prevalence) --------------*/ |
/*--------------- Back Prevalence limit (period or stable prevalence) --------------*/ |
|
|
bprlim=matrix(1,nlstate,1,nlstate); |
bprlim=matrix(1,nlstate,1,nlstate); |
|
|
back_prevalence_limit(p, bprlim, ageminpar, agemaxpar, ftolpl, &ncvyear, dateprev1, dateprev2, firstpass, lastpass, mobilavproj); |
back_prevalence_limit(p, bprlim, ageminpar, agemaxpar, ftolpl, &ncvyear, dateprev1, dateprev2, firstpass, lastpass, mobilavproj); |
fclose(ficresplb); |
fclose(ficresplb); |
|
|
hBijx(p, bage, fage, mobaverage); |
hBijx(p, bage, fage, mobaverage); |
fclose(ficrespijb); |
fclose(ficrespijb); |
free_matrix(bprlim,1,nlstate,1,nlstate); /*here or after loop ? */ |
|
|
|
/* prevbackforecast(fileresu, anback1, mback1, jback1, agemin, agemax, dateprev1, dateprev2, mobilavproj, |
prevbackforecast(fileresu, mobaverage, anback1, mback1, jback1, agemin, agemax, dateprev1, dateprev2, |
bage, fage, firstpass, lastpass, anback2, p, cptcoveff); */ |
mobilavproj, bage, fage, firstpass, lastpass, anback2, p, cptcoveff); |
|
varbprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, bprlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); |
|
|
|
|
|
free_matrix(bprlim,1,nlstate,1,nlstate); /*here or after loop ? */ |
free_matrix(ddnewms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
free_matrix(ddnewms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
free_matrix(ddsavms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
free_matrix(ddsavms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
free_matrix(ddoldms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
free_matrix(ddoldms, 1, nlstate+ndeath, 1, nlstate+ndeath); |
} |
} /* end Backcasting */ |
|
|
|
|
/* ------ Other prevalence ratios------------ */ |
/* ------ Other prevalence ratios------------ */ |
|
|
Line 10508 Please run with mle=-1 to get a correct
|
Line 12316 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); |
|
|
|
pstamp(ficreseij); |
|
|
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(i1 != 1 && 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); |
} |
} |
fclose(ficreseij); |
fclose(ficreseij); |
printf("done evsij\n");fflush(stdout); |
printf("done evsij\n");fflush(stdout); |
fprintf(ficlog,"done evsij\n");fflush(ficlog); |
fprintf(ficlog,"done evsij\n");fflush(ficlog); |
|
|
|
|
/*---------- State-specific expectancies and variances ------------*/ |
/*---------- State-specific expectancies and variances ------------*/ |
|
|
|
|
strcpy(filerest,"T_"); |
strcpy(filerest,"T_"); |
strcat(filerest,fileresu); |
strcat(filerest,fileresu); |
if((ficrest=fopen(filerest,"w"))==NULL) { |
if((ficrest=fopen(filerest,"w"))==NULL) { |
Line 10537 Please run with mle=-1 to get a correct
|
Line 12360 Please run with mle=-1 to get a correct
|
} |
} |
printf("Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(stdout); |
printf("Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(stdout); |
fprintf(ficlog,"Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(ficlog); |
fprintf(ficlog,"Computing Total Life expectancies with their standard errors: file '%s' ...\n", filerest); fflush(ficlog); |
|
|
|
|
strcpy(fileresstde,"STDE_"); |
strcpy(fileresstde,"STDE_"); |
strcat(fileresstde,fileresu); |
strcat(fileresstde,fileresu); |
if((ficresstdeij=fopen(fileresstde,"w"))==NULL) { |
if((ficresstdeij=fopen(fileresstde,"w"))==NULL) { |
Line 10566 Please run with mle=-1 to get a correct
|
Line 12387 Please run with mle=-1 to get a correct
|
printf(" Computing Variance-covariance of State-specific Expectancies: file '%s' ... ", fileresv);fflush(stdout); |
printf(" Computing Variance-covariance of State-specific Expectancies: file '%s' ... ", fileresv);fflush(stdout); |
fprintf(ficlog," Computing Variance-covariance of State-specific Expectancies: file '%s' ... ", fileresv);fflush(ficlog); |
fprintf(ficlog," Computing Variance-covariance of State-specific Expectancies: file '%s' ... ", fileresv);fflush(ficlog); |
|
|
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
if (cptcovn < 1){i1=1;} |
|
|
for (k=1; k <= (int) pow(2,cptcoveff); k++){ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
printf("\n#****** "); |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
fprintf(ficrest,"\n#****** "); |
if(i1 != 1 && TKresult[nres]!= k) |
fprintf(ficlog,"\n#****** "); |
continue; |
|
printf("\n#****** Result for:"); |
|
fprintf(ficrest,"\n#****** Result for:"); |
|
fprintf(ficlog,"\n#****** Result for:"); |
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 10588 Please run with mle=-1 to get a correct
|
Line 12417 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#****** "); |
|
/* pstamp(ficresvij); */ |
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 10611 Please run with mle=-1 to get a correct
|
Line 12448 Please run with mle=-1 to get a correct
|
vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
vareij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
pstamp(ficrest); |
pstamp(ficrest); |
|
|
|
epj=vector(1,nlstate+1); |
for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/ |
for(vpopbased=0; vpopbased <= popbased; vpopbased++){ /* Done for vpopbased=0 and vpopbased=1 if popbased==1*/ |
oldm=oldms;savm=savms; /* ZZ Segmentation fault */ |
oldm=oldms;savm=savms; /* ZZ Segmentation fault */ |
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 10627 Please run with mle=-1 to get a correct
|
Line 12464 Please run with mle=-1 to get a correct
|
for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i); |
for (i=1;i<=nlstate;i++) fprintf(ficrest,"e.%d (std) ",i); |
fprintf(ficrest,"\n"); |
fprintf(ficrest,"\n"); |
/* printf("Which p?\n"); for(i=1;i<=npar;i++)printf("p[i=%d]=%lf,",i,p[i]);printf("\n"); */ |
/* printf("Which p?\n"); for(i=1;i<=npar;i++)printf("p[i=%d]=%lf,",i,p[i]);printf("\n"); */ |
epj=vector(1,nlstate+1); |
|
printf("Computing age specific period (stable) prevalences in each health state \n"); |
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 10665 Please run with mle=-1 to get a correct
|
Line 12501 Please run with mle=-1 to get a correct
|
fprintf(ficrest,"\n"); |
fprintf(ficrest,"\n"); |
} |
} |
} /* End vpopbased */ |
} /* End vpopbased */ |
|
free_vector(epj,1,nlstate+1); |
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); |
printf("done selection\n");fflush(stdout); |
printf("done \n");fflush(stdout); |
fprintf(ficlog,"done selection\n");fflush(ficlog); |
fprintf(ficlog,"done\n");fflush(ficlog); |
|
|
|
/*}*/ |
} /* End k selection */ |
} /* End k */ |
|
|
|
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); |
|
|
/*------- Variance of period (stable) prevalence------*/ |
/* variance-covariance of period prevalence*/ |
|
varprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, prlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); |
strcpy(fileresvpl,"VPL_"); |
|
strcat(fileresvpl,fileresu); |
|
if((ficresvpl=fopen(fileresvpl,"w"))==NULL) { |
|
printf("Problem with variance of period (stable) prevalence resultfile: %s\n", fileresvpl); |
|
exit(0); |
|
} |
|
printf("Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(stdout); |
|
fprintf(ficlog, "Computing Variance-covariance of period (stable) prevalence: file '%s' ...", fileresvpl);fflush(ficlog); |
|
|
|
/*for(cptcov=1,k=0;cptcov<=i1;cptcov++){ |
|
for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*/ |
|
|
|
for (k=1; k <= (int) pow(2,cptcoveff); k++){ |
|
fprintf(ficresvpl,"\n#****** "); |
|
printf("\n#****** "); |
|
fprintf(ficlog,"\n#****** "); |
|
for(j=1;j<=cptcoveff;j++) { |
|
fprintf(ficresvpl,"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)]); |
|
} |
|
fprintf(ficresvpl,"******\n"); |
|
printf("******\n"); |
|
fprintf(ficlog,"******\n"); |
|
|
|
varpl=matrix(1,nlstate,(int) bage, (int) fage); |
|
oldm=oldms;savm=savms; |
|
varprevlim(fileres, varpl, matcov, p, delti, nlstate, stepm, (int) bage, (int) fage, oldm, savm, prlim, ftolpl, &ncvyear, k, strstart); |
|
free_matrix(varpl,1,nlstate,(int) bage, (int)fage); |
|
/*}*/ |
|
} |
|
|
|
fclose(ficresvpl); |
|
printf("done variance-covariance of period prevalence\n");fflush(stdout); |
|
fprintf(ficlog,"done variance-covariance of period prevalence\n");fflush(ficlog); |
|
|
|
free_vector(weight,1,n); |
free_vector(weight,1,n); |
free_imatrix(Tvard,1,NCOVMAX,1,2); |
free_imatrix(Tvard,1,NCOVMAX,1,2); |
Line 10731 Please run with mle=-1 to get a correct
|
Line 12532 Please run with mle=-1 to get a correct
|
|
|
/*---------- End : free ----------------*/ |
/*---------- End : free ----------------*/ |
if (mobilav!=0 ||mobilavproj !=0) |
if (mobilav!=0 ||mobilavproj !=0) |
free_ma3x(mobaverages,1, AGESUP,1,nlstate+ndeath, 1,ncovcombmax); /* We need to have a squared matrix with prevalence of the dead! */ |
free_ma3x(mobaverages,AGEINF, AGESUP,1,nlstate+ndeath, 1,ncovcombmax); /* We need to have a squared matrix with prevalence of the dead! */ |
free_ma3x(probs,1,AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
free_ma3x(probs,AGEINF,AGESUP,1,nlstate+ndeath, 1,ncovcombmax); |
free_matrix(prlim,1,nlstate,1,nlstate); /*here or after loop ? */ |
free_matrix(prlim,1,nlstate,1,nlstate); /*here or after loop ? */ |
free_matrix(pmmij,1,nlstate+ndeath,1,nlstate+ndeath); |
free_matrix(pmmij,1,nlstate+ndeath,1,nlstate+ndeath); |
} /* mle==-3 arrives here for freeing */ |
} /* mle==-3 arrives here for freeing */ |
Line 10740 Please run with mle=-1 to get a correct
|
Line 12541 Please run with mle=-1 to get a correct
|
free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); |
free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); |
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); |
if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,1,n); |
free_ma3x(cotvar,1,maxwav,1,ntv,1,n); |
if(nqtv>=1)free_ma3x(cotqvar,1,maxwav,1,nqtv,1,n); |
free_matrix(coqvar,1,maxwav,1,n); |
if(nqv>=1)free_matrix(coqvar,1,nqv,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); |
free_matrix(hess,1,npar,1,npar); |
free_matrix(hess,1,npar,1,npar); |
/*free_vector(delti,1,npar);*/ |
/*free_vector(delti,1,npar);*/ |
free_ma3x(delti3,1,nlstate,1, nlstate+ndeath-1,1,ncovmodel); |
free_ma3x(delti3,1,nlstate,1, nlstate+ndeath-1,1,ncovmodel); |
free_matrix(agev,1,maxwav,1,imx); |
free_matrix(agev,1,maxwav,1,imx); |
|
free_ma3x(paramstart,1,nlstate,1, nlstate+ndeath-1,1,ncovmodel); |
free_ma3x(param,1,nlstate,1, nlstate+ndeath-1,1,ncovmodel); |
free_ma3x(param,1,nlstate,1, nlstate+ndeath-1,1,ncovmodel); |
|
|
free_ivector(ncodemax,1,NCOVMAX); |
free_ivector(ncodemax,1,NCOVMAX); |
free_ivector(ncodemaxwundef,1,NCOVMAX); |
free_ivector(ncodemaxwundef,1,NCOVMAX); |
free_ivector(Dummy,-1,NCOVMAX); |
free_ivector(Dummy,-1,NCOVMAX); |
free_ivector(Fixed,-1,NCOVMAX); |
free_ivector(Fixed,-1,NCOVMAX); |
|
free_ivector(DummyV,1,NCOVMAX); |
|
free_ivector(FixedV,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(TvarFind,1,NCOVMAX); |
|
free_ivector(TvarV,1,NCOVMAX); |
|
free_ivector(TvarVind,1,NCOVMAX); |
|
free_ivector(TvarA,1,NCOVMAX); |
|
free_ivector(TvarAind,1,NCOVMAX); |
free_ivector(TvarFQ,1,NCOVMAX); |
free_ivector(TvarFQ,1,NCOVMAX); |
free_ivector(TvarFQind,1,NCOVMAX); |
free_ivector(TvarFQind,1,NCOVMAX); |
free_ivector(TvarVD,1,NCOVMAX); |
free_ivector(TvarVD,1,NCOVMAX); |