|
|
| version 1.331, 2022/08/07 05:40:09 | version 1.337, 2022/09/02 14:26:02 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.337 2022/09/02 14:26:02 brouard | |
| Summary: version 0.99r35 | |
| * src/imach.c: Version 0.99r35 because it outputs same results with | |
| 1+age+V1+V1*age for females and 1+age for females only | |
| (education=1 noweight) | |
| Revision 1.336 2022/08/31 09:52:36 brouard | |
| *** empty log message *** | |
| Revision 1.335 2022/08/31 08:23:16 brouard | |
| Summary: improvements... | |
| Revision 1.334 2022/08/25 09:08:41 brouard | |
| Summary: In progress for quantitative | |
| Revision 1.333 2022/08/21 09:10:30 brouard | |
| * src/imach.c (Module): Version 0.99r33 A lot of changes in | |
| reassigning covariates: my first idea was that people will always | |
| use the first covariate V1 into the model but in fact they are | |
| producing data with many covariates and can use an equation model | |
| with some of the covariate; it means that in a model V2+V3 instead | |
| of codtabm(k,Tvaraff[j]) which calculates for combination k, for | |
| three covariates (V1, V2, V3) the value of Tvaraff[j], but in fact | |
| the equation model is restricted to two variables only (V2, V3) | |
| and the combination for V2 should be codtabm(k,1) instead of | |
| (codtabm(k,2), and the code should be | |
| codtabm(k,TnsdVar[Tvaraff[j]]. Many many changes have been | |
| made. All of these should be simplified once a day like we did in | |
| hpxij() for example by using precov[nres] which is computed in | |
| decoderesult for each nres of each resultline. Loop should be done | |
| on the equation model globally by distinguishing only product with | |
| age (which are changing with age) and no more on type of | |
| covariates, single dummies, single covariates. | |
| Revision 1.332 2022/08/21 09:06:25 brouard | |
| Summary: Version 0.99r33 | |
| * src/imach.c (Module): Version 0.99r33 A lot of changes in | |
| reassigning covariates: my first idea was that people will always | |
| use the first covariate V1 into the model but in fact they are | |
| producing data with many covariates and can use an equation model | |
| with some of the covariate; it means that in a model V2+V3 instead | |
| of codtabm(k,Tvaraff[j]) which calculates for combination k, for | |
| three covariates (V1, V2, V3) the value of Tvaraff[j], but in fact | |
| the equation model is restricted to two variables only (V2, V3) | |
| and the combination for V2 should be codtabm(k,1) instead of | |
| (codtabm(k,2), and the code should be | |
| codtabm(k,TnsdVar[Tvaraff[j]]. Many many changes have been | |
| made. All of these should be simplified once a day like we did in | |
| hpxij() for example by using precov[nres] which is computed in | |
| decoderesult for each nres of each resultline. Loop should be done | |
| on the equation model globally by distinguishing only product with | |
| age (which are changing with age) and no more on type of | |
| covariates, single dummies, single covariates. | |
| Revision 1.331 2022/08/07 05:40:09 brouard | Revision 1.331 2022/08/07 05:40:09 brouard |
| *** empty log message *** | *** empty log message *** |
| Line 1242 typedef struct { | Line 1298 typedef struct { |
| /* $State$ */ | /* $State$ */ |
| #include "version.h" | #include "version.h" |
| char version[]=__IMACH_VERSION__; | char version[]=__IMACH_VERSION__; |
| char copyright[]="July 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022"; | char copyright[]="September 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022"; |
| char fullversion[]="$Revision$ $Date$"; | char fullversion[]="$Revision$ $Date$"; |
| char strstart[80]; | char strstart[80]; |
| char optionfilext[10], optionfilefiname[FILENAMELENGTH]; | char optionfilext[10], optionfilefiname[FILENAMELENGTH]; |
| Line 1250 int erreur=0, nberr=0, nbwarn=0; /* Erro | Line 1306 int erreur=0, nberr=0, nbwarn=0; /* Erro |
| int nagesqr=0, nforce=0; /* nagesqr=1 if model is including age*age, number of forces */ | int nagesqr=0, nforce=0; /* nagesqr=1 if model is including age*age, number of forces */ |
| /* Number of covariates model (1)=V2+V1+ V3*age+V2*V4 */ | /* Number of covariates model (1)=V2+V1+ V3*age+V2*V4 */ |
| /* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ | /* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
| int cptcovn=0; /**< cptcovn decodemodel: number of covariates k of the models excluding age*products =6 and age*age */ | int cptcovn=0; /**< cptcovn decodemodel: number of covariates k of the models excluding age*products =6 and age*age but including products */ |
| int cptcovt=0; /**< cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ | int cptcovt=0; /**< cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ |
| int cptcovs=0; /**< cptcovs number of simple covariates in the model V2+V1 =2 (dummy or quantit or time varying) */ | int cptcovs=0; /**< cptcovs number of SIMPLE covariates in the model V2+V1 =2 (dummy or quantit or time varying) */ |
| int cptcovsnq=0; /**< cptcovsnq number of simple covariates in the model but non quantitative V2+V1 =2 */ | int cptcovsnq=0; /**< cptcovsnq number of SIMPLE covariates in the model but non quantitative V2+V1 =2 */ |
| 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 (2**cptcoveff combinations of dummies)(computed in tricode as cptcov) */ | int cptcoveff=0; /* Total number of single dummy covariates (fixed or time varying) to vary for printing results (2**cptcoveff combinations of dummies)(computed in tricode as cptcov) */ |
| int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ | int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ |
| int ncovv=0; /* Total number of effective (wave) varying covariates (dummy 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 ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
| Line 1267 int nqfveff=0; /**< nqfveff Number of Qu | Line 1323 int nqfveff=0; /**< nqfveff Number of Qu |
| 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 */ |
| int cptcov=0; /* Working variable */ | int cptcov=0; /* Working variable */ |
| int firstobs=1, lastobs=10; /* nobs = lastobs-firstobs+1 declared globally ;*/ | |
| int nobs=10; /* Number of observations in the data lastobs-firstobs */ | int nobs=10; /* Number of observations in the data lastobs-firstobs */ |
| int ncovcombmax=NCOVMAX; /* Maximum calculated number of covariate combination = pow(2, cptcoveff) */ | int ncovcombmax=NCOVMAX; /* Maximum calculated number of covariate combination = pow(2, cptcoveff) */ |
| int npar=NPARMAX; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ | int npar=NPARMAX; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ |
| Line 1406 int *ncodemaxwundef; /* ncodemax[j]= Nu | Line 1463 int *ncodemaxwundef; /* ncodemax[j]= Nu |
| double **agev,*moisnais, *annais, *moisdc, *andc,**mint, **anint; | double **agev,*moisnais, *annais, *moisdc, *andc,**mint, **anint; |
| double **pmmij, ***probs; /* Global pointer */ | double **pmmij, ***probs; /* Global pointer */ |
| double ***mobaverage, ***mobaverages; /* New global variable */ | double ***mobaverage, ***mobaverages; /* New global variable */ |
| double **precov; /* New global variable to store for each resultline, values of model covariates given by the resultlines (in order to speed up) */ | |
| double *ageexmed,*agecens; | double *ageexmed,*agecens; |
| double dateintmean=0; | double dateintmean=0; |
| double anprojd, mprojd, jprojd; /* For eventual projections */ | double anprojd, mprojd, jprojd; /* For eventual projections */ |
| Line 1436 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1494 int **nbcode, *Tvar; /**< model=V2 => Tv |
| * cotvar[wav][ntv+iv][i]= [3+(1 to nqtv)][i]=(V12) quanti | * cotvar[wav][ntv+iv][i]= [3+(1 to nqtv)][i]=(V12) quanti |
| * cotvar[wav][iv(1 to ntv)][i]= [1][1][i]=(V9) dummies at wav 1 | * cotvar[wav][iv(1 to ntv)][i]= [1][1][i]=(V9) dummies at wav 1 |
| * cotvar[wav][iv(1 to ntv)][i]= [1][2][i]=(V10) dummies at wav 1 | * cotvar[wav][iv(1 to ntv)][i]= [1][2][i]=(V10) dummies at wav 1 |
| * covar[k,i], value of kth fixed covariate dummy or quanti : | * covar[Vk,i], value of the Vkth fixed covariate dummy or quanti for individual i: |
| * covar[1][i]= (V1), covar[4][i]=(V4), covar[8][i]=(V8) | * covar[1][i]= (V1), covar[4][i]=(V4), covar[8][i]=(V8) |
| * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 + V9 + V9*age + V10 | * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 + V9 + V9*age + V10 |
| * k= 1 2 3 4 5 6 7 8 9 10 11 | * k= 1 2 3 4 5 6 7 8 9 10 11 |
| Line 1457 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1515 int **nbcode, *Tvar; /**< model=V2 => Tv |
| /*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ | /*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ |
| /* nsd 1 2 3 */ /* Counting single dummies covar fixed or tv */ | /* nsd 1 2 3 */ /* Counting single dummies covar fixed or tv */ |
| /*TnsdVar[Tvar] 1 2 3 */ | /*TnsdVar[Tvar] 1 2 3 */ |
| /*Tvaraff[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ | |
| /*TvarsD[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ | /*TvarsD[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ |
| /*TvarsDind[k] 2 3 9 */ /* position K of single dummy cova */ | /*TvarsDind[k] 2 3 9 */ /* position K of single dummy cova */ |
| /* nsq 1 2 */ /* Counting single quantit tv */ | /* nsq 1 2 */ /* Counting single quantit tv */ |
| Line 1483 int *TvarsQind; | Line 1542 int *TvarsQind; |
| #define MAXRESULTLINESPONE 10+1 | #define MAXRESULTLINESPONE 10+1 |
| int nresult=0; | int nresult=0; |
| int parameterline=0; /* # of the parameter (type) line */ | int parameterline=0; /* # of the parameter (type) line */ |
| int TKresult[MAXRESULTLINESPONE]; | int TKresult[MAXRESULTLINESPONE]; /* TKresult[nres]=k for each resultline nres give the corresponding combination of dummies */ |
| int resultmodel[MAXRESULTLINESPONE][NCOVMAX];/* resultmodel[k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ | int resultmodel[MAXRESULTLINESPONE][NCOVMAX];/* resultmodel[k1]=k3: k1th position in the model corresponds to the k3 position in the resultline */ |
| int Tresult[MAXRESULTLINESPONE][NCOVMAX];/* For dummy variable , value (output) */ | int modelresult[MAXRESULTLINESPONE][NCOVMAX];/* modelresult[k3]=k1: k1th position in the model corresponds to the k3 position in the resultline */ |
| int Tinvresult[MAXRESULTLINESPONE][NCOVMAX];/* For dummy variable , value (output) */ | int Tresult[MAXRESULTLINESPONE][NCOVMAX];/* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ |
| int TinvDoQresult[MAXRESULTLINESPONE][NCOVMAX];/* For dummy variable or quanti value (output) */ | int Tinvresult[MAXRESULTLINESPONE][NCOVMAX];/* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
| int Tvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For dummy variable , variable # (output) */ | double TinvDoQresult[MAXRESULTLINESPONE][NCOVMAX];/* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
| double Tqresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ | int Tvresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
| double Tqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ | |
| double Tqinvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ | double Tqinvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ |
| int Tvqresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , variable # (output) */ | int Tvqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ |
| /* ncovcol=1(Males=0 Females=1) nqv=1(raedyrs) ntv=2(withoutiadl=0 withiadl=1, witoutadl=0 withoutadl=1) nqtv=1(bmi) nlstate=3 ndeath=1 | /* ncovcol=1(Males=0 Females=1) nqv=1(raedyrs) ntv=2(withoutiadl=0 withiadl=1, witoutadl=0 withoutadl=1) nqtv=1(bmi) nlstate=3 ndeath=1 |
| # States 1=Coresidence, 2 Living alone, 3 Institution | # States 1=Coresidence, 2 Living alone, 3 Institution |
| Line 2458 void powell(double p[], double **xi, int | Line 2518 void powell(double p[], double **xi, int |
| /* (void) gettimeofday(&curr_time,&tzp); */ | /* (void) gettimeofday(&curr_time,&tzp); */ |
| rcurr_time = time(NULL); | rcurr_time = time(NULL); |
| curr_time = *localtime(&rcurr_time); | curr_time = *localtime(&rcurr_time); |
| printf("\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret, rcurr_time-rlast_time, rcurr_time-rstart_time);fflush(stdout); | /* printf("\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret, rcurr_time-rlast_time, rcurr_time-rstart_time);fflush(stdout); */ |
| fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); | /* fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); */ |
| printf("\nPowell iter=%d -2*LL=%.12f gain=%.3lg %ld sec. %ld sec.",*iter,*fret,fp-*fret, rcurr_time-rlast_time, rcurr_time-rstart_time);fflush(stdout); | |
| fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f gain=%.3lg %ld sec. %ld sec.",*iter,*fret,fp-*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); */ |
| fp=(*fret); /* From former iteration or initial value */ | fp=(*fret); /* From former iteration or initial value */ |
| for (i=1;i<=n;i++) { | for (i=1;i<=n;i++) { |
| Line 2787 void powell(double p[], double **xi, int | Line 2849 void powell(double p[], double **xi, int |
| /* 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, k1; |
| 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], **pmij(); /* **pmmij is a global variable feeded with oldms etc */ | double **out, cov[NCOVMAX+1], **pmij(); /* **pmmij is a global variable feeded with oldms etc */ |
| Line 2818 void powell(double p[], double **xi, int | Line 2880 void powell(double p[], double **xi, int |
| if(nagesqr==1){ | if(nagesqr==1){ |
| cov[3]= agefin*agefin; | cov[3]= agefin*agefin; |
| } | } |
| for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ | /* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
| /* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ | /* total number of covariates of the model nbocc(+)+1 = 8 excepting constant and age and age*age */ |
| cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])]; | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| /* cov[++k1]=nbcode[TvarsD[k]][codtabm(ij,k)]; */ | if(Typevar[k1]==1){ /* A product with age */ |
| /* 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)); */ | cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
| } | }else{ |
| for (k=1; k<=nsq;k++) { /* For single varying covariates only */ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| /* Here comes the value of quantitative after renumbering k with single quantitative covariates */ | } |
| cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; | }/* End of loop on model equation */ |
| /* cov[++k1]=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]); */ | /* Start of old code (replaced by a loop on position in the model equation */ |
| } | /* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only of the model *\/ */ |
| for (k=1; k<=cptcovage;k++){ /* For product with age */ | /* /\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\/ */ |
| if(Dummy[Tage[k]]==2){ /* dummy with age */ | /* /\* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])]; *\/ */ |
| cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; | /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TnsdVar[TvarsD[k]])]; */ |
| /* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; */ | /* /\* model = 1 +age + V1*V3 + age*V1 + V2 + V1 + age*V2 + V3 + V3*age + V1*V2 */ |
| } else if(Dummy[Tage[k]]==3){ /* quantitative with age */ | /* * k 1 2 3 4 5 6 7 8 */ |
| cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; | /* *cov[] 1 2 3 4 5 6 7 8 9 10 */ |
| /* cov[++k1]=Tqresult[nres][k]; */ | /* *TypeVar[k] 2 1 0 0 1 0 1 2 */ |
| } | /* *Dummy[k] 0 2 0 0 2 0 2 0 */ |
| /* 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]); */ | /* *Tvar[k] 4 1 2 1 2 3 3 5 */ |
| } | /* *nsd=3 (1) (2) (3) */ |
| for (k=1; k<=cptcovprod;k++){ /* For product without age */ | /* *TvarsD[nsd] [1]=2 1 3 */ |
| /* 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]); */ | /* *TnsdVar [2]=2 [1]=1 [3]=3 */ |
| if(Dummy[Tvard[k][1]]==0){ | /* *TvarsDind[nsd](=k) [1]=3 [2]=4 [3]=6 */ |
| if(Dummy[Tvard[k][2]]==0){ | /* *Tage[] [1]=1 [2]=2 [3]=3 */ |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; | /* *Tvard[] [1][1]=1 [2][1]=1 */ |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | /* * [1][2]=3 [2][2]=2 */ |
| }else{ | /* *Tprod[](=k) [1]=1 [2]=8 */ |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; | /* *TvarsDp(=Tvar) [1]=1 [2]=2 [3]=3 [4]=5 */ |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; */ | /* *TvarD (=k) [1]=1 [2]=3 [3]=4 [3]=6 [4]=6 */ |
| } | /* *TvarsDpType */ |
| }else{ | /* *si model= 1 + age + V3 + V2*age + V2 + V3*age */ |
| if(Dummy[Tvard[k][2]]==0){ | /* * nsd=1 (1) (2) */ |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; | /* *TvarsD[nsd] 3 2 */ |
| /* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; */ | /* *TnsdVar (3)=1 (2)=2 */ |
| }else{ | /* *TvarsDind[nsd](=k) [1]=1 [2]=3 */ |
| cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; | /* *Tage[] [1]=2 [2]= 3 */ |
| /* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ | /* *\/ */ |
| } | /* /\* cov[++k1]=nbcode[TvarsD[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)); *\/ */ |
| } | /* } */ |
| /* for (k=1; k<=nsq;k++) { /\* For single quantitative varying covariates only of the model *\/ */ | |
| /* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ | |
| /* /\* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline *\/ */ | |
| /* /\* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; *\/ */ | |
| /* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][resultmodel[nres][k1]] */ | |
| /* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ | |
| /* /\* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); *\/ */ | |
| /* } */ | |
| /* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ | |
| /* if(Dummy[Tage[k]]==2){ /\* dummy with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ | |
| /* /\* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ | |
| /* } else if(Dummy[Tage[k]]==3){ /\* quantitative with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; */ | |
| /* /\* cov[++k1]=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,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ | |
| /* /\* cov[++k1]=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,Tvard[k][1])] * Tqresult[nres][k]; */ | |
| /* /\* cov[++k1]=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,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; */ | |
| /* /\* cov[++k1]=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]]; */ | |
| /* /\* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ | |
| /* } */ | |
| /* } */ | |
| /* } /\* End product without age *\/ */ | |
| /* ENd of old code */ | |
| /*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 2951 void powell(double p[], double **xi, int | Line 3052 void powell(double p[], double **xi, int |
| /* 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, k1; |
| int first=0; | int first=0; |
| double *min, *max, *meandiff, maxmax,sumnew=0.; | double *min, *max, *meandiff, maxmax,sumnew=0.; |
| /* double **matprod2(); */ /* test */ | /* double **matprod2(); */ /* test */ |
| Line 2991 void powell(double p[], double **xi, int | Line 3092 void powell(double p[], double **xi, int |
| if(nagesqr==1){ | if(nagesqr==1){ |
| cov[3]= agefin*agefin;; | cov[3]= agefin*agefin;; |
| } | } |
| for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| /* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ | if(Typevar[k1]==1){ /* A product with age */ |
| cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])]; | cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
| /* 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)); */ | |
| } | |
| /* for (k=1; k<=cptcovn;k++) { */ | |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ | |
| /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ | |
| /* /\* printf("prevalim ij=%d k=%d Tvar[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, Tvar[k],nbcode[Tvar[k]][codtabm(ij,Tvar[k])],cov[2+k], ij, k, codtabm(ij,Tvar[k])]); *\/ */ | |
| /* } */ | |
| for (k=1; k<=nsq;k++) { /* For single varying covariates only */ | |
| /* Here comes the value of quantitative after renumbering k with single quantitative covariates */ | |
| cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; | |
| /* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ | |
| } | |
| /* for (k=1; k<=cptcovage;k++) 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]]]== 2){ /\* dummy with age *\/ ERROR ???*/ | |
| if(Dummy[Tage[k]]== 2){ /* dummy with age */ | |
| cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; | |
| } else if(Dummy[Tage[k]]== 3){ /* quantitative with age */ | |
| 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,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; | |
| }else{ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; | |
| } | |
| }else{ | }else{ |
| if(Dummy[Tvard[k][2]]==0){ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; | |
| }else{ | |
| cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; | |
| } | |
| } | } |
| } | }/* End of loop on model equation */ |
| /* Old code */ | |
| /* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ | |
| /* /\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\/ */ | |
| /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[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)); *\/ */ | |
| /* } */ | |
| /* /\* for (k=1; k<=cptcovn;k++) { *\/ */ | |
| /* /\* /\\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\\/ *\/ */ | |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; *\/ */ | |
| /* /\* /\\* printf("prevalim ij=%d k=%d Tvar[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, Tvar[k],nbcode[Tvar[k]][codtabm(ij,Tvar[k])],cov[2+k], ij, k, codtabm(ij,Tvar[k])]); *\\/ *\/ */ | |
| /* /\* } *\/ */ | |
| /* for (k=1; k<=nsq;k++) { /\* For single varying covariates only *\/ */ | |
| /* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ | |
| /* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; */ | |
| /* /\* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); *\/ */ | |
| /* } */ | |
| /* /\* for (k=1; k<=cptcovage;k++) 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]]]== 2){ /\\* dummy with age *\\/ ERROR ???*\/ */ | |
| /* if(Dummy[Tage[k]]== 2){ /\* dummy with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ | |
| /* } else if(Dummy[Tage[k]]== 3){ /\* quantitative with age *\/ */ | |
| /* 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,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ | |
| /* }else{ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; */ | |
| /* } */ | |
| /* }else{ */ | |
| /* if(Dummy[Tvard[k][2]]==0){ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * 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 3410 double **matprod2(double **out, double * | Line 3521 double **matprod2(double **out, double * |
| double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij, int nres ) | 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 | /* Already optimized with precov. |
| Computes the transition matrix starting at age 'age' and dummies values in each resultline (loop on ij to find the corresponding combination) to 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 3448 double ***hpxij(double ***po, int nhstep | Line 3560 double ***hpxij(double ***po, int nhstep |
| /* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ | /* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
| /* total number of covariates of the model nbocc(+)+1 = 8 excepting constant and age and age*age */ | /* total number of covariates of the model nbocc(+)+1 = 8 excepting constant and age and age*age */ |
| for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Single dummy */ | if(Typevar[k1]==1){ /* A product with age */ |
| /* V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ | cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
| /* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ | }else{ |
| /* /\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\/ */ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| /* codtabm(ij,k) (1 & (ij-1) >> (k-1))+1 */ | } |
| /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | }/* End of loop on model equation */ |
| /* k 1 2 3 4 5 6 7 8 9 */ | /* Old code */ |
| /*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ | /* if( Dummy[k1]==0 && Typevar[k1]==0 ){ /\* Single dummy *\/ */ |
| /* nsd 1 2 3 */ /* Counting single dummies covar fixed or tv */ | /* /\* V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) *\/ */ |
| /*TvarsD[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ | /* /\* for (k=1; k<=nsd;k++) { /\\* For single dummy covariates only *\\/ *\/ */ |
| /*TvarsDind[k] 2 3 9 */ /* position K of single dummy cova */ | /* /\* /\\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\\/ *\/ */ |
| /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)];or [codtabm(ij,TnsdVar[TvarsD[k]] */ | /* /\* codtabm(ij,k) (1 & (ij-1) >> (k-1))+1 *\/ */ |
| cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; | /* /\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
| /* printf("hpxij Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,TnsdVar[TvarsD[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,TnsdVar[TvarsD[k]])],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,TnsdVar[TvarsD[k]])); */ | /* /\* k 1 2 3 4 5 6 7 8 9 *\/ */ |
| printf("hpxij Dummy combi=%d k1=%d Tvar[%d]=V%d cov[2+%d+%d]=%lf resultmodel[nres][%d]=%d nres/nresult=%d/%d \n",ij,k1,k1, Tvar[k1],nagesqr,k1,cov[2+nagesqr+k1],k1,resultmodel[nres][k1],nres,nresult); | /* /\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\/ */ |
| }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Single quantitative variables */ | /* /\* nsd 1 2 3 *\/ /\* Counting single dummies covar fixed or tv *\/ */ |
| /* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ | /* /\*TvarsD[nsd] 4 3 1 *\/ /\* ID of single dummy cova fixed or timevary*\/ */ |
| cov[2+nagesqr+k1]=Tqresult[nres][resultmodel[nres][k1]]; | /* /\*TvarsDind[k] 2 3 9 *\/ /\* position K of single dummy cova *\/ */ |
| /* for (k=1; k<=nsq;k++) { /\* For single varying covariates only *\/ */ | /* /\* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)];or [codtabm(ij,TnsdVar[TvarsD[k]] *\/ */ |
| /* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ | /* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; */ |
| /* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; */ | /* /\* printf("hpxij Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,TnsdVar[TvarsD[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,TnsdVar[TvarsD[k]])],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,TnsdVar[TvarsD[k]])); *\/ */ |
| printf("hPxij Quantitative k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); | /* printf("hpxij Dummy combi=%d k1=%d Tvar[%d]=V%d cov[2+%d+%d]=%lf resultmodel[nres][%d]=%d nres/nresult=%d/%d \n",ij,k1,k1, Tvar[k1],nagesqr,k1,cov[2+nagesqr+k1],k1,resultmodel[nres][k1],nres,nresult); */ |
| }else if( Dummy[k1]==2 ){ /* For dummy with age product */ | /* printf("hpxij new Dummy precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
| /* Tvar[k1] Variable in the age product age*V1 is 1 */ | /* }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /\* Single quantitative variables *\/ */ |
| /* [Tinvresult[nres][V1] is its value in the resultline nres */ | /* /\* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline *\/ */ |
| cov[2+nagesqr+k1]=Tinvresult[nres][Tvar[k1]]; | /* cov[2+nagesqr+k1]=Tqresult[nres][resultmodel[nres][k1]]; */ |
| printf("DhPxij Dummy with age k1=%d Tvar[%d]=%d Tinvresult[nres][%d]=%d,cov[2+%d+%d]=%.3f\n",k1,k1,Tvar[k1],Tinvresult[nres][Tvar[k1]],nagesqr,k1,cov[2+nagesqr+k1]); | /* /\* for (k=1; k<=nsq;k++) { /\\* For single varying covariates only *\\/ *\/ */ |
| /* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; */ | /* /\* /\\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\\/ *\/ */ |
| /* for (k=1; k<=cptcovage;k++){ /\* For product with age V1+V1*age +V4 +age*V3 *\/ */ | /* /\* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; *\/ */ |
| /* 1+2 Tage[1]=2 TVar[2]=1 Dummy[2]=2, Tage[2]=4 TVar[4]=3 Dummy[4]=3 quant*/ | /* printf("hPxij Quantitative k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); */ |
| /* */ | /* printf("hpxij new Quanti precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
| /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | /* }else if( Dummy[k1]==2 ){ /\* For dummy with age product *\/ */ |
| /* k 1 2 3 4 5 6 7 8 9 */ | /* /\* Tvar[k1] Variable in the age product age*V1 is 1 *\/ */ |
| /*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ | /* /\* [Tinvresult[nres][V1] is its value in the resultline nres *\/ */ |
| /*cptcovage=2 1 2 */ | /* cov[2+nagesqr+k1]=TinvDoQresult[nres][Tvar[k1]]*cov[2]; */ |
| /*Tage[k]= 5 8 */ | /* printf("DhPxij Dummy with age k1=%d Tvar[%d]=%d TinvDoQresult[nres=%d][%d]=%.f age=%.2f,cov[2+%d+%d]=%.3f\n",k1,k1,Tvar[k1],nres,TinvDoQresult[nres][Tvar[k1]],cov[2],nagesqr,k1,cov[2+nagesqr+k1]); */ |
| }else if( Dummy[k1]==3 ){ /* For quant with age product */ | /* printf("hpxij new Dummy with age product precov[nres=%d][k1=%d]=%.4f * age=%.2f\n", nres, k1, precov[nres][k1], cov[2]); */ |
| cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; | |
| printf("QhPxij Quant with age k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); | /* /\* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; *\/ */ |
| /* if(Dummy[Tage[k]]== 2){ /\* dummy with age *\/ */ | /* /\* for (k=1; k<=cptcovage;k++){ /\\* For product with age V1+V1*age +V4 +age*V3 *\\/ *\/ */ |
| /* /\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\* dummy with age *\\/ *\/ */ | /* /\* 1+2 Tage[1]=2 TVar[2]=1 Dummy[2]=2, Tage[2]=4 TVar[4]=3 Dummy[4]=3 quant*\/ */ |
| /* /\* 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,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; */ | |
| /* printf("hPxij Age combi=%d k=%d cptcovage=%d Tage[%d]=%d Tvar[Tage[%d]]=V%d nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]]])]=%d nres=%d\n",ij,k,cptcovage,k,Tage[k],k,Tvar[Tage[k]], nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]])],nres); */ | |
| /* } else if(Dummy[Tage[k]]== 3){ /\* quantitative with age *\/ */ | |
| /* 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]); */ | |
| }else if(Typevar[k1]==2 ){ /* For product (not with age) */ | |
| /* for (k=1; k<=cptcovprod;k++){ /\* For product without age *\/ */ | |
| /* /\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ | /* /\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
| /* /\* k 1 2 3 4 5 6 7 8 9 *\/ */ | /* /\* k 1 2 3 4 5 6 7 8 9 *\/ */ |
| /* /\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\/ */ | /* /\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\/ */ |
| /* /\*cptcovprod=1 1 2 *\/ */ | /* /\*cptcovage=2 1 2 *\/ */ |
| /* /\*Tprod[]= 4 7 *\/ */ | /* /\*Tage[k]= 5 8 *\/ */ |
| /* /\*Tvard[][1] 4 1 *\/ */ | /* }else if( Dummy[k1]==3 ){ /\* For quant with age product *\/ */ |
| /* /\*Tvard[][2] 3 2 *\/ */ | /* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; */ |
| /* printf("QhPxij Quant with age k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); */ | |
| /* printf("hpxij new Quanti with age product precov[nres=%d][k1=%d] * age=%.2f\n", nres, k1, precov[nres][k1], cov[2]); */ | |
| /* /\* if(Dummy[Tage[k]]== 2){ /\\* dummy with age *\\/ *\/ */ | |
| /* /\* /\\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\\* dummy with age *\\\/ *\\/ *\/ */ | |
| /* /\* /\\* 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,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; *\\/ *\/ */ | |
| /* /\* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; *\/ */ | |
| /* /\* printf("hPxij Age combi=%d k=%d cptcovage=%d Tage[%d]=%d Tvar[Tage[%d]]=V%d nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]]])]=%d nres=%d\n",ij,k,cptcovage,k,Tage[k],k,Tvar[Tage[k]], nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]])],nres); *\/ */ | |
| /* /\* } else if(Dummy[Tage[k]]== 3){ /\\* quantitative with age *\\/ *\/ */ | |
| /* /\* 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]); *\/ */ | |
| /* }else if(Typevar[k1]==2 ){ /\* For product (not with age) *\/ */ | |
| /* /\* for (k=1; k<=cptcovprod;k++){ /\\* For product without age *\\/ *\/ */ | |
| /* /\* /\\* 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 *\\/ *\/ */ | |
| /* /\* /\\*cptcovprod=1 1 2 *\\/ *\/ */ | |
| /* /\* /\\*Tprod[]= 4 7 *\\/ *\/ */ | |
| /* /\* /\\*Tvard[][1] 4 1 *\\/ *\/ */ | |
| /* /\* /\\*Tvard[][2] 3 2 *\\/ *\/ */ | |
| /* printf("hPxij Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]=%d nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]=%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2],nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])],nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]); */ | /* /\* printf("hPxij Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]=%d nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]=%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2],nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])],nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]); *\/ */ |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
| cov[2+nagesqr+k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; | /* cov[2+nagesqr+k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; */ |
| printf("hPxij Prod ij=%d k1=%d cov[2+%d+%d]=%.5f Tvard[%d][1]=V%d * Tvard[%d][2]=V%d ; TinvDoQresult[nres][Tvardk[k1][1]]=%.4f * TinvDoQresult[nres][Tvardk[k1][1]]=%.4f\n",ij,k1,nagesqr,k1,cov[2+nagesqr+k1],k1,Tvard[k1][1], k1,Tvard[k1][2], TinvDoQresult[nres][Tvardk[k1][1]], TinvDoQresult[nres][Tvardk[k1][2]]); | /* printf("hPxij Prod ij=%d k1=%d cov[2+%d+%d]=%.5f Tvard[%d][1]=V%d * Tvard[%d][2]=V%d ; TinvDoQresult[nres][Tvardk[k1][1]]=%.4f * TinvDoQresult[nres][Tvardk[k1][1]]=%.4f\n",ij,k1,nagesqr,k1,cov[2+nagesqr+k1],k1,Tvardk[k1][1], k1,Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][1]], TinvDoQresult[nres][Tvardk[k1][2]]); */ |
| /* if(Dummy[Tvardk[k1][1]]==0){ */ | /* printf("hpxij new Product no age product precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
| /* if(Dummy[Tvardk[k1][2]]==0){ /\* Product of dummies *\/ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | /* /\* if(Dummy[Tvardk[k1][1]]==0){ *\/ */ |
| /* cov[2+nagesqr+k1]=Tinvresult[nres][Tvardk[k1][1]] * Tinvresult[nres][Tvardk[k1][2]]; */ | /* /\* if(Dummy[Tvardk[k1][2]]==0){ /\\* Product of dummies *\\/ *\/ */ |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])]; */ | /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
| /* }else{ /\* Product of dummy by quantitative *\/ */ | /* /\* cov[2+nagesqr+k1]=Tinvresult[nres][Tvardk[k1][1]] * Tinvresult[nres][Tvardk[k1][2]]; *\/ */ |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * Tqresult[nres][k]; */ | /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])]; *\/ */ |
| /* cov[2+nagesqr+k1]=Tresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]]; */ | /* /\* }else{ /\\* Product of dummy by quantitative *\\/ *\/ */ |
| /* } */ | /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * Tqresult[nres][k]; *\/ */ |
| /* }else{ /\* Product of quantitative by...*\/ */ | /* /\* cov[2+nagesqr+k1]=Tresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]]; *\/ */ |
| /* if(Dummy[Tvard[k][2]]==0){ /\* quant by dummy *\/ */ | /* /\* } *\/ */ |
| /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][Tvard[k][1]]; *\/ */ | /* /\* }else{ /\\* Product of quantitative by...*\\/ *\/ */ |
| /* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; */ | /* /\* if(Dummy[Tvard[k][2]]==0){ /\\* quant by dummy *\\/ *\/ */ |
| /* }else{ /\* Product of two quant *\/ */ | /* /\* /\\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][Tvard[k][1]]; *\\/ *\/ */ |
| /* /\* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ | /* /\* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; *\/ */ |
| /* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; */ | /* /\* }else{ /\\* Product of two quant *\\/ *\/ */ |
| /* } */ | /* /\* /\\* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\\/ *\/ */ |
| /* }/\*end of products quantitative *\/ */ | /* /\* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; *\/ */ |
| }/*end of products */ | /* /\* } *\/ */ |
| } /* End of loop on model equation */ | /* /\* }/\\*end of products quantitative *\\/ *\/ */ |
| /* }/\*end of products *\/ */ | |
| /* } /\* End of loop on model equation *\/ */ | |
| /* 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)]; */ |
| /* for (k=1; k<=cptcovage;k++) /\* Should start at cptcovn+1 *\/ */ | /* for (k=1; k<=cptcovage;k++) /\* Should start at cptcovn+1 *\/ */ |
| Line 3576 double ***hpxij(double ***po, int nhstep | Line 3702 double ***hpxij(double ***po, int nhstep |
| /* 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, int nres ) | double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, int ij, int nres ) |
| { | { |
| /* For a combination of dummy covariate ij, computes the transition matrix starting at age 'age' over | /* For dummy covariates given in each resultline (for historical, computes the corresponding combination 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 3588 double ***hbxij(double ***po, int nhstep | Line 3715 double ***hbxij(double ***po, int nhstep |
| The addresss of po (p3mat allocated to the dimension of nhstepm) should be stored for output | 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, k1; |
| double **out, cov[NCOVMAX+1], **bmij(); | double **out, cov[NCOVMAX+1], **bmij(); |
| double **newm, ***newmm; | double **newm, ***newmm; |
| double agexact; | double agexact; |
| Line 3614 double ***hbxij(double ***po, int nhstep | Line 3741 double ***hbxij(double ***po, int nhstep |
| /* Debug */ | /* Debug */ |
| /* printf("hBxij age=%lf, agexact=%lf\n", age, agexact); */ | /* printf("hBxij age=%lf, agexact=%lf\n", age, agexact); */ |
| cov[2]=agexact; | cov[2]=agexact; |
| if(nagesqr==1) | if(nagesqr==1){ |
| cov[3]= agexact*agexact; | cov[3]= agexact*agexact; |
| for (k=1; k<=nsd;k++){ /* For single dummy covariates only *//* cptcovn error */ | } |
| /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ | /** New code */ |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])];/* Bug valgrind */ | if(Typevar[k1]==1){ /* A product with age */ |
| /* 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+k1]=precov[nres][k1]*cov[2]; |
| } | |
| 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("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 *//* For product with age */ | |
| /* if(Dummy[Tvar[Tage[k]]]== 2){ /\* dummy with age error!!!*\/ */ | |
| if(Dummy[Tage[k]]== 2){ /* dummy with age */ | |
| cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; | |
| } else if(Dummy[Tage[k]]== 3){ /* quantitative with age */ | |
| 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,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,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,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]; | |
| }else{ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; | |
| } | |
| }else{ | }else{ |
| if(Dummy[Tvard[k][2]]==0){ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; | |
| }else{ | |
| cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; | |
| } | |
| } | } |
| } | }/* End of loop on model equation */ |
| /*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ | /** End of new code */ |
| /*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ | /** This was old code */ |
| /* for (k=1; k<=nsd;k++){ /\* For single dummy covariates only *\//\* cptcovn error *\/ */ | |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; *\/ */ | |
| /* /\* /\\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\\/ *\/ */ | |
| /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])];/\* Bug valgrind *\/ */ | |
| /* /\* 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)); *\/ */ | |
| /* } */ | |
| /* 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("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 *\//\* For product with age *\/ */ | |
| /* /\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\* dummy with age error!!!*\\/ *\/ */ | |
| /* if(Dummy[Tage[k]]== 2){ /\* dummy with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ | |
| /* } else if(Dummy[Tage[k]]== 3){ /\* quantitative with age *\/ */ | |
| /* 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,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,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,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]; */ | |
| /* }else{ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; */ | |
| /* } */ | |
| /* }else{ */ | |
| /* if(Dummy[Tvard[k][2]]==0){ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; */ | |
| /* }else{ */ | |
| /* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ | |
| /* } */ | |
| /* } */ | |
| /* } */ | |
| /* /\*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*\/ */ | |
| /* /\*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*\/ */ | |
| /** End of old code */ | |
| /* Careful transposed matrix */ | /* Careful transposed matrix */ |
| /* age is in cov[2], prevacurrent at beginning of transition. */ | /* 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),\ */ |
| Line 3714 double ***hbxij(double ***po, int nhstep | Line 3853 double ***hbxij(double ***po, int nhstep |
| /*************** log-likelihood *************/ | /*************** log-likelihood *************/ |
| double func( double *x) | double func( double *x) |
| { | { |
| int i, ii, j, k, mi, d, kk; | int i, ii, j, k, mi, d, kk, kf=0; |
| int ioffset=0; | int ioffset=0; |
| double l, ll[NLSTATEMAX+1], cov[NCOVMAX+1]; | double l, ll[NLSTATEMAX+1], cov[NCOVMAX+1]; |
| double **out; | double **out; |
| double lli; /* Individual log likelihood */ | double lli; /* Individual log likelihood */ |
| int s1, s2; | int s1, s2; |
| int iv=0, iqv=0, itv=0, iqtv=0 ; /* Index of varying covariate, fixed quantitative cov, time varying covariate, quantitative time varying covariate */ | int iv=0, iqv=0, itv=0, iqtv=0 ; /* Index of varying covariate, fixed quantitative cov, time varying covariate, quantitative time varying covariate */ |
| double bbh, survp; | double bbh, survp; |
| long ipmx; | |
| double agexact; | double agexact; |
| double agebegin, ageend; | |
| /*extern weight */ | /*extern weight */ |
| /* We are differentiating ll according to initial status */ | /* We are differentiating ll according to initial status */ |
| /* for (i=1;i<=npar;i++) printf("%f ", x[i]);*/ | /* for (i=1;i<=npar;i++) printf("%f ", x[i]);*/ |
| Line 3746 double func( double *x) | Line 3886 double func( double *x) |
| */ | */ |
| ioffset=2+nagesqr ; | ioffset=2+nagesqr ; |
| /* Fixed */ | /* Fixed */ |
| for (k=1; k<=ncovf;k++){ /* For each fixed covariate dummu or quant or prod */ | for (kf=1; kf<=ncovf;kf++){ /* For each fixed covariate dummu or quant or prod */ |
| /* # V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi */ | /* # V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi */ |
| /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| /* TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 ID of fixed covariates or product V2, V1*V2, V1 */ | /* TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 ID of fixed covariates or product V2, V1*V2, V1 */ |
| /* TvarFind; TvarFind[1]=6, TvarFind[2]=7, TvarFind[3]=9 *//* Inverse V2(6) is first fixed (single or prod) */ | /* TvarFind; TvarFind[1]=6, TvarFind[2]=7, TvarFind[3]=9 *//* Inverse V2(6) is first fixed (single or prod) */ |
| 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 (TvarFind[1]=6)*/ | cov[ioffset+TvarFind[kf]]=covar[Tvar[TvarFind[kf]]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (TvarFind[1]=6)*/ |
| /* V1*V2 (7) TvarFind[2]=7, TvarFind[3]=9 */ | /* V1*V2 (7) TvarFind[2]=7, TvarFind[3]=9 */ |
| } | } |
| /* 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] |
| Line 3766 double func( double *x) | Line 3906 double func( double *x) |
| But if the variable is not in the model TTvar[iv] is the real variable effective in the model: | But if the variable is not in the model TTvar[iv] is the real variable effective in the model: |
| 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++){ /* Varying with waves */ |
| /* Wave varying (but not age varying) */ | |
| for(k=1; k <= ncovv ; k++){ /* Varying covariates in the model (single and product but no age )"V5+V4+V3+V4*V3+V5*age+V1*age+V1" +TvarVind 1,2,3,4(V4*V3) Tvar[1]@7{5, 4, 3, 6, 5, 1, 1 ; 6 because the created covar is after V5 and is 6, minus 1+1, 3,2,1,4 positions in cotvar*/ | for(k=1; k <= ncovv ; k++){ /* Varying covariates in the model (single and product but no age )"V5+V4+V3+V4*V3+V5*age+V1*age+V1" +TvarVind 1,2,3,4(V4*V3) Tvar[1]@7{5, 4, 3, 6, 5, 1, 1 ; 6 because the created covar is after V5 and is 6, minus 1+1, 3,2,1,4 positions in cotvar*/ |
| /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? */ | /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? */ |
| cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; | cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
| Line 3776 double func( double *x) | Line 3917 double func( double *x) |
| 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 */ | |
| 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++){ | for(d=0; d<dh[mi][i]; d++){ |
| newm=savm; | newm=savm; |
| agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; | agexact=agev[mw[mi][i]][i]+d*stepm/YEARM; |
| Line 3866 double func( double *x) | Line 4010 double func( double *x) |
| /*survp += out[s1][j]; */ | /*survp += out[s1][j]; */ |
| lli= log(survp); | lli= log(survp); |
| } | } |
| else if (s2==-4) { | /* else if (s2==-4) { */ |
| for (j=3,survp=0. ; j<=nlstate; j++) | /* for (j=3,survp=0. ; j<=nlstate; j++) */ |
| survp += (1.+bbh)*out[s1][j]- bbh*savm[s1][j]; | /* survp += (1.+bbh)*out[s1][j]- bbh*savm[s1][j]; */ |
| lli= log(survp); | /* lli= log(survp); */ |
| } | /* } */ |
| else if (s2==-5) { | /* else if (s2==-5) { */ |
| for (j=1,survp=0. ; j<=2; j++) | /* for (j=1,survp=0. ; j<=2; j++) */ |
| survp += (1.+bbh)*out[s1][j]- bbh*savm[s1][j]; | /* survp += (1.+bbh)*out[s1][j]- bbh*savm[s1][j]; */ |
| lli= log(survp); | /* lli= log(survp); */ |
| } | /* } */ |
| else{ | else{ |
| lli= log((1.+bbh)*out[s1][s2]- bbh*savm[s1][s2]); /* linear interpolation */ | lli= log((1.+bbh)*out[s1][s2]- bbh*savm[s1][s2]); /* linear interpolation */ |
| /* lli= (savm[s1][s2]>(double)1.e-8 ?log((1.+bbh)*out[s1][s2]- bbh*(savm[s1][s2])):log((1.+bbh)*out[s1][s2]));*/ /* linear interpolation */ | /* lli= (savm[s1][s2]>(double)1.e-8 ?log((1.+bbh)*out[s1][s2]- bbh*(savm[s1][s2])):log((1.+bbh)*out[s1][s2]));*/ /* linear interpolation */ |
| Line 4050 double func( double *x) | Line 4194 double func( double *x) |
| double funcone( double *x) | double funcone( double *x) |
| { | { |
| /* Same as func but slower because of a lot of printf and if */ | /* Same as func but slower because of a lot of printf and if */ |
| int i, ii, j, k, mi, d, kk; | int i, ii, j, k, mi, d, kk, kf=0; |
| int ioffset=0; | int ioffset=0; |
| double l, ll[NLSTATEMAX+1], cov[NCOVMAX+1]; | double l, ll[NLSTATEMAX+1], cov[NCOVMAX+1]; |
| double **out; | double **out; |
| Line 4073 double funcone( double *x) | Line 4217 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++){ |
| /* Computes the values of the ncovmodel covariates of the model | |
| depending if the covariates are fixed or varying (age dependent) and stores them in cov[] | |
| 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. | |
| */ | |
| /* ioffset=2+nagesqr+cptcovage; */ | /* ioffset=2+nagesqr+cptcovage; */ |
| ioffset=2+nagesqr; | ioffset=2+nagesqr; |
| /* Fixed */ | /* 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 *\/ */ |
| for (k=1; k<=ncovf;k++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */ | for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */ |
| 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)*/ | cov[ioffset+TvarFind[kf]]=covar[Tvar[TvarFind[kf]]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (k=6)*/ |
| /* cov[ioffset+TvarFind[1]]=covar[Tvar[TvarFind[1]]][i]; */ | /* cov[ioffset+TvarFind[1]]=covar[Tvar[TvarFind[1]]][i]; */ |
| /* cov[2+6]=covar[Tvar[6]][i]; */ | /* cov[2+6]=covar[Tvar[6]][i]; */ |
| /* cov[2+6]=covar[2][i]; V2 */ | /* cov[2+6]=covar[2][i]; V2 */ |
| Line 4090 double funcone( double *x) | Line 4239 double funcone( double *x) |
| /* cov[2+9]=covar[Tvar[9]][i]; */ | /* cov[2+9]=covar[Tvar[9]][i]; */ |
| /* cov[2+9]=covar[1][i]; V1 */ | /* cov[2+9]=covar[1][i]; V1 */ |
| } | } |
| /* In model V2+V1*V4+age*V3+V3*V2 Tvar[1] is V2, Tvar[2=V1*V4] | |
| is 5, Tvar[3=age*V3] should not be computed because of age Tvar[4=V3*V2]=6 | |
| has been calculated etc */ | |
| /* For an individual i, wav[i] gives the number of effective waves */ | |
| /* We compute the contribution to Likelihood of each effective transition | |
| mw[mi][i] is real wave of the mi th effectve wave */ | |
| /* Then statuses are computed at each begin and end of an effective wave s1=s[ mw[mi][i] ][i]; | |
| s2=s[mw[mi+1][i]][i]; | |
| And the iv th varying covariate is the cotvar[mw[mi+1][i]][iv][i] | |
| But if the variable is not in the model TTvar[iv] is the real variable effective in the model: | |
| meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] | |
| */ | |
| /* This part may be useless now because everythin should be in covar */ | |
| /* for (k=1; k<=nqfveff;k++){ /\* Simple and product fixed Quantitative covariates without age* products *\/ */ | /* 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?)*\/ */ | /* 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?)*\/ */ |
| /* } */ | /* } */ |
| Line 4147 double funcone( double *x) | Line 4309 double funcone( double *x) |
| savm=oldm; | savm=oldm; |
| oldm=newm; | oldm=newm; |
| } /* end mult */ | } /* end mult */ |
| /*lli=log(out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]]);*/ /* Original formula */ | |
| /* But now since version 0.9 we anticipate for bias at large stepm. | |
| * If stepm is larger than one month (smallest stepm) and if the exact delay | |
| * (in months) between two waves is not a multiple of stepm, we rounded to | |
| * the nearest (and in case of equal distance, to the lowest) interval but now | |
| * we keep into memory the bias bh[mi][i] and also the previous matrix product | |
| * (i.e to dh[mi][i]-1) saved in 'savm'. Then we inter(extra)polate the | |
| * probability in order to take into account the bias as a fraction of the way | |
| * from savm to out if bh is negative or even beyond if bh is positive. bh varies | |
| * -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 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]; |
| /* if(s2==-1){ */ | /* if(s2==-1){ */ |
| Line 4179 double funcone( double *x) | Line 4353 double funcone( double *x) |
| ipmx +=1; | ipmx +=1; |
| sw += weight[i]; | sw += weight[i]; |
| 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("Funcone 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],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */ |
| if(globpr){ | if(globpr){ |
| fprintf(ficresilk,"%09ld %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,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); | 2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); |
| /* printf("%09ld %6.1f %6.1f %6d %2d %2d %2d %2d %3d %15.6f %8.4f %8.3f\ */ | |
| /* %11.6f %11.6f %11.6f ", \ */ | |
| /* num[i], agebegin, ageend, i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],weight[i]*gipmx/gsw, */ | |
| /* 2*weight[i]*lli,(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */ | |
| for(k=1,llt=0.,l=0.; k<=nlstate; k++){ | 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); |
| /* printf(" %10.6f",-ll[k]*gipmx/gsw); */ | |
| } | } |
| fprintf(ficresilk," %10.6f\n", -llt); | fprintf(ficresilk," %10.6f\n", -llt); |
| /* printf(" %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 4790 void freqsummary(char fileres[], double | Line 4970 void freqsummary(char fileres[], double |
| 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 as well as proposing some starting values */ | { /* Some frequencies as well as proposing some starting values */ |
| /* Frequencies of any combination of dummy covariate used in the model equation */ | |
| int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0, s1=1, s2=1; | 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 */ |
| Line 4858 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5038 Title=%s <br>Datafile=%s Firstpass=%d La |
| 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 simple dummy covariates used in the model */ |
| /* j=cptcovn; /\* Only dummy covariates of the model *\/ */ | /* j=cptcovn; /\* Only dummy covariates of the model *\/ */ |
| if (cptcovn<1) {j=1;ncodemax[1]=1;} | if (cptcovn<1) {j=1;ncodemax[1]=1;} |
| Line 4879 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5059 Title=%s <br>Datafile=%s Firstpass=%d La |
| /* if a constant only model, one pass to compute frequency tables and to write it on ficresp */ | /* if a constant only model, one pass to compute frequency tables and to write it on ficresp */ |
| /* Loop on nj=1 or 2 if dummy covariates j!=0 | /* Loop on nj=1 or 2 if dummy covariates j!=0 |
| * Loop on j1(1 to 2**cptcovn) covariate combination | * Loop on j1(1 to 2**cptcoveff) covariate combination |
| * freq[s1][s2][iage] =0. | * freq[s1][s2][iage] =0. |
| * Loop on iind | * Loop on iind |
| * ++freq[s1][s2][iage] weighted | * ++freq[s1][s2][iage] weighted |
| Line 4904 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5084 Title=%s <br>Datafile=%s Firstpass=%d La |
| if(nj==1) | if(nj==1) |
| j=0; /* First pass for the constant */ | j=0; /* First pass for the constant */ |
| else{ | else{ |
| j=cptcovs; /* Other passes for the covariate values */ | j=cptcoveff; /* Other passes for the covariate values number of simple covariates in the model V2+V1 =2 (simple dummy fixed or time varying) */ |
| } | } |
| first=1; | first=1; |
| 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 */ | for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on all dummy covariates combination of the model, ie excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */ |
| posproptt=0.; | posproptt=0.; |
| /*printf("cptcovn=%d Tvaraff=%d", cptcovn,Tvaraff[1]); | /*printf("cptcovn=%d Tvaraff=%d", cptcovn,Tvaraff[1]); |
| scanf("%d", i);*/ | scanf("%d", i);*/ |
| Line 4940 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5120 Title=%s <br>Datafile=%s Firstpass=%d La |
| bool=1; | bool=1; |
| if(j !=0){ | if(j !=0){ |
| if(anyvaryingduminmodel==0){ /* If All fixed covariates */ | if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
| if (cptcovn >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ | if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
| for (z1=1; z1<=cptcovn; z1++) { /* loops on covariates in the model */ | for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */ |
| /* if(Tvaraff[z1] ==-20){ */ | /* if(Tvaraff[z1] ==-20){ */ |
| /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ | /* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
| /* }else if(Tvaraff[z1] ==-10){ */ | /* }else if(Tvaraff[z1] ==-10){ */ |
| /* /\* sumnew+=coqvar[z1][iind]; *\/ */ | /* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
| /* }else */ /* TODO TODO codtabm(j1,z1) or codtabm(j1,Tvaraff[z1]]z1)*/ | /* }else */ /* TODO TODO codtabm(j1,z1) or codtabm(j1,Tvaraff[z1]]z1)*/ |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]){ /* for combination j1 of covariates */ | /* if( iind >=imx-3) printf("Searching error iind=%d Tvaraff[z1]=%d covar[Tvaraff[z1]][iind]=%.f TnsdVar[Tvaraff[z1]]=%d, cptcoveff=%d, cptcovs=%d \n",iind, Tvaraff[z1], covar[Tvaraff[z1]][iind],TnsdVar[Tvaraff[z1]],cptcoveff, cptcovs); */ |
| if(Tvaraff[z1]<1 || Tvaraff[z1]>=NCOVMAX) | |
| printf("Error Tvaraff[z1]=%d<1 or >=%d, cptcoveff=%d model=%s\n",Tvaraff[z1],NCOVMAX, cptcoveff, model); | |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]){ /* for combination j1 of covariates */ | |
| /* Tests if the value of the covariate z1 for this individual iind responded to combination j1 (V4=1 V3=0) */ | /* Tests if the value of the covariate z1 for this individual iind responded to combination j1 (V4=1 V3=0) */ |
| bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ | bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ |
| /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", | /* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", */ |
| bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), | /* bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),*/ |
| j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ | /* j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ |
| /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ | /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
| } /* Onlyf fixed */ | } /* Onlyf fixed */ |
| } /* end z1 */ | } /* end z1 */ |
| } /* cptcovn > 0 */ | } /* cptcoveff > 0 */ |
| } /* end any */ | } /* end any */ |
| }/* end j==0 */ | }/* end j==0 */ |
| if (bool==1){ /* We selected an individual iind satisfying combination j1 (V4=1 V3=0) or all fixed covariates */ | if (bool==1){ /* We selected an individual iind satisfying combination j1 (V4=1 V3=0) or all fixed covariates */ |
| Line 4965 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5148 Title=%s <br>Datafile=%s Firstpass=%d La |
| m=mw[mi][iind]; | m=mw[mi][iind]; |
| if(j!=0){ | if(j!=0){ |
| if(anyvaryingduminmodel==1){ /* Some are varying covariates */ | if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
| for (z1=1; z1<=cptcovn; z1++) { | for (z1=1; z1<=cptcoveff; z1++) { |
| if( Fixed[Tmodelind[z1]]==1){ | if( Fixed[Tmodelind[z1]]==1){ |
| iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; | iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
| if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]) /* iv=1 to ntv, right modality. If covariate's | if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) /* iv=1 to ntv, right modality. If covariate's |
| value is -1, we don't select. It differs from the | value is -1, we don't select. It differs from the |
| constant and age model which counts them. */ | constant and age model which counts them. */ |
| bool=0; /* not selected */ | bool=0; /* not selected */ |
| }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ | }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]) { | /* i1=Tvaraff[z1]; */ |
| /* i2=TnsdVar[i1]; */ | |
| /* i3=nbcode[i1][i2]; */ | |
| /* i4=covar[i1][iind]; */ | |
| /* if(i4 != i3){ */ | |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { /* Bug valgrind */ | |
| bool=0; | bool=0; |
| } | } |
| } | } |
| Line 5001 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5189 Title=%s <br>Datafile=%s Firstpass=%d La |
| freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ | freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
| for (z1=1; z1<= nqfveff; z1++) { /* Quantitative variables, calculating mean on known values only */ | for (z1=1; z1<= nqfveff; z1++) { /* Quantitative variables, calculating mean on known values only */ |
| if(!isnan(covar[ncovcol+z1][iind])){ | if(!isnan(covar[ncovcol+z1][iind])){ |
| idq[z1]=idq[z1]+weight[iind]; | idq[z1]=idq[z1]+weight[iind]; |
| meanq[z1]+=covar[ncovcol+z1][iind]*weight[iind]; /* Computes mean of quantitative with selected filter */ | meanq[z1]+=covar[ncovcol+z1][iind]*weight[iind]; /* Computes mean of quantitative with selected filter */ |
| /* stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]*weight[iind]; *//*error*/ | /* stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]*weight[iind]; *//*error*/ |
| stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]; /* *weight[iind];*/ /* Computes mean of quantitative with selected filter */ | stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]; /* *weight[iind];*/ /* Computes mean of quantitative with selected filter */ |
| } | } |
| } | } |
| /* if((int)agev[m][iind] == 55) */ | /* if((int)agev[m][iind] == 55) */ |
| Line 5034 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5222 Title=%s <br>Datafile=%s Firstpass=%d La |
| /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ | /* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
| if(cptcovn==0 && nj==1) /* no covariate and first pass */ | if(cptcoveff==0 && nj==1) /* no covariate and first pass */ |
| pstamp(ficresp); | pstamp(ficresp); |
| if (cptcovn>0 && j!=0){ | if (cptcoveff>0 && j!=0){ |
| pstamp(ficresp); | pstamp(ficresp); |
| printf( "\n#********** Variable "); | printf( "\n#********** Variable "); |
| fprintf(ficresp, "\n#********** Variable "); | fprintf(ficresp, "\n#********** Variable "); |
| Line 5089 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5277 Title=%s <br>Datafile=%s Firstpass=%d La |
| /* } */ | /* } */ |
| fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); | fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
| if((cptcovn==0 && nj==1)|| nj==2 ) /* no covariate and first pass */ | if((cptcoveff==0 && nj==1)|| nj==2 ) /* no covariate and first pass */ |
| fprintf(ficresp, " Age"); | fprintf(ficresp, " Age"); |
| if(nj==2) for (z1=1; z1<=cptcovn; z1++) fprintf(ficresp, " V%d=%d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | if(nj==2) for (z1=1; z1<=cptcoveff; z1++) { |
| printf(" V%d=%d, z1=%d, Tvaraff[z1]=%d, j1=%d, TnsdVar[Tvaraff[%d]]=%d |",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])], z1, Tvaraff[z1], j1,z1,TnsdVar[Tvaraff[z1]]); | |
| fprintf(ficresp, " V%d=%d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | |
| } | |
| for(i=1; i<=nlstate;i++) { | for(i=1; i<=nlstate;i++) { |
| if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp," Prev(%d) N(%d) N ",i,i); | if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp," Prev(%d) N(%d) N ",i,i); |
| fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); | fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
| } | } |
| if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp, "\n"); | if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp, "\n"); |
| fprintf(ficresphtm, "\n"); | fprintf(ficresphtm, "\n"); |
| /* Header of frequency table by age */ | /* Header of frequency table by age */ |
| Line 5164 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5355 Title=%s <br>Datafile=%s Firstpass=%d La |
| } | } |
| /* Writing ficresp */ | /* Writing ficresp */ |
| if(cptcovn==0 && nj==1){ /* no covariate and first pass */ | if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
| if( iage <= iagemax){ | if( iage <= iagemax){ |
| fprintf(ficresp," %d",iage); | fprintf(ficresp," %d",iage); |
| } | } |
| }else if( nj==2){ | }else if( nj==2){ |
| if( iage <= iagemax){ | if( iage <= iagemax){ |
| fprintf(ficresp," %d",iage); | fprintf(ficresp," %d",iage); |
| for (z1=1; z1<=cptcovn; z1++) fprintf(ficresp, " %d %d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, " %d %d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
| } | } |
| } | } |
| for(s1=1; s1 <=nlstate ; s1++){ | for(s1=1; s1 <=nlstate ; s1++){ |
| Line 5186 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5377 Title=%s <br>Datafile=%s Firstpass=%d La |
| } | } |
| if( iage <= iagemax){ | if( iage <= iagemax){ |
| if(pos>=1.e-5){ | if(pos>=1.e-5){ |
| if(cptcovn==0 && nj==1){ /* no covariate and first pass */ | if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
| fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); | fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
| }else if( nj==2){ | }else if( nj==2){ |
| fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); | fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
| Line 5195 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5386 Title=%s <br>Datafile=%s Firstpass=%d La |
| /*probs[iage][s1][j1]= pp[s1]/pos;*/ | /*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]);*/ | /*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{ | } else{ |
| if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp," NaNq %.0f %.0f",prop[s1][iage],pospropta); | 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); | fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[s1][iage],pospropta); |
| } | } |
| } | } |
| Line 5221 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5412 Title=%s <br>Datafile=%s Firstpass=%d La |
| } | } |
| fprintf(ficresphtmfr,"</tr>\n "); | fprintf(ficresphtmfr,"</tr>\n "); |
| fprintf(ficresphtm,"</tr>\n"); | fprintf(ficresphtm,"</tr>\n"); |
| if((cptcovn==0 && nj==1)|| nj==2 ) { | if((cptcoveff==0 && nj==1)|| nj==2 ) { |
| if(iage <= iagemax) | if(iage <= iagemax) |
| fprintf(ficresp,"\n"); | fprintf(ficresp,"\n"); |
| } | } |
| Line 5479 void prevalence(double ***probs, double | Line 5670 void prevalence(double ***probs, double |
| if (cptcovn<1) {j=1;ncodemax[1]=1;} | if (cptcovn<1) {j=1;ncodemax[1]=1;} |
| first=0; | first=0; |
| 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 simple dummy covariates */ |
| for (i=1; i<=nlstate; i++) | for (i=1; i<=nlstate; i++) |
| for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++) | for(iage=iagemin-AGEMARGE; iage <= iagemax+4+AGEMARGE; iage++) |
| prop[i][iage]=0.0; | prop[i][iage]=0.0; |
| Line 5497 void prevalence(double ***probs, double | Line 5688 void prevalence(double ***probs, double |
| for (z1=1; z1<=cptcoveff; z1++){ | for (z1=1; z1<=cptcoveff; z1++){ |
| if( Fixed[Tmodelind[z1]]==1){ | if( Fixed[Tmodelind[z1]]==1){ |
| iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; | iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
| if (cotvar[m][iv][i]!= nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]) /* iv=1 to ntv, right modality */ | if (cotvar[m][iv][i]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) /* iv=1 to ntv, right modality */ |
| bool=0; | bool=0; |
| }else if( Fixed[Tmodelind[z1]]== 0) /* fixed */ | }else if( Fixed[Tmodelind[z1]]== 0) /* fixed */ |
| if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]) { | if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { |
| bool=0; | bool=0; |
| } | } |
| } | } |
| Line 5803 void concatwav(int wav[], int **dh, int | Line 5994 void concatwav(int wav[], int **dh, int |
| nbcode[k][j]=0; /* Valgrind */ | nbcode[k][j]=0; /* Valgrind */ |
| /* Loop on covariates without age and products and no quantitative variable */ | /* Loop on covariates without age and products and no quantitative variable */ |
| 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++) { /* cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ |
| for (j=-1; (j < maxncov); j++) Ndum[j]=0; | 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]) { |
| Line 5901 void concatwav(int wav[], int **dh, int | Line 6092 void concatwav(int wav[], int **dh, int |
| break; | break; |
| } /* end switch */ | } /* end switch */ |
| } /* end dummy test */ | } /* end dummy test */ |
| if(Dummy[k]==1 && Typevar[k] !=1){ /* Dummy covariate and not age product */ | if(Dummy[k]==1 && Typevar[k] !=1){ /* Quantitative covariate and not age product */ |
| 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*/ |
| if(Tvar[k]<=0 || Tvar[k]>=NCOVMAX){ | |
| printf("Error k=%d \n",k); | |
| exit(1); | |
| } | |
| if(isnan(covar[Tvar[k]][i])){ | if(isnan(covar[Tvar[k]][i])){ |
| printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); | printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); |
| fprintf(ficlog,"ERROR, currently IMaCh doesn't treat covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); | fprintf(ficlog,"ERROR, currently IMaCh doesn't treat covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); |
| Line 5910 void concatwav(int wav[], int **dh, int | Line 6105 void concatwav(int wav[], int **dh, int |
| exit(1); | exit(1); |
| } | } |
| } | } |
| } | } /* end Quanti */ |
| } /* end of loop on model-covariate k. nbcode[Tvark][1]=-1, nbcode[Tvark][1]=0 and nbcode[Tvark][2]=1 sets the value of covariate k*/ | } /* end of loop on model-covariate k. nbcode[Tvark][1]=-1, nbcode[Tvark][1]=0 and nbcode[Tvark][2]=1 sets the value of covariate k*/ |
| for (k=-1; k< maxncov; k++) Ndum[k]=0; | for (k=-1; k< maxncov; k++) Ndum[k]=0; |
| Line 5924 void concatwav(int wav[], int **dh, int | Line 6119 void concatwav(int wav[], int **dh, int |
| 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++) { /* cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ |
| /* 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 simple and non empty in the model */ |
| /* Typevar[k] =0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ | |
| /* Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product*/ | |
| /* 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, *//* V5 quanti, V2 quanti, V4, V3, V1 dummies */ |
| /* k= 1 2 3 4 5 6 7 8 9 */ | |
| /* Tvar[k]= 5 4 3 6 5 2 7 1 1 */ | |
| /* ij 1 2 3 */ | |
| /* Tvaraff[ij]= 4 3 1 */ | |
| /* Tmodelind[ij]=2 3 9 */ | |
| /* TmodelInvind[ij]=2 1 1 */ | |
| 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 */ |
| Line 5946 void concatwav(int wav[], int **dh, int | Line 6150 void concatwav(int wav[], int **dh, int |
| } /* 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; /* cptcov= Number of total real effective covariates: effective (used as cptcoveff in other functions) | *cptcov=ij; /* cptcov= Number of total real effective simple dummies (fixed or time arying) effective (used as cptcoveff in other functions) |
| * 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++){ |
| Line 6079 void concatwav(int wav[], int **dh, int | Line 6283 void concatwav(int wav[], int **dh, int |
| /* Covariances of health expectancies eij and of total life expectancies according | /* Covariances of health expectancies eij and of total life expectancies according |
| to initial status i, ei. . | to initial status i, ei. . |
| */ | */ |
| /* Very time consuming function, but already optimized with precov */ | |
| int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2, ij, ji; | int i, j, nhstepm, hstepm, h, nstepm, k, cptj, cptj2, i2, j2, ij, ji; |
| int nhstepma, nstepma; /* Decreasing with age */ | int nhstepma, nstepma; /* Decreasing with age */ |
| double age, agelim, hf; | double age, agelim, hf; |
| Line 6347 void concatwav(int wav[], int **dh, int | Line 6552 void concatwav(int wav[], int **dh, int |
| 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"); | 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]); | /* We use TinvDoQresult[nres][resultmodel[nres][j] we sort according to the equation model and the resultline: it is a choice */ |
| /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ /\* To be done*\/ */ | |
| /* fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* } */ | |
| for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ /* To be done*/ | |
| fprintf(ficresprobmorprev," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | |
| } | } |
| for(j=1;j<=cptcoveff;j++) | /* for(j=1;j<=cptcoveff;j++) */ |
| fprintf(ficresprobmorprev,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,Tvaraff[j])]); | /* fprintf(ficresprobmorprev," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficresprobmorprev,"\n"); | fprintf(ficresprobmorprev,"\n"); |
| fprintf(ficresprobmorprev,"# Age cov=%-d",ij); | fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
| Line 6979 To be simple, these graphs help to under | Line 7189 To be simple, these graphs help to under |
| tj = (int) pow(2,cptcoveff); | tj = (int) pow(2,cptcoveff); |
| if (cptcovn<1) {tj=1;ncodemax[1]=1;} | if (cptcovn<1) {tj=1;ncodemax[1]=1;} |
| j1=0; | j1=0; |
| for(j1=1; j1<=tj;j1++){ /* For each valid combination of covariates or only once*/ | |
| for(nres=1;nres <=1; nres++){ /* For each resultline */ | for(nres=1;nres <=nresult; nres++){ /* For each resultline */ |
| /* for(nres=1;nres <=nresult; nres++){ /\* For each resultline *\/ */ | for(j1=1; j1<=tj;j1++){ /* For any combination of dummy covariates, fixed and varying */ |
| printf("Varprob TKresult[nres]=%d j1=%d, nres=%d, cptcovn=%d, cptcoveff=%d tj=%d cptcovs=%d\n", TKresult[nres], j1, nres, cptcovn, cptcoveff, tj, cptcovs); | |
| if(tj != 1 && TKresult[nres]!= j1) | |
| continue; | |
| /* for(j1=1; j1<=tj;j1++){ /\* For each valid combination of covariates or only once*\/ */ | |
| /* for(nres=1;nres <=1; nres++){ /\* For each resultline *\/ */ | |
| /* /\* for(nres=1;nres <=nresult; nres++){ /\\* For each resultline *\\/ *\/ */ | |
| if (cptcovn>0) { | if (cptcovn>0) { |
| fprintf(ficresprob, "\n#********** Variable "); | fprintf(ficresprob, "\n#********** Variable "); |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | |
| fprintf(ficresprob, "**********\n#\n"); | |
| fprintf(ficresprobcov, "\n#********** Variable "); | fprintf(ficresprobcov, "\n#********** Variable "); |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcov, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | fprintf(ficgp, "\n#********** Variable "); |
| fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); | |
| fprintf(ficresprobcor, "\n#********** Variable "); | |
| /* Including quantitative variables of the resultline to be done */ | |
| for (z1=1; z1<=cptcovs; z1++){ /* Loop on each variable of this resultline */ | |
| printf("Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); | |
| fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); | |
| /* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */ | |
| if(Dummy[modelresult[nres][z1]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to z1 in resultline */ | |
| if(Fixed[modelresult[nres][z1]]==0){ /* Fixed referenced to model equation */ | |
| fprintf(ficresprob,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprobcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficgp,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(fichtmcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprobcor,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprob,"fixed "); | |
| fprintf(ficresprobcov,"fixed "); | |
| fprintf(ficgp,"fixed "); | |
| fprintf(fichtmcov,"fixed "); | |
| fprintf(ficresprobcor,"fixed "); | |
| }else{ | |
| fprintf(ficresprob,"varyi "); | |
| fprintf(ficresprobcov,"varyi "); | |
| fprintf(ficgp,"varyi "); | |
| fprintf(fichtmcov,"varyi "); | |
| fprintf(ficresprobcor,"varyi "); | |
| } | |
| }else if(Dummy[modelresult[nres][z1]]==1){ /* Quanti variable */ | |
| /* For each selected (single) quantitative value */ | |
| fprintf(ficresprob," V%d=%lg ",Tvqresult[nres][z1],Tqresult[nres][z1]); | |
| if(Fixed[modelresult[nres][z1]]==0){ /* Fixed */ | |
| fprintf(ficresprob,"fixed "); | |
| fprintf(ficresprobcov,"fixed "); | |
| fprintf(ficgp,"fixed "); | |
| fprintf(fichtmcov,"fixed "); | |
| fprintf(ficresprobcor,"fixed "); | |
| }else{ | |
| fprintf(ficresprob,"varyi "); | |
| fprintf(ficresprobcov,"varyi "); | |
| fprintf(ficgp,"varyi "); | |
| fprintf(fichtmcov,"varyi "); | |
| fprintf(ficresprobcor,"varyi "); | |
| } | |
| }else{ | |
| printf("Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| fprintf(ficlog,"Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| exit(1); | |
| } | |
| } /* End loop on variable of this resultline */ | |
| /* for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); */ | |
| fprintf(ficresprob, "**********\n#\n"); | |
| fprintf(ficresprobcov, "**********\n#\n"); | fprintf(ficresprobcov, "**********\n#\n"); |
| fprintf(ficgp, "\n#********** Variable "); | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficgp, " V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | |
| fprintf(ficgp, "**********\n#\n"); | fprintf(ficgp, "**********\n#\n"); |
| fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); | |
| /* for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); */ | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtmcov, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | |
| fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); | fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
| fprintf(ficresprobcor, "\n#********** Variable "); | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcor, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,Tvaraff[z1])]); | |
| fprintf(ficresprobcor, "**********\n#"); | fprintf(ficresprobcor, "**********\n#"); |
| if(invalidvarcomb[j1]){ | if(invalidvarcomb[j1]){ |
| fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); | fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); |
| Line 7013 To be simple, these graphs help to under | Line 7268 To be simple, these graphs help to under |
| trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); | trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); |
| gp=vector(1,(nlstate)*(nlstate+ndeath)); | gp=vector(1,(nlstate)*(nlstate+ndeath)); |
| gm=vector(1,(nlstate)*(nlstate+ndeath)); | gm=vector(1,(nlstate)*(nlstate+ndeath)); |
| for (age=bage; age<=fage; age ++){ | for (age=bage; age<=fage; age ++){ /* Fo each age we feed the model equation with covariates, using precov as in hpxij() ? */ |
| cov[2]=age; | cov[2]=age; |
| if(nagesqr==1) | if(nagesqr==1) |
| cov[3]= age*age; | cov[3]= age*age; |
| /* for (k=1; k<=cptcovn;k++) { */ | /* New code end of combination but for each resultline */ |
| /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; */ | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ | if(Typevar[k1]==1){ /* A product with age */ |
| /* Here comes the value of the covariate 'j1' after renumbering k with single dummy covariates */ | cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
| cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(j1,TvarsD[k])]; | |
| /*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*//* j1 1 2 3 4 | |
| * 1 1 1 1 1 | |
| * 2 2 1 1 1 | |
| * 3 1 2 1 1 | |
| */ | |
| /* nbcode[1][1]=0 nbcode[1][2]=1;*/ | |
| } | |
| /* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 */ | |
| /* ) p nbcode[Tvar[Tage[k]]][(1 & (ij-1) >> (k-1))+1] */ | |
| /*for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ | |
| for (k=1; k<=cptcovage;k++){ /* For product with age */ | |
| if(Dummy[Tage[k]]==2){ /* dummy with age */ | |
| cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(j1,Tvar[Tage[k]])]*cov[2]; | |
| /* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; */ | |
| } else if(Dummy[Tage[k]]==3){ /* quantitative with age */ | |
| printf("Internal IMaCh error, don't know which value for quantitative covariate with age, Tage[k]%d, k=%d, Tvar[Tage[k]]=V%d, age=%d\n",Tage[k],k ,Tvar[Tage[k]], (int)cov[2]); | |
| exit(1); | |
| /* cov[2+nagesqr+Tage[k]]=meanq[k]/idq[k]*cov[2];/\* Using the mean of quantitative variable Tvar[Tage[k]] /\* Tqresult[nres][k]; *\/ */ | |
| /* cov[++k1]=Tqresult[nres][k]; */ | |
| } | |
| /* cov[2+Tage[k]+nagesqr]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; */ | |
| } | |
| for (k=1; k<=cptcovprod;k++){/* For product without age */ | |
| if(Dummy[Tvard[k][1]]==0){ | |
| if(Dummy[Tvard[k][2]]==0){ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(j1,Tvard[k][2])]; | |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | |
| }else{ /* Should we use the mean of the quantitative variables? */ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,Tvard[k][1])] * Tqresult[nres][k]; | |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; */ | |
| } | |
| }else{ | }else{ |
| if(Dummy[Tvard[k][2]]==0){ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(j1,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; | |
| /* cov[++k1]=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]]; | |
| /* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ | |
| } | |
| } | } |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | }/* End of loop on model equation */ |
| } | /* Old code */ |
| /* /\* for (k=1; k<=cptcovn;k++) { *\/ */ | |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; *\/ */ | |
| /* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ | |
| /* /\* Here comes the value of the covariate 'j1' after renumbering k with single dummy covariates *\/ */ | |
| /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(j1,TnsdVar[TvarsD[k]])]; */ | |
| /* /\*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*\//\* j1 1 2 3 4 */ | |
| /* * 1 1 1 1 1 */ | |
| /* * 2 2 1 1 1 */ | |
| /* * 3 1 2 1 1 */ | |
| /* *\/ */ | |
| /* /\* nbcode[1][1]=0 nbcode[1][2]=1;*\/ */ | |
| /* } */ | |
| /* /\* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 *\/ */ | |
| /* /\* ) p nbcode[Tvar[Tage[k]]][(1 & (ij-1) >> (k-1))+1] *\/ */ | |
| /* /\*for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; *\/ */ | |
| /* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ | |
| /* if(Dummy[Tage[k]]==2){ /\* dummy with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(j1,TnsdVar[Tvar[Tage[k]]])]*cov[2]; */ | |
| /* /\* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ | |
| /* } else if(Dummy[Tage[k]]==3){ /\* quantitative with age *\/ */ | |
| /* printf("Internal IMaCh error, don't know which value for quantitative covariate with age, Tage[k]%d, k=%d, Tvar[Tage[k]]=V%d, age=%d\n",Tage[k],k ,Tvar[Tage[k]], (int)cov[2]); */ | |
| /* /\* cov[2+nagesqr+Tage[k]]=meanq[k]/idq[k]*cov[2];/\\* Using the mean of quantitative variable Tvar[Tage[k]] /\\* Tqresult[nres][k]; *\\/ *\/ */ | |
| /* /\* exit(1); *\/ */ | |
| /* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ | |
| /* } */ | |
| /* /\* cov[2+Tage[k]+nagesqr]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ | |
| /* } */ | |
| /* for (k=1; k<=cptcovprod;k++){/\* For product without age *\/ */ | |
| /* if(Dummy[Tvard[k][1]]==0){ */ | |
| /* if(Dummy[Tvard[k][2]]==0){ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])]; */ | |
| /* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ | |
| /* }else{ /\* Should we use the mean of the quantitative variables? *\/ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * Tqresult[nres][resultmodel[nres][k]]; */ | |
| /* /\* cov[++k1]=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(j1,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][TnsdVar[Tvard[k][1]]]; */ | |
| /* /\* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; *\/ */ | |
| /* }else{ */ | |
| /* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][TnsdVar[Tvard[k][1]]]* Tqinvresult[nres][TnsdVar[Tvard[k][2]]]; */ | |
| /* /\* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ | |
| /* } */ | |
| /* } */ | |
| /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ | |
| /* } */ | |
| /* For each age and combination of dummy covariates we slightly move the parameters of delti in order to get the gradient*/ | /* For each age and combination of dummy covariates we slightly move the parameters of delti in order to get the gradient*/ |
| for(theta=1; theta <=npar; theta++){ | for(theta=1; theta <=npar; theta++){ |
| for(i=1; i<=npar; i++) | for(i=1; i<=npar; i++) |
| Line 7249 To be simple, these graphs help to under | Line 7513 To be simple, these graphs help to under |
| } /* k12 */ | } /* k12 */ |
| } /*l1 */ | } /*l1 */ |
| }/* k1 */ | }/* k1 */ |
| } /* loop on nres */ | |
| } /* loop on combination of covariates j1 */ | } /* loop on combination of covariates j1 */ |
| } /* loop on nres */ | |
| free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); | free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); |
| free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); | free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); |
| free_matrix(doldm,1,(nlstate)*(nlstate+ndeath),1,(nlstate)*(nlstate+ndeath)); | free_matrix(doldm,1,(nlstate)*(nlstate+ndeath),1,(nlstate)*(nlstate+ndeath)); |
| Line 7281 void printinghtml(char fileresu[], char | Line 7545 void printinghtml(char fileresu[], char |
| 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")); |
| fprintf(fichtm,"<li> - Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file) ", | fprintf(fichtm,"<li> - Observed prevalence (cross-sectional prevalence) in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file) ", |
| jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTM_",".htm"),subdirfext3(optionfilefiname,"PHTM_",".htm")); | jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTM_",".htm"),subdirfext3(optionfilefiname,"PHTM_",".htm")); |
| fprintf(fichtm,", <a href=\"%s\">%s</a> (text file) <br>\n",subdirf2(fileresu,"P_"),subdirf2(fileresu,"P_")); | fprintf(fichtm,", <a href=\"%s\">%s</a> (text file) <br>\n",subdirf2(fileresu,"P_"),subdirf2(fileresu,"P_")); |
| fprintf(fichtm,"\ | fprintf(fichtm,"\ |
| Line 7315 void printinghtml(char fileresu[], char | Line 7579 void printinghtml(char fileresu[], char |
| jj1=0; | jj1=0; |
| fprintf(fichtm," \n<ul>"); | fprintf(fichtm," \n<ul>"); |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ | /* k1=nres; */ |
| if(m != 1 && TKresult[nres]!= k1) | k1= TKresult[nres]; |
| continue; | /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | |
| /* continue; */ | |
| jj1++; | jj1++; |
| if (cptcovn > 0) { | if (cptcovn > 0) { |
| fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescov"); | fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescov"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ /**< cptcovs number of SIMPLE covariates in the model V2+V1 =2 (dummy or quantit or time varying) */ |
| fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm,"_V%d=%lg_",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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]); | |
| } | } |
| /* 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,"\">"); | fprintf(fichtm,"\">"); |
| /* if(nqfveff+nqtveff 0) */ /* Test to be done */ | /* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
| fprintf(fichtm,"************ Results for covariates"); | fprintf(fichtm,"************ Results for covariates"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ |
| fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm," V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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,"************ 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]){ | if(invalidvarcomb[k1]){ |
| fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); | fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); |
| continue; | continue; |
| Line 7349 void printinghtml(char fileresu[], char | Line 7622 void printinghtml(char fileresu[], char |
| jj1=0; | jj1=0; |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ | /* k1=nres; */ |
| if(m != 1 && TKresult[nres]!= k1) | k1= TKresult[nres]; |
| continue; | /* 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"); | fprintf(fichtm,"\n<p><a name=\"rescov"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ |
| fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm,"_V%d=%lg_",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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]); | |
| } | } |
| /* 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,"\"</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<=cptcovs;cpt++){ |
| fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm," V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[nres][cpt]]); |
| printf(" V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]);fflush(stdout); | printf(" V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[nres][cpt]]); |
| /* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); */ | /* 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); */ | /* 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," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); | fprintf(fichtm," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
| if(invalidvarcomb[k1]){ | if(invalidvarcomb[k1]){ |
| Line 7452 with weights corresponding to observed p | Line 7722 with weights corresponding to observed p |
| fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">", subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres ); | fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">", subdirf2(optionfilefiname,"EXP_"),cpt,k1,nres ); |
| } | } |
| /* } /\* end i1 *\/ */ | /* } /\* end i1 *\/ */ |
| }/* End k1 */ | }/* End k1=nres */ |
| fprintf(fichtm,"</ul>"); | fprintf(fichtm,"</ul>"); |
| fprintf(fichtm,"\ | fprintf(fichtm,"\ |
| Line 7510 See page 'Matrix of variance-covariance | Line 7780 See page 'Matrix of variance-covariance |
| jj1=0; | jj1=0; |
| fprintf(fichtm," \n<ul>"); | fprintf(fichtm," \n<ul>"); |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ | /* k1=nres; */ |
| if(m != 1 && TKresult[nres]!= k1) | k1= TKresult[nres]; |
| continue; | /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | |
| /* continue; */ | |
| jj1++; | jj1++; |
| if (cptcovn > 0) { | if (cptcovn > 0) { |
| fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescovsecond"); | fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescovsecond"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ |
| fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm,"_V%d=%lg_",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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,"\">"); | fprintf(fichtm,"\">"); |
| /* if(nqfveff+nqtveff 0) */ /* Test to be done */ | /* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
| fprintf(fichtm,"************ Results for covariates"); | fprintf(fichtm,"************ Results for covariates"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ |
| fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm," V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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]){ | if(invalidvarcomb[k1]){ |
| fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); | fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); |
| Line 7539 See page 'Matrix of variance-covariance | Line 7805 See page 'Matrix of variance-covariance |
| } | } |
| fprintf(fichtm,"</a></li>"); | fprintf(fichtm,"</a></li>"); |
| } /* cptcovn >0 */ | } /* cptcovn >0 */ |
| } | } /* End nres */ |
| fprintf(fichtm," \n</ul>"); | fprintf(fichtm," \n</ul>"); |
| jj1=0; | jj1=0; |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k1=1; k1<=m;k1++){ | /* k1=nres; */ |
| if(m != 1 && TKresult[nres]!= k1) | k1= TKresult[nres]; |
| continue; | /* 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,"\n<p><a name=\"rescovsecond"); | fprintf(fichtm,"\n<p><a name=\"rescovsecond"); |
| for (cpt=1; cpt<=cptcoveff;cpt++){ | for (cpt=1; cpt<=cptcovs;cpt++){ |
| fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); | fprintf(fichtm,"_V%d=%lg_",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[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,"\"</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++){ /**< cptcoveff number of variables */ | for (cpt=1; cpt<=cptcovs;cpt++){ /**< cptcoveff number of variables */ |
| fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]); | fprintf(fichtm," V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[nres][cpt]]); |
| printf(" V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]);fflush(stdout); | printf(" V%d=%lg ",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[nres][cpt]]); |
| /* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,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," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); | fprintf(fichtm," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
| Line 7576 See page 'Matrix of variance-covariance | Line 7838 See page 'Matrix of variance-covariance |
| fprintf(fichtm,"\n<h4>Combination (%d) ignored because no cases </h4>\n",k1); | fprintf(fichtm,"\n<h4>Combination (%d) ignored because no cases </h4>\n",k1); |
| continue; | continue; |
| } | } |
| } | } /* If cptcovn >0 */ |
| for(cpt=1; cpt<=nlstate;cpt++) { | for(cpt=1; cpt<=nlstate;cpt++) { |
| fprintf(fichtm,"\n<br>- Observed (cross-sectional with mov_average=%d) 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-%d.svg\"> %s_%d-%d-%d.svg</a>",mobilav,cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres); | prevalence (with 95%% confidence interval) in state (%d): <a href=\"%s_%d-%d-%d.svg\"> %s_%d-%d-%d.svg</a>",mobilav,cpt,subdirf2(optionfilefiname,"V_"),cpt,k1,nres,subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
| Line 7591 true period expectancies (those weighted | Line 7853 true period expectancies (those weighted |
| fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>) \n<br>",subdirf2(optionfilefiname,"T_"),subdirf2(optionfilefiname,"T_")); | fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>) \n<br>",subdirf2(optionfilefiname,"T_"),subdirf2(optionfilefiname,"T_")); |
| fprintf(fichtm,"<img src=\"%s_%d-%d.svg\">",subdirf2(optionfilefiname,"E_"),k1,nres); | fprintf(fichtm,"<img src=\"%s_%d-%d.svg\">",subdirf2(optionfilefiname,"E_"),k1,nres); |
| /* } /\* end i1 *\/ */ | /* } /\* end i1 *\/ */ |
| }/* End k1 */ | |
| }/* End nres */ | }/* End nres */ |
| fprintf(fichtm,"</ul>"); | fprintf(fichtm,"</ul>"); |
| fflush(fichtm); | fflush(fichtm); |
| Line 7669 void printinggnuplot(char fileresu[], ch | Line 7930 void printinggnuplot(char fileresu[], ch |
| strcpy(optfileres,"vpl"); | strcpy(optfileres,"vpl"); |
| /* 1eme*/ | /* 1eme*/ |
| for (cpt=1; cpt<= nlstate ; cpt ++){ /* For each live state */ | for (cpt=1; cpt<= nlstate ; cpt ++){ /* For each live state */ |
| for (k1=1; k1<= m ; k1 ++){ /* For each valid combination of covariate */ | /* for (k1=1; k1<= m ; k1 ++){ /\* For each valid combination of covariate *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| k1=TKresult[nres]; | |
| /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ | /* plot [100000000000000000000:-100000000000000000000] "mysbiaspar/vplrmysbiaspar.txt to check */ |
| if(m != 1 && TKresult[nres]!= k1) | /* if(m != 1 && TKresult[nres]!= k1) */ |
| continue; | /* continue; */ |
| /* We are interested in selected combination by the resultline */ | /* We are interested in selected combination by the resultline */ |
| /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */ | /* printf("\n# 1st: Period (stable) prevalence with CI: 'VPL_' files and live state =%d ", cpt); */ |
| fprintf(ficgp,"\n# 1st: Forward (stable period) prevalence with CI: 'VPL_' files and live state =%d ", cpt); | fprintf(ficgp,"\n# 1st: Forward (stable period) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the value of the covariate corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* 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 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate k get corresponding value lv for combination k1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the value of the covariate corresponding to k1 combination *\\/ *\/ */ |
| /* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* printf(" V%d=%d ",Tvaraff[k],vlv); */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][lv]; /\* vlv is the value of the covariate lv, 0 or 1 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv *\/ */ |
| /* printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | /* /\* printf(" V%d=%d ",Tvaraff[k],vlv); *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| /* } */ | |
| /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ | |
| /* /\* printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); *\/ */ | |
| /* fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| /* printf("\n#\n"); */ | /* printf("\n#\n"); */ |
| Line 7732 void printinggnuplot(char fileresu[], ch | Line 7999 void printinggnuplot(char fileresu[], ch |
| }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 */ |
| 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 *\/ */ |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
| /* 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 */ |
| Line 7760 void printinggnuplot(char fileresu[], ch | Line 8028 void printinggnuplot(char fileresu[], ch |
| }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 */ |
| 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 *\/ */ |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
| /* 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]; */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | |
| kl++; | 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 *\/ */ | /* 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+(cpt-1)*(nlstate+1)+1+(i-1)+(nlstate+1)*nlstate; 6+(1-1)*(2+1)+1+(1-1) +(2+1)*2=13 */ |
| Line 7774 void printinggnuplot(char fileresu[], ch | Line 8044 void printinggnuplot(char fileresu[], ch |
| 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], \ | 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 ?*/ | 2+cptcoveff*2+(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]][codtabm(k1,TnsdVar[Tvaraff[k]])]); |
| kl++; | kl++; |
| } | } |
| } /* end covariate */ | } /* end covariate */ |
| Line 7802 void printinggnuplot(char fileresu[], ch | Line 8072 void printinggnuplot(char fileresu[], ch |
| /* fprintf(ficgp,"\nset out ;unset label;\n"); */ | /* fprintf(ficgp,"\nset out ;unset label;\n"); */ |
| fprintf(ficgp,"\nset out ;unset title;\n"); | fprintf(ficgp,"\nset out ;unset title;\n"); |
| } /* nres */ | } /* nres */ |
| } /* k1 */ | /* } /\* k1 *\/ */ |
| } /* cpt */ | } /* cpt */ |
| /*2 eme*/ | /*2 eme*/ |
| for (k1=1; k1<= m ; k1 ++){ | /* for (k1=1; k1<= m ; k1 ++){ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); | fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| /* for(k=1; k <= ncovds; k++){ */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* } */ |
| /* /\* 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),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 7868 void printinggnuplot(char fileresu[], ch | Line 8144 void printinggnuplot(char fileresu[], ch |
| } /* vpopbased */ | } /* vpopbased */ |
| fprintf(ficgp,"\nset out;set out \"%s_%d-%d.svg\"; replot; set out; unset label;\n",subdirf2(optionfilefiname,"E_"),k1,nres); /* Buggy gnuplot */ | 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 */ | } /* end nres */ |
| } /* k1 end 2 eme*/ | /* } /\* k1 end 2 eme*\/ */ |
| /*3eme*/ | /*3eme*/ |
| for (k1=1; k1<= m ; k1 ++){ | /* for (k1=1; k1<= m ; k1 ++){ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| for (cpt=1; cpt<= nlstate ; cpt ++) { | for (cpt=1; cpt<= nlstate ; cpt ++) { /* Fragile no verification of covariate values */ |
| fprintf(ficgp,"\n\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); | fprintf(ficgp,"\n\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| if(invalidvarcomb[k1]){ | if(invalidvarcomb[k1]){ |
| Line 7923 plot [%.f:%.f] \"%s\" every :::%d::%d u | Line 8205 plot [%.f:%.f] \"%s\" every :::%d::%d u |
| } | } |
| fprintf(ficgp,"\nunset label;\n"); | fprintf(ficgp,"\nunset label;\n"); |
| } /* end nres */ | } /* end nres */ |
| } /* end kl 3eme */ | /* } /\* 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 covariate and each value */ | /* for (k1=1; k1<=m; k1++){ /\* For each covariate and each value *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n# Survival functions in state %d : 'LIJ_' files, cov=%d state=%d", cpt, k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 7974 set ter svg size 640, 480\nunset log y\n | Line 8262 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"\nset out; unset label;\n"); | fprintf(ficgp,"\nset out; unset label;\n"); |
| } /* end cpt state*/ | } /* end cpt state*/ |
| } /* end nres */ | } /* end nres */ |
| } /* end covariate k1 */ | /* } /\* 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 combination if any */ | /* for (k1=1; k1<= m ; k1++){ /\* For each covariate combination if any *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
| strcpy(gplotlabel,"("); | 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); | 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 */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 8032 set ter svg size 640, 480\nunset log y\n | Line 8326 set ter svg size 640, 480\nunset log y\n |
| } | } |
| fprintf(ficgp,"\nset out; unset label;\n"); | fprintf(ficgp,"\nset out; unset label;\n"); |
| } /* end cpt state*/ | } /* end cpt state*/ |
| } /* end covariate */ | /* } /\* end covariate *\/ */ |
| } /* end nres */ | } /* 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 if any */ | /* for (k1=1; k1<= m ; k1 ++) /\* For each covariate combination if any *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state of arrival */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state of arrival */ |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| fprintf(ficgp,"\n#\n#\n#CV preval stable (forward): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#CV preval stable (forward): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 8088 set ter svg size 640, 480\nunset log y\n | Line 8388 set ter svg size 640, 480\nunset log y\n |
| /* 7eme */ | /* 7eme */ |
| if(prevbcast == 1){ | if(prevbcast == 1){ |
| /* CV backward prevalence for each covariate */ | /* CV backward prevalence for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | /* for (k1=1; k1<= m ; k1 ++) /\* For each covariate combination if any *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life origin state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life origin state */ |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| fprintf(ficgp,"\n#\n#\n#CV Backward stable prevalence: 'pijb' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#CV Backward stable prevalence: 'pijb' files, covariatecombination#=%d state=%d",k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 8144 set ter svg size 640, 480\nunset log y\n | Line 8450 set ter svg size 640, 480\nunset log y\n |
| if(prevfcast==1){ | if(prevfcast==1){ |
| /* Projection from cross-sectional to forward stable (period) prevalence for each covariate */ | /* Projection from cross-sectional to forward stable (period) prevalence for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | /* for (k1=1; k1<= m ; k1 ++) /\* For each covariate combination if any *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* 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,"("); | strcpy(gplotlabel,"("); |
| fprintf(ficgp,"\n#\n#\n#Projection of prevalence to forward stable prevalence (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); | fprintf(ficgp,"\n#\n#\n#Projection of prevalence to forward stable prevalence (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
| for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each correspondig covariate value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate value corresponding to k1 combination and kth covariate *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 8218 set ter svg size 640, 480\nunset log y\n | Line 8530 set ter svg size 640, 480\nunset log y\n |
| kl=0; | kl=0; |
| strcpy(gplotcondition,"("); | strcpy(gplotcondition,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ | 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 */ | /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
| /* 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]; /* Value of the modality of Tvaraff[k] */ | /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | |
| kl++; | kl++; |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); | sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
| kl++; | kl++; |
| Line 8257 set ter svg size 640, 480\nunset log y\n | Line 8571 set ter svg size 640, 480\nunset log y\n |
| if(prevbcast==1){ | if(prevbcast==1){ |
| /* Back projection from cross-sectional to stable (mixed) for each covariate */ | /* Back projection from cross-sectional to stable (mixed) for each covariate */ |
| for (k1=1; k1<= m ; k1 ++) /* For each covariate combination if any */ | /* for (k1=1; k1<= m ; k1 ++) /\* For each covariate combination if any *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | k1=TKresult[nres]; |
| continue; | /* 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,"("); | strcpy(gplotlabel,"("); |
| fprintf(ficgp,"\n#\n#\n#Back projection of prevalence to stable (mixed) back prevalence: 'BPROJ_' files, covariatecombination#=%d originstate=%d",k1, cpt); | 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 */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each correspondig covariate value *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate value corresponding to k1 combination and kth covariate *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; | /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* 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 *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| } | } |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| Line 8330 set ter svg size 640, 480\nunset log y\n | Line 8650 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp," u %d:(",ioffset); | fprintf(ficgp," u %d:(",ioffset); |
| kl=0; | kl=0; |
| strcpy(gplotcondition,"("); | strcpy(gplotcondition,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k of the resultline, get corresponding value lv for combination k1 */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to combination k1 and covariate k */ | if(Dummy[Tvresult[nres][k]]==0){ /* To be verified */ |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate writing the chain of conditions *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; /* Value of the modality of Tvaraff[k] */ | lv=Tvresult[nres][k]; |
| kl++; | vlv=TinvDoQresult[nres][Tvresult[nres][k]]; |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| kl++; | /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
| if(k <cptcoveff && cptcoveff>1) | /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
| sprintf(gplotcondition+strlen(gplotcondition)," && "); | /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
| /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ | |
| kl++; | |
| /* sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); */ | |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%lg " ,kl,Tvresult[nres][k], kl+1,TinvDoQresult[nres][Tvresult[nres][k]]); | |
| kl++; | |
| if(k <cptcoveff && cptcoveff>1) | |
| sprintf(gplotcondition+strlen(gplotcondition)," && "); | |
| } | |
| } | } |
| strcpy(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 *\/ */ | /* 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 *\/ */ |
| Line 8408 set ter svg size 640, 480\nunset log y\n | Line 8736 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"#model=%s \n",model); | fprintf(ficgp,"#model=%s \n",model); |
| fprintf(ficgp,"# Type of graphic ng=%d\n",ng); | fprintf(ficgp,"# Type of graphic ng=%d\n",ng); |
| fprintf(ficgp,"# k1=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ | fprintf(ficgp,"# k1=1 to 2^%d=%d\n",cptcoveff,m);/* to be checked */ |
| for(k1=1; k1 <=m; k1++) /* For each combination of covariate */ | /* for(k1=1; k1 <=m; k1++) /\* For each combination of covariate *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(m != 1 && TKresult[nres]!= k1) | /* k1=nres; */ |
| continue; | k1= TKresult[nres]; |
| fprintf(ficgp,"\n\n# Combination of dummy k1=%d which is ",k1); | fprintf(ficgp,"\n\n# Resultline k1=%d ",k1); |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| /*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ | /*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ |
| for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ | for (k=1; k<=cptcovs; k++){ /**< cptcovs number of SIMPLE covariates in the model V2+V1 =2 (dummy or quantit or time varying) */ |
| lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ | /* for each resultline nres, and position k, Tvresult[nres][k] gives the name of the variable and |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | TinvDoQresult[nres][Tvresult[nres][k]] gives its value double or integer) */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| vlv= nbcode[Tvaraff[k]][lv]; | } |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* if(m != 1 && TKresult[nres]!= k1) */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* continue; */ |
| } | /* fprintf(ficgp,"\n\n# Combination of dummy k1=%d which is ",k1); */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* strcpy(gplotlabel,"("); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* /\*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* 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]; *\/ */ | |
| /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ | |
| /* 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][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); */ | |
| /* } */ | |
| strcpy(gplotlabel+strlen(gplotlabel),")"); | strcpy(gplotlabel+strlen(gplotlabel),")"); |
| fprintf(ficgp,"\n#\n"); | fprintf(ficgp,"\n#\n"); |
| fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),k1,ng,nres); | fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" ",subdirf2(optionfilefiname,"PE_"),k1,ng,nres); |
| Line 8643 set ter svg size 640, 480\nunset log y\n | Line 8984 set ter svg size 640, 480\nunset log y\n |
| } /* end k2 */ | } /* end k2 */ |
| /* fprintf(ficgp,"\n set out; unset label;set key default;\n"); */ | /* fprintf(ficgp,"\n set out; unset label;set key default;\n"); */ |
| fprintf(ficgp,"\n set out; unset title;set key default;\n"); | fprintf(ficgp,"\n set out; unset title;set key default;\n"); |
| } /* end k1 */ | } /* end resultline */ |
| } /* end ng */ | } /* end ng */ |
| /* avoid: */ | /* avoid: */ |
| fflush(ficgp); | fflush(ficgp); |
| Line 8966 void prevforecast(char fileres[], double | Line 9307 void prevforecast(char fileres[], double |
| /* if (h==(int)(YEARM*yearp)){ */ | /* if (h==(int)(YEARM*yearp)){ */ |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
| for(k=1; k<=i1;k++){ | for(k=1; k<=i1;k++){ /* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) */ |
| if(i1 != 1 && TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| if(invalidvarcomb[k]){ | if(invalidvarcomb[k]){ |
| Line 8975 void prevforecast(char fileres[], double | Line 9316 void prevforecast(char fileres[], double |
| } | } |
| fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); | fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcoveff;j++) { |
| fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); */ |
| fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | |
| } | } |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | 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," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
| Line 9005 void prevforecast(char fileres[], double | Line 9347 void prevforecast(char fileres[], double |
| } | } |
| fprintf(ficresf,"\n"); | fprintf(ficresf,"\n"); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */ |
| fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* TnsdVar[Tvaraff] correct */ | |
| fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); | fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); |
| for(j=1; j<=nlstate+ndeath;j++) { | for(j=1; j<=nlstate+ndeath;j++) { |
| Line 9115 void prevforecast(char fileres[], double | Line 9458 void prevforecast(char fileres[], double |
| } | } |
| fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); | fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcoveff;j++) { |
| fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| } | } |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | 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," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
| Line 9151 void prevforecast(char fileres[], double | Line 9494 void prevforecast(char fileres[], double |
| } | } |
| fprintf(ficresfb,"\n"); | fprintf(ficresfb,"\n"); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); | fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); |
| for(i=1; i<=nlstate+ndeath;i++) { | for(i=1; i<=nlstate+ndeath;i++) { |
| ppij=0.;ppi=0.; | ppij=0.;ppi=0.; |
| Line 9210 void prevforecast(char fileres[], double | Line 9553 void prevforecast(char fileres[], double |
| i1=pow(2,cptcoveff); | i1=pow(2,cptcoveff); |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ | k=TKresult[nres]; |
| /* for(k=1; k<=i1;k++){ /\* We find the combination equivalent to result line values of dummies *\/ */ | |
| if(i1 != 1 && TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| fprintf(ficresvpl,"\n#****** "); | fprintf(ficresvpl,"\n#****** "); |
| printf("\n#****** "); | printf("\n#****** "); |
| fprintf(ficlog,"\n#****** "); | fprintf(ficlog,"\n#****** "); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcovs;j++) { |
| fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresvpl,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficlog,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| } | /* fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | /* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | } |
| fprintf(ficresvpl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| } | /* fprintf(ficresvpl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| /* fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* } */ | |
| fprintf(ficresvpl,"******\n"); | fprintf(ficresvpl,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| fprintf(ficlog,"******\n"); | fprintf(ficlog,"******\n"); |
| Line 9267 void prevforecast(char fileres[], double | Line 9613 void prevforecast(char fileres[], double |
| i1=pow(2,cptcoveff); | i1=pow(2,cptcoveff); |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ | k=TKresult[nres]; |
| if(i1 != 1 && TKresult[nres]!= k) | /* for(k=1; k<=i1;k++){ */ |
| continue; | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| /* continue; */ | |
| fprintf(ficresvbl,"\n#****** "); | fprintf(ficresvbl,"\n#****** "); |
| printf("\n#****** "); | printf("\n#****** "); |
| fprintf(ficlog,"\n#****** "); | fprintf(ficlog,"\n#****** "); |
| for(j=1;j<=cptcoveff;j++) { | for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ |
| fprintf(ficresvbl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | printf(" V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresvbl," V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficlog," V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| } | /* for(j=1;j<=cptcoveff;j++) { */ |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | /* fprintf(ficresvbl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficresvbl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* } */ |
| /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ | |
| /* printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* fprintf(ficresvbl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| } | } |
| fprintf(ficresvbl,"******\n"); | fprintf(ficresvbl,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 10113 int decoderesult( char resultline[], int | Line 10464 int decoderesult( char resultline[], int |
| int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=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 resultmodel[MAXLINE]; */ |
| int modelresult[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]; |
| removefirstspace(&resultline); | removefirstspace(&resultline); |
| printf("decoderesult:%s\n",resultline); | |
| if (strstr(resultline,"v") !=0){ | strcpy(resultsav,resultline); |
| printf("Error. 'v' must be in upper case 'V' result: %s ",resultline); | printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline); |
| fprintf(ficlog,"Error. 'v' must be in upper case result: %s ",resultline);fflush(ficlog); | |
| return 1; | |
| } | |
| trimbb(resultsav, 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'=' in this resultline */ |
| } | } |
| if(j == 0){ /* Resultline but no = */ | if(j == 0){ /* Resultline but no = */ |
| TKresult[nres]=0; /* Combination for the nresult and the model */ | TKresult[nres]=0; /* Combination for the nresult and the model */ |
| return (0); | return (0); |
| } | } |
| if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ | if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
| printf("ERROR: the number of variables in this result line, %d, differs from the number of variables used in the model line, %d.\n",j, cptcovs); | printf("ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
| fprintf(ficlog,"ERROR: the number of variables in the resultline, %d, differs from the number of variables used in the model line, %d.\n",j, cptcovs); | fprintf(ficlog,"ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
| /* return 1;*/ | |
| } | } |
| for(k=1; k<=j;k++){ /* Loop on any covariate of the result line */ | for(k=1; k<=j;k++){ /* Loop on any covariate of the RESULT LINE */ |
| if(nbocc(resultsav,'=') >1){ | if(nbocc(resultsav,'=') >1){ |
| cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' (stra is the rest of the resultline to be analyzed in the next loop *//* resultsav= "V4=1 V5=25.1 V3=0" stra= "V5=25.1 V3=0" strb= "V4=1" */ | cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' (stra is the rest of the resultline to be analyzed in the next loop *//* resultsav= "V4=1 V5=25.1 V3=0" stra= "V5=25.1 V3=0" strb= "V4=1" */ |
| /* If resultsav= "V4= 1 V5=25.1 V3=0" with a blank then strb="V4=" and stra="1 V5=25.1 V3=0" */ | |
| cutl(strc,strd,strb,'='); /* strb:"V4=1" strc="1" strd="V4" */ | cutl(strc,strd,strb,'='); /* strb:"V4=1" strc="1" strd="V4" */ |
| /* If a blank, then strc="V4=" and strd='\0' */ | |
| if(strc[0]=='\0'){ | |
| printf("Error in resultline, probably a blank after the \"%s\", \"result:%s\", stra=\"%s\" resultsav=\"%s\"\n",strb,resultline, stra, resultsav); | |
| fprintf(ficlog,"Error in resultline, probably a blank after the \"V%s=\", resultline=%s\n",strb,resultline); | |
| return 1; | |
| } | |
| }else | }else |
| cutl(strc,strd,resultsav,'='); | cutl(strc,strd,resultsav,'='); |
| Tvalsel[k]=atof(strc); /* 1 */ /* Tvalsel of k is the float value of the kth covariate appearing in this result line */ | Tvalsel[k]=atof(strc); /* 1 */ /* Tvalsel of k is the float value of the kth covariate appearing in this result line */ |
| Line 10151 int decoderesult( char resultline[], int | Line 10507 int decoderesult( char resultline[], int |
| strcpy(resultsav,stra); /* and analyzes it */ | strcpy(resultsav,stra); /* and analyzes it */ |
| } | } |
| /* Checking for missing or useless values in comparison of current model needs */ | /* Checking for missing or useless values in comparison of current model needs */ |
| for(k1=1; k1<= cptcovt ;k1++){ /* Loop on model. model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | /* Feeds resultmodel[nres][k1]=k2 for k1th product covariate with age in the model equation fed by the index k2 of the resutline*/ |
| if(Typevar[k1]==0){ /* Single covariate in model *//*0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ | for(k1=1; k1<= cptcovt ;k1++){ /* Loop on MODEL LINE V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| if(Typevar[k1]==0){ /* Single covariate in model */ | |
| /* 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ | |
| match=0; | match=0; |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
| if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
| modelresult[k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ | modelresult[nres][k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
| match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ | match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
| break; | break; |
| } | } |
| } | } |
| if(match == 0){ | if(match == 0){ |
| printf("Error in result line: V%d is missing in result: %s according to model=%s\n",k1, resultline, model); | printf("Error in result line (Dummy single): V%d is missing in result: %s according to model=%s. Tvar[k1=%d]=%d is different from Tvarsel[k2=%d]=%d.\n",Tvar[k1], resultline, model,k1, Tvar[k1], k2, Tvarsel[k2]); |
| fprintf(ficlog,"Error in result line: V%d is missing in result: %s according to model=%s\n",k1, resultline, model); | fprintf(ficlog,"Error in result line (Dummy single): V%d is missing in result: %s according to model=%s\n",Tvar[k1], resultline, model); |
| return 1; | return 1; |
| } | } |
| } | }else if(Typevar[k1]==1){ /* Product with age We want to get the position k2 in the resultline of the product k1 in the model line*/ |
| } | /* We feed resultmodel[k1]=k2; */ |
| match=0; | |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. jth occurence of = signs in the result line. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | |
| if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | |
| modelresult[nres][k2]=k1;/* we found a Vn=1 corrresponding to Vn*age in the model modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ | |
| resultmodel[nres][k1]=k2; /* Added here */ | |
| printf("Decoderesult first modelresult[k2=%d]=%d (k1) V%d*AGE\n",k2,k1,Tvar[k1]); | |
| match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ | |
| break; | |
| } | |
| } | |
| if(match == 0){ | |
| printf("Error in result line (Product with age): V%d is missing in result: %s according to model=%s (Tvarsel[k2=%d]=%d)\n",Tvar[k1], resultline, model, k2, Tvarsel[k2]); | |
| fprintf(ficlog,"Error in result line (Product with age): V%d is missing in result: %s according to model=%s (Tvarsel[k2=%d]=%d)\n",Tvar[k1], resultline, model, k2, Tvarsel[k2]); | |
| return 1; | |
| } | |
| }else if(Typevar[k1]==2){ /* Product No age We want to get the position in the resultline of the product in the model line*/ | |
| /* resultmodel[nres][of such a Vn * Vm product k1] is not unique, so can't exist, we feed Tvard[k1][1] and [2] */ | |
| match=0; | |
| printf("Decoderesult very first Product Tvardk[k1=%d][1]=%d Tvardk[k1=%d][2]=%d V%d * V%d\n",k1,Tvardk[k1][1],k1,Tvardk[k1][2],Tvardk[k1][1],Tvardk[k1][2]); | |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | |
| if(Tvardk[k1][1]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | |
| /* modelresult[k2]=k1; */ | |
| printf("Decoderesult first Product modelresult[k2=%d]=%d (k1) V%d * \n",k2,k1,Tvarsel[k2]); | |
| match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ | |
| } | |
| } | |
| if(match == 0){ | |
| printf("Error in result line (Product without age first variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][1], resultline, model); | |
| fprintf(ficlog,"Error in result line (Product without age first variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][1], resultline, model); | |
| return 1; | |
| } | |
| match=0; | |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | |
| if(Tvardk[k1][2]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | |
| /* modelresult[k2]=k1;*/ | |
| printf("Decoderesult second Product modelresult[k2=%d]=%d (k1) * V%d \n ",k2,k1,Tvarsel[k2]); | |
| match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ | |
| break; | |
| } | |
| } | |
| if(match == 0){ | |
| printf("Error in result line (Product without age second variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][2], resultline, model); | |
| fprintf(ficlog,"Error in result line (Product without age second variable): V%d is missing in result : %s according to model=%s\n",Tvardk[k1][2], resultline, model); | |
| return 1; | |
| } | |
| }/* End of testing */ | |
| }/* End loop cptcovt */ | |
| /* Checking for missing or useless values in comparison of current model needs */ | /* Checking for missing or useless values in comparison of current model needs */ |
| for(k2=1; k2 <=j;k2++){ /* Loop on resultline variables: result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | /* Feeds resultmodel[nres][k1]=k2 for single covariate (k1) in the model equation */ |
| for(k2=1; k2 <=j;k2++){ /* j or cptcovs is the number of single covariates used either in the model line as well as in the result line (dummy or quantitative) | |
| * Loop on resultline variables: result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | |
| match=0; | match=0; |
| for(k1=1; k1<= cptcovt ;k1++){ /* loop on model: model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | for(k1=1; k1<= cptcovt ;k1++){ /* loop on model: model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| if(Typevar[k1]==0){ /* Single */ | if(Typevar[k1]==0){ /* Single only */ |
| if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ | if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ |
| resultmodel[nres][k1]=k2; /* k1th position in the model equation corresponds to k2th position in the result line. resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ | resultmodel[nres][k1]=k2; /* k1th position in the model equation corresponds to k2th position in the result line. resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ |
| modelresult[nres][k2]=k1; /* k1th position in the model equation corresponds to k2th position in the result line. modelresult[1]=2 modelresult[2]=1 modelresult[3]=3 remodelresult[4]=6 modelresult[5]=9 */ | |
| ++match; | ++match; |
| } | } |
| } | } |
| } | } |
| if(match == 0){ | if(match == 0){ |
| printf("Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); | printf("Error in result line: variable V%d is missing in model; result: %s, model=%s\n",Tvarsel[k2], resultline, model); |
| fprintf(ficlog,"Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); | fprintf(ficlog,"Error in result line: variable V%d is missing in model; result: %s, model=%s\n",Tvarsel[k2], resultline, model); |
| return 1; | return 1; |
| }else if(match > 1){ | }else if(match > 1){ |
| printf("Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); | printf("Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); |
| Line 10189 int decoderesult( char resultline[], int | Line 10597 int decoderesult( char resultline[], int |
| return 1; | return 1; |
| } | } |
| } | } |
| /* cptcovres=j /\* Number of variables in the resultline is equal to cptcovs and thus useless *\/ */ | |
| /* We need to deduce which combination number is chosen and save quantitative values */ | /* 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 */ | /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| /* nres=1st result line: V4=1 V5=25.1 V3=0 V2=8 V1=1 */ | /* nres=1st result line: V4=1 V5=25.1 V3=0 V2=8 V1=1 */ |
| Line 10208 int decoderesult( char resultline[], int | Line 10616 int decoderesult( char resultline[], int |
| /* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ | /* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ |
| /* V5*age V5 known which value for nres? */ | /* V5*age V5 known which value for nres? */ |
| /* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ | /* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ |
| for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* loop k1 on position in the model line (excluding product) */ | for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* cptcovt number of covariates (excluding 1 and age or age*age) in the MODEL equation. |
| * loop on position k1 in the MODEL LINE */ | |
| /* k counting number of combination of single dummies in the equation model */ | /* k counting number of combination of single dummies in the equation model */ |
| /* k4 counting single dummies in the equation model */ | /* k4 counting single dummies in the equation model */ |
| /* k4q counting single quantitatives in the equation model */ | /* k4q counting single quantitatives in the equation model */ |
| if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single */ | if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, k1 is sorting according to MODEL, but k3 to resultline */ |
| /* k4+1= position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ | /* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ |
| /* modelresult[k3]=k1: k3th position in the result line correspond to the k1 position in the model line */ | /* modelresult[k3]=k1: k3th position in the result line corresponds to the k1 position in the model line (doesn't work with products)*/ |
| /* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */ | /* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */ |
| /* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ | /* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ |
| /* k3 is the position in the nres result line of the k1th variable of the model equation */ | /* k3 is the position in the nres result line of the k1th variable of the model equation */ |
| /* Tvarsel[k3]: Name of the variable at the k3th position in the result line. */ | /* Tvarsel[k3]: Name of the variable at the k3th position in the result line. */ |
| /* Tvalsel[k3]: Value of the variable at the k3th position in the result line. */ | /* Tvalsel[k3]: Value of the variable at the k3th position in the result line. */ |
| /* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ | /* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ |
| /* Tvresult[nres][result_position]= id of the dummy variable at the result_position in the nres resultline */ | /* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
| /* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ | /* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
| /* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ | /* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
| k3= resultmodel[nres][k1]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ | k3= resultmodel[nres][k1]; /* From position k1 in model get position k3 in result line */ |
| k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ | /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ |
| k2=(int)Tvarsel[k3]; /* from position k3 in resultline get name k2: nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ | |
| k+=Tvalsel[k3]*pow(2,k4); /* nres=1 k1=2 Tvalsel[1]=1 (V4=1); k1=3 k3=2 Tvalsel[2]=0 (V3=0) */ | k+=Tvalsel[k3]*pow(2,k4); /* nres=1 k1=2 Tvalsel[1]=1 (V4=1); k1=3 k3=2 Tvalsel[2]=0 (V3=0) */ |
| TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ | TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][Name]=Value; stores the value into the name of the variable. */ |
| Tresult[nres][k4+1]=Tvalsel[k3];/* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) */ | /* Tinvresult[nres][4]=1 */ |
| Tvresult[nres][k4+1]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | /* Tresult[nres][k4+1]=Tvalsel[k3];/\* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) *\/ */ |
| Tresult[nres][k3]=Tvalsel[k3];/* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) */ | |
| /* Tvresult[nres][k4+1]=(int)Tvarsel[k3];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ | |
| Tvresult[nres][k3]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | |
| Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=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); | precov[nres][k1]=Tvalsel[k3]; /* Value from resultline of the variable at the k1 position in the model */ |
| printf("Decoderesult Dummy k=%d, k1=%d precov[nres=%d][k1=%d]=%.f V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k1, nres, k1,precov[nres][k1], k2, k3, (int)Tvalsel[k3], k4); | |
| k4++;; | k4++;; |
| }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Quantitative and single */ | }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Quantitative and single */ |
| /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ | /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ |
| /* Tqvresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ | /* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ |
| /* Tqinvresult[nres][Name of a quantitative variable]= value of the variable in the result line */ | /* Tqinvresult[nres][Name of a quantitative variable]= value of the variable in the result line */ |
| k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 25.1=k3q */ | k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 5 =k3q */ |
| k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ | k2q=(int)Tvarsel[k3q]; /* Name of variable at k3q th position in the resultline */ |
| Tqresult[nres][k4q+1]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ | /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ |
| Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ | /* Tqresult[nres][k4q+1]=Tvalsel[k3q]; /\* Tqresult[nres][1]=25.1 *\/ */ |
| /* Tvresult[nres][k4q+1]=(int)Tvarsel[k3q];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ | |
| /* Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /\* Tvqresult[nres][1]=5 *\/ */ | |
| Tqresult[nres][k3q]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ | |
| Tvresult[nres][k3q]=(int)Tvarsel[k3q];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | |
| Tvqresult[nres][k3q]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ | |
| Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ | Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
| TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ | TinvDoQresult[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]); | precov[nres][k1]=Tvalsel[k3q]; |
| printf("Decoderesult Quantitative nres=%d,precov[nres=%d][k1=%d]=%.f V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, nres, k1,precov[nres][k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); | |
| k4q++;; | k4q++;; |
| }else if( Dummy[k1]==2 ){ /* For dummy with age product */ | }else if( Dummy[k1]==2 ){ /* For dummy with age product */ |
| /* Tvar[k1]; */ /* Age variable */ | /* Tvar[k1]; */ /* Age variable */ |
| k3= resultmodel[nres][Tvar[k1]]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ | /* Wrong we want the value of variable name Tvar[k1] */ |
| k3= resultmodel[nres][k1]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ | |
| k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ | k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ |
| TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ | TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][4]=1 */ |
| printf("Decoderesult Dummy with age k=%d, k1=%d Tvar[%d]=V%d k2=Tvarsel[%d]=%d Tvalsel[%d]=%d\n",k, k1, k1, Tvar[k1], k3,(int)Tvarsel[k3], k3, (int)Tvalsel[k3]); | precov[nres][k1]=Tvalsel[k3]; |
| printf("Decoderesult Dummy with age k=%d, k1=%d precov[nres=%d][k1=%d]=%.f Tvar[%d]=V%d k2=Tvarsel[%d]=%d Tvalsel[%d]=%d\n",k, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k3,(int)Tvarsel[k3], k3, (int)Tvalsel[k3]); | |
| }else if( Dummy[k1]==3 ){ /* For quant with age product */ | }else if( Dummy[k1]==3 ){ /* For quant with age product */ |
| k3q= resultmodel[nres][Tvar[k1]]; /* resultmodel[1(V5)] = 25.1=k3q */ | k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 25.1=k3q */ |
| k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ | k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ |
| TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ | TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* TinvDoQresult[nres][5]=25.1 */ |
| printf("Decoderesult Quantitative with age nres=%d, k1=%d, Tvar[%d]=V%d V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, k1, k1, Tvar[k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); | precov[nres][k1]=Tvalsel[k3q]; |
| printf("Decoderesult Quantitative with age nres=%d, k1=%d, precov[nres=%d][k1=%d]=%f Tvar[%d]=V%d V(k2q=%d)= Tvarsel[%d]=%d, Tvalsel[%d]=%f\n",nres, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); | |
| }else if(Typevar[k1]==2 ){ /* For product quant or dummy (not with age) */ | }else if(Typevar[k1]==2 ){ /* For product quant or dummy (not with age) */ |
| printf("Decoderesult Quantitative or Dummy (not with age) nres=%d k1=%d Tvar[%d]=%d \n",nres, k1, k1, Tvar[k1]); | precov[nres][k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; |
| printf("Decoderesult Quantitative or Dummy (not with age) nres=%d k1=%d precov[nres=%d][k1=%d]=%.f V%d(=%.f) * V%d(=%.f) \n",nres, k1, nres, k1,precov[nres][k1], Tvardk[k1][1], TinvDoQresult[nres][Tvardk[k1][1]], Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][2]]); | |
| }else{ | }else{ |
| printf("Error Decodemodel probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); | printf("Error Decoderesult probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); |
| fprintf(ficlog,"Error Decodemodel probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); | fprintf(ficlog,"Error Decoderesult probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); |
| } | } |
| } | } |
| TKresult[nres]=++k; /* Combination for the nresult and the model */ | TKresult[nres]=++k; /* Number of combinations of dummies for the nresult and the model =Tvalsel[k3]*pow(2,k4) + 1*/ |
| return (0); | return (0); |
| } | } |
| Line 10424 int decodemodel( char model[], int lasto | Line 10849 int decodemodel( char model[], int lasto |
| 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 |
| thus after V4 we invent V5 and V6 because age*V3 will be computed in 4 | thus after V4 we invent V5 and V6 because age*V3 will be computed in 4 |
| Tvar[3=V1*V4]=4+1=5 Tvar[5=V3*V2]=4 + 2= 6, Tvar[4=age*V3]=4 etc */ | Tvar[3=V1*V4]=4+1=5 Tvar[5=V3*V2]=4 + 2= 6, Tvar[4=age*V3]=4 etc */ |
| /* Please remark that the new variables are model dependent */ | |
| /* If we have 4 variable but the model uses only 3, like in | |
| * model= V1 + age*V1 + V2 + V3 + age*V2 + age*V3 + V1*V2 + V1*V3 | |
| * k= 1 2 3 4 5 6 7 8 | |
| * Tvar[k]=1 1 2 3 2 3 (5 6) (and not 4 5 because of V4 missing) | |
| * Tage[kk] [1]= 2 [2]=5 [3]=6 kk=1 to cptcovage=3 | |
| * Tvar[Tage[kk]][1]=2 [2]=2 [3]=3 | |
| */ | |
| 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 10529 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 10962 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| modell[k].maintype= FTYPE; | modell[k].maintype= FTYPE; |
| modell[k].subtype= FQ; | modell[k].subtype= FQ; |
| nsq++; | nsq++; |
| TvarsQ[nsq]=Tvar[k]; | TvarsQ[nsq]=Tvar[k]; /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary see below */ |
| TvarsQind[nsq]=k; | TvarsQind[nsq]=k; /* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
| ncovf++; | ncovf++; |
| TvarF[ncovf]=Tvar[k]; | TvarF[ncovf]=Tvar[k]; |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| Line 10561 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 10994 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| modell[k].subtype= VQ; | modell[k].subtype= VQ; |
| ncovv++; /* Only simple time varying variables */ | ncovv++; /* Only simple time varying variables */ |
| nsq++; | nsq++; |
| TvarsQ[nsq]=Tvar[k]; /* k=1 Tvar=5 nsq=1 TvarsQ[1]=5 */ | TvarsQ[nsq]=Tvar[k]; /* k=1 Tvar=5 nsq=1 TvarsQ[1]=5 */ /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary here) */ |
| TvarsQind[nsq]=k; | TvarsQind[nsq]=k; /* For single quantitative covariate gives the model position of each single quantitative covariate *//* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
| TvarV[ncovv]=Tvar[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 */ | 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 */ |
| Line 11088 void syscompilerinfo(int logged) | Line 11521 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 (forward period or forward stable prevalence) --------------*/ | /*--------------- Prevalence limit (forward period or forward stable prevalence) --------------*/ |
| /* Computes the prevalence limit for each combination of the dummy covariates */ | |
| int i, j, k, i1, k4=0, nres=0 ; | 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; |
| Line 11116 int prevalence_limit(double *p, double * | Line 11550 int prevalence_limit(double *p, double * |
| i1=pow(2,cptcoveff); /* Number of combination 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 each combination k of dummy covariates in the model */ | /* for(k=1; k<=i1;k++){ /\* For each combination k of dummy covariates in the model *\/ */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| if(i1 != 1 && TKresult[nres]!= k) | k=TKresult[nres]; |
| continue; | /* if(i1 != 1 && TKresult[nres]!= k) /\* We found the combination k corresponding to the resultline value of dummies *\/ */ |
| /* continue; */ | |
| /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ | /* for(cptcov=1,k=0;cptcov<=i1;cptcov++){ */ |
| /* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ | /* for(cptcov=1,k=0;cptcov<=1;cptcov++){ */ |
| //for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ | //for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
| /* k=k+1; */ | /* k=k+1; */ |
| /* to clean */ | /* to clean */ |
| //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); | /*printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));*/ |
| fprintf(ficrespl,"#******"); | fprintf(ficrespl,"#******"); |
| printf("#******"); | printf("#******"); |
| fprintf(ficlog,"#******"); | fprintf(ficlog,"#******"); |
| for(j=1;j<=cptcoveff ;j++) {/* all covariates */ | for(j=1;j<=cptcovs ;j++) {/**< cptcovs number of SIMPLE covariates in the model or resultline V2+V1 =2 (dummy or quantit or time varying) */ |
| fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /* Here problem for varying dummy*/ | /* fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Here problem for varying dummy*\/ */ |
| printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| } | fprintf(ficrespl," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | fprintf(ficlog," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| fprintf(ficrespl," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | } |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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"); | fprintf(ficrespl,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| fprintf(ficlog,"******\n"); | fprintf(ficlog,"******\n"); |
| Line 11151 int prevalence_limit(double *p, double * | Line 11589 int prevalence_limit(double *p, double * |
| } | } |
| fprintf(ficrespl,"#Age "); | fprintf(ficrespl,"#Age "); |
| for(j=1;j<=cptcoveff;j++) { | /* for(j=1;j<=cptcoveff;j++) { */ |
| fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| /* } */ | |
| for(j=1;j<=cptcovs;j++) { /* New the quanti variable is added */ | |
| fprintf(ficrespl,"V%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | |
| } | } |
| for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); | for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); |
| fprintf(ficrespl,"Total Years_to_converge\n"); | 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, nres); | /**< Computes the prevalence limit in each live state at age x and for covariate combination (k and) nres */ |
| prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyearp, k, nres); /* Nicely done */ | |
| 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,Tvaraff[j])]); | /* fprintf(ficrespl,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for(j=1;j<=cptcovs;j++) | |
| fprintf(ficrespl,"%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][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]; |
| Line 11171 int prevalence_limit(double *p, double * | Line 11615 int prevalence_limit(double *p, double * |
| 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 */ | } /* nres */ |
| } /* nres */ | /* } /\* for each combination *\/ */ |
| return 0; | return 0; |
| } | } |
| Line 11217 int back_prevalence_limit(double *p, dou | Line 11661 int back_prevalence_limit(double *p, dou |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
| if(i1 != 1 && TKresult[nres]!= k) | if(i1 != 1 && TKresult[nres]!= k) |
| continue; | continue; |
| //printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); | /*printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));*/ |
| fprintf(ficresplb,"#******"); | fprintf(ficresplb,"#******"); |
| printf("#******"); | printf("#******"); |
| fprintf(ficlog,"#******"); | fprintf(ficlog,"#******"); |
| for(j=1;j<=cptcoveff ;j++) {/* all covariates */ | for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
| fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| } | } |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
| fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
| } | } |
| fprintf(ficresplb,"******\n"); | fprintf(ficresplb,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 11243 int back_prevalence_limit(double *p, dou | Line 11687 int back_prevalence_limit(double *p, dou |
| 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,Tvaraff[j])]); | fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[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"); |
| Line 11267 int back_prevalence_limit(double *p, dou | Line 11711 int back_prevalence_limit(double *p, dou |
| } | } |
| fprintf(ficresplb,"%.0f ",age ); | fprintf(ficresplb,"%.0f ",age ); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| tot=0.; | tot=0.; |
| for(i=1; i<=nlstate;i++){ | for(i=1; i<=nlstate;i++){ |
| tot += bprlim[i][i]; | tot += bprlim[i][i]; |
| Line 11287 int back_prevalence_limit(double *p, dou | Line 11731 int back_prevalence_limit(double *p, dou |
| int hPijx(double *p, int bage, int fage){ | int hPijx(double *p, int bage, int fage){ |
| /*------------- h Pij x at various ages ------------*/ | /*------------- h Pij x at various ages ------------*/ |
| /* to be optimized with precov */ | |
| int stepsize; | int stepsize; |
| int agelim; | int agelim; |
| int hstepm; | int hstepm; |
| Line 11297 int hPijx(double *p, int bage, int fage) | Line 11741 int hPijx(double *p, int bage, int fage) |
| double agedeb; | double agedeb; |
| double ***p3mat; | double ***p3mat; |
| strcpy(filerespij,"PIJ_"); strcat(filerespij,fileresu); | strcpy(filerespij,"PIJ_"); strcat(filerespij,fileresu); |
| if((ficrespij=fopen(filerespij,"w"))==NULL) { | if((ficrespij=fopen(filerespij,"w"))==NULL) { |
| printf("Problem with Pij resultfile: %s\n", filerespij); return 1; | printf("Problem with Pij resultfile: %s\n", filerespij); return 1; |
| fprintf(ficlog,"Problem with Pij resultfile: %s\n", filerespij); return 1; | fprintf(ficlog,"Problem with Pij resultfile: %s\n", filerespij); return 1; |
| } | } |
| printf("Computing pij: result on file '%s' \n", filerespij); | printf("Computing pij: result on file '%s' \n", filerespij); |
| fprintf(ficlog,"Computing pij: result on file '%s' \n", filerespij); | fprintf(ficlog,"Computing pij: result on file '%s' \n", filerespij); |
| stepsize=(int) (stepm+YEARM-1)/YEARM; | stepsize=(int) (stepm+YEARM-1)/YEARM; |
| /*if (stepm<=24) stepsize=2;*/ | /*if (stepm<=24) stepsize=2;*/ |
| agelim=AGESUP; | agelim=AGESUP; |
| hstepm=stepsize*YEARM; /* Every year of age */ | hstepm=stepsize*YEARM; /* Every year of age */ |
| hstepm=hstepm/stepm; /* Typically 2 years, = 2/6 months = 4 */ | hstepm=hstepm/stepm; /* Typically 2 years, = 2/6 months = 4 */ |
| /* hstepm=1; aff par mois*/ | /* hstepm=1; aff par mois*/ |
| pstamp(ficrespij); | pstamp(ficrespij); |
| fprintf(ficrespij,"#****** h Pij x Probability to be in state j at age x+h being in i at x "); | fprintf(ficrespij,"#****** h Pij x Probability to be in state j at age x+h being in i at x "); |
| 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(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ | k=TKresult[nres]; |
| if(i1 != 1 && TKresult[nres]!= k) | /* for(k=1; k<=i1;k++){ */ |
| continue; | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| fprintf(ficrespij,"\n#****** "); | /* continue; */ |
| for(j=1;j<=cptcoveff;j++) | fprintf(ficrespij,"\n#****** "); |
| fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | for(j=1;j<=cptcovs;j++){ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | fprintf(ficrespij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* fprintf(ficrespij,"@wV%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ |
| } | /* printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ |
| fprintf(ficrespij,"******\n"); | /* fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ |
| } | |
| for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ | fprintf(ficrespij,"******\n"); |
| nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ | |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */ | for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ |
| nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ | |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */ |
| p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); | /* nhstepm=nhstepm*YEARM; aff par mois*/ |
| oldm=oldms;savm=savms; | |
| hpxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k, nres); | p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| fprintf(ficrespij,"# Cov Agex agex+h hpijx with i,j="); | oldm=oldms;savm=savms; |
| hpxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k, nres); | |
| fprintf(ficrespij,"# Cov Agex agex+h hpijx with i,j="); | |
| for(i=1; i<=nlstate;i++) | |
| for(j=1; j<=nlstate+ndeath;j++) | |
| fprintf(ficrespij," %1d-%1d",i,j); | |
| fprintf(ficrespij,"\n"); | |
| for (h=0; h<=nhstepm; h++){ | |
| /*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ | |
| fprintf(ficrespij,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); | |
| 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(ficrespij," %1d-%1d",i,j); | fprintf(ficrespij," %.5f", p3mat[i][j][h]); |
| fprintf(ficrespij,"\n"); | |
| for (h=0; h<=nhstepm; h++){ | |
| /*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ | |
| fprintf(ficrespij,"%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(ficrespij," %.5f", p3mat[i][j][h]); | |
| fprintf(ficrespij,"\n"); | |
| } | |
| free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); | |
| fprintf(ficrespij,"\n"); | fprintf(ficrespij,"\n"); |
| } | } |
| /*}*/ | free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| fprintf(ficrespij,"\n"); | |
| } | } |
| return 0; | } |
| /*}*/ | |
| return 0; | |
| } | } |
| int hBijx(double *p, int bage, int fage, double ***prevacurrent){ | int hBijx(double *p, int bage, int fage, double ***prevacurrent){ |
| /*------------- h Bij x at various ages ------------*/ | /*------------- h Bij x at various ages ------------*/ |
| /* To be optimized with precov */ | |
| int stepsize; | int stepsize; |
| /* int agelim; */ | /* int agelim; */ |
| int ageminl; | int ageminl; |
| Line 11399 int hPijx(double *p, int bage, int fage) | Line 11845 int hPijx(double *p, int bage, int fage) |
| /* /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */ | /* /\*for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){*\/ */ |
| /* k=k+1; */ | /* k=k+1; */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | k=TKresult[nres]; |
| if(i1 != 1 && TKresult[nres]!= k) | /* for(k=1; k<=i1;k++){ /\* For any combination of dummy covariates, fixed and varying *\/ */ |
| continue; | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| fprintf(ficrespijb,"\n#****** "); | /* continue; */ |
| for(j=1;j<=cptcoveff;j++) | fprintf(ficrespijb,"\n#****** "); |
| fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | for(j=1;j<=cptcovs;j++){ |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | fprintf(ficrespij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | /* for(j=1;j<=cptcoveff;j++) */ |
| } | /* fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficrespijb,"******\n"); | /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ |
| if(invalidvarcomb[k]){ /* Is it necessary here? */ | /* fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); | } |
| continue; | fprintf(ficrespijb,"******\n"); |
| } | if(invalidvarcomb[k]){ /* Is it necessary here? */ |
| fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); | |
| /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ | continue; |
| for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ | } |
| /* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ | |
| nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm+0.1)-1; /* Typically 20 years = 20*12/6=40 or 55*12/24=27.5-1.1=>27 */ | /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 or 28*/ | for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ |
| /* nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /\* Typically 20 years = 20*12/6=40 *\/ */ | |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | nhstepm=(int) rint((agedeb-ageminl)*YEARM/stepm+0.1)-1; /* Typically 20 years = 20*12/6=40 or 55*12/24=27.5-1.1=>27 */ |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 or 28*/ | |
| p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); /* We can't have it at an upper level because of nhstepm */ | |
| /* and memory limitations if stepm is small */ | /* nhstepm=nhstepm*YEARM; aff par mois*/ |
| /* oldm=oldms;savm=savms; */ | p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); /* We can't have it at an upper level because of nhstepm */ |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ | /* and memory limitations if stepm is small */ |
| hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k, nres);/* Bug valgrind */ | |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ | /* oldm=oldms;savm=savms; */ |
| fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j="); | /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
| hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k, nres);/* Bug valgrind */ | |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ | |
| fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j="); | |
| for(i=1; i<=nlstate;i++) | |
| for(j=1; j<=nlstate+ndeath;j++) | |
| fprintf(ficrespijb," %1d-%1d",i,j); | |
| fprintf(ficrespijb,"\n"); | |
| for (h=0; h<=nhstepm; h++){ | |
| /*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ | |
| 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(i=1; i<=nlstate;i++) |
| for(j=1; j<=nlstate+ndeath;j++) | for(j=1; j<=nlstate+ndeath;j++) |
| fprintf(ficrespijb," %1d-%1d",i,j); | fprintf(ficrespijb," %.5f", p3mat[i][j][h]);/* Bug valgrind */ |
| fprintf(ficrespijb,"\n"); | |
| for (h=0; h<=nhstepm; h++){ | |
| /*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ | |
| 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]);/* Bug valgrind */ | |
| fprintf(ficrespijb,"\n"); | |
| } | |
| free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); | |
| fprintf(ficrespijb,"\n"); | fprintf(ficrespijb,"\n"); |
| } /* end age deb */ | } |
| } /* end combination */ | free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| fprintf(ficrespijb,"\n"); | |
| } /* end age deb */ | |
| /* } /\* end combination *\/ */ | |
| } /* end nres */ | } /* end nres */ |
| return 0; | return 0; |
| } /* hBijx */ | } /* hBijx */ |
| Line 11499 int main(int argc, char *argv[]) | Line 11948 int main(int argc, char *argv[]) |
| char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; | char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
| char modeltemp[MAXLINE]; | char modeltemp[MAXLINE]; |
| char resultline[MAXLINE]; | char resultline[MAXLINE], resultlineori[MAXLINE]; |
| char pathr[MAXLINE], pathimach[MAXLINE]; | char pathr[MAXLINE], pathimach[MAXLINE]; |
| char *tok, *val; /* pathtot */ | char *tok, *val; /* pathtot */ |
| int firstobs=1, lastobs=10; /* nobs = lastobs-firstobs declared globally ;*/ | /* int firstobs=1, lastobs=10; /\* nobs = lastobs-firstobs declared globally ;*\/ */ |
| int c, h , cpt, c2; | int c, h , cpt, c2; |
| int jl=0; | int jl=0; |
| int i1, j1, jk, stepsize=0; | int i1, j1, jk, stepsize=0; |
| Line 12126 Please run with mle=-1 to get a correct | Line 12575 Please run with mle=-1 to get a correct |
| mint=matrix(1,maxwav,firstobs,lastobs); | mint=matrix(1,maxwav,firstobs,lastobs); |
| anint=matrix(1,maxwav,firstobs,lastobs); | anint=matrix(1,maxwav,firstobs,lastobs); |
| s=imatrix(1,maxwav+1,firstobs,lastobs); /* s[i][j] health state for wave i and individual j */ | s=imatrix(1,maxwav+1,firstobs,lastobs); /* s[i][j] health state for wave i and individual j */ |
| printf("BUG ncovmodel=%d NCOVMAX=%d 2**ncovmodel=%f BUG\n",ncovmodel,NCOVMAX,pow(2,ncovmodel)); | /* printf("BUG ncovmodel=%d NCOVMAX=%d 2**ncovmodel=%f BUG\n",ncovmodel,NCOVMAX,pow(2,ncovmodel)); */ |
| tab=ivector(1,NCOVMAX); | tab=ivector(1,NCOVMAX); |
| ncodemax=ivector(1,NCOVMAX); /* Number of code per covariate; if O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ | ncodemax=ivector(1,NCOVMAX); /* Number of code per covariate; if O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ |
| ncodemaxwundef=ivector(1,NCOVMAX); /* Number of code per covariate; if - 1 O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ | ncodemaxwundef=ivector(1,NCOVMAX); /* Number of code per covariate; if - 1 O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ |
| Line 12146 Please run with mle=-1 to get a correct | Line 12595 Please run with mle=-1 to get a correct |
| Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ | Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ |
| TvarsDind=ivector(1,NCOVMAX); /* */ | TvarsDind=ivector(1,NCOVMAX); /* */ |
| TnsdVar=ivector(1,NCOVMAX); /* */ | TnsdVar=ivector(1,NCOVMAX); /* */ |
| /* for(i=1; i<=NCOVMAX;i++) TnsdVar[i]=3; */ | |
| TvarsD=ivector(1,NCOVMAX); /* */ | TvarsD=ivector(1,NCOVMAX); /* */ |
| TvarsQind=ivector(1,NCOVMAX); /* */ | TvarsQind=ivector(1,NCOVMAX); /* */ |
| TvarsQ=ivector(1,NCOVMAX); /* */ | TvarsQ=ivector(1,NCOVMAX); /* */ |
| Line 12268 Please run with mle=-1 to get a correct | Line 12718 Please run with mle=-1 to get a correct |
| Ndum =ivector(-1,NCOVMAX); | Ndum =ivector(-1,NCOVMAX); |
| cptcoveff=0; | cptcoveff=0; |
| if (ncovmodel-nagesqr > 2 ){ /* That is if covariate other than cst, age and age*age */ | if (ncovmodel-nagesqr > 2 ){ /* That is if covariate other than cst, age and age*age */ |
| tricode(&cptcoveff,Tvar,nbcode,imx, Ndum); /**< Fills nbcode[Tvar[j]][l]; */ | tricode(&cptcoveff,Tvar,nbcode,imx, Ndum); /**< Fills nbcode[Tvar[j]][l]; as well as calculate cptcoveff or number of total effective dummy covariates*/ |
| } | } |
| ncovcombmax=pow(2,cptcoveff); | ncovcombmax=pow(2,cptcoveff); |
| Line 12407 Title=%s <br>Datafile=%s Firstpass=%d La | Line 12857 Title=%s <br>Datafile=%s Firstpass=%d La |
| optionfilehtmcov,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); | optionfilehtmcov,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
| } | } |
| fprintf(fichtm,"<html><head>\n<head>\n<meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>IMaCh %s</title></head>\n <body><font size=\"7\"><a href=http:/euroreves.ined.fr/imach>IMaCh for Interpolated Markov Chain</a> </font><br>\n<font size=\"3\">Sponsored by Copyright (C) 2002-2015 <a href=http://www.ined.fr>INED</a>-EUROREVES-Institut de longévité-2013-2016-Japan Society for the Promotion of Sciences 日本学術振興会 (<a href=https://www.jsps.go.jp/english/e-grants/>Grant-in-Aid for Scientific Research 25293121</a>) - <a href=https://software.intel.com/en-us>Intel Software 2015-2018</a></font><br> \ | fprintf(fichtm,"<html><head>\n<meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\ |
| <hr size=\"2\" color=\"#EC5E5E\"> \n\ | <title>IMaCh %s</title></head>\n\ |
| <body><font size=\"7\"><a href=http:/euroreves.ined.fr/imach>IMaCh for Interpolated Markov Chain</a> </font><br>\n\ | |
| <font size=\"3\">Sponsored by Copyright (C) 2002-2015 <a href=http://www.ined.fr>INED</a>\ | |
| -EUROREVES-Institut de longévité-2013-2022-Japan Society for the Promotion of Sciences 日本学術振興会 \ | |
| (<a href=https://www.jsps.go.jp/english/e-grants/>Grant-in-Aid for Scientific Research 25293121</a>) - \ | |
| <a href=https://software.intel.com/en-us>Intel Software 2015-2018</a></font><br> \n", optionfilehtm); | |
| fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\"> \n\ | |
| <font size=\"2\">IMaCh-%s <br> %s</font> \ | <font size=\"2\">IMaCh-%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\ | This file: <a href=\"%s\">%s</a></br>Title=%s <br>Datafile=<a href=\"%s\">%s</a> Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n\ |
| \n\ | \n\ |
| <hr size=\"2\" color=\"#EC5E5E\">\ | <hr size=\"2\" color=\"#EC5E5E\">\ |
| <ul><li><h4>Parameter files</h4>\n\ | <ul><li><h4>Parameter files</h4>\n\ |
| Line 12420 Title=%s <br>Datafile=%s Firstpass=%d La | Line 12877 Title=%s <br>Datafile=%s Firstpass=%d La |
| - Log file of the run: <a href=\"%s\">%s</a><br>\n\ | - Log file of the run: <a href=\"%s\">%s</a><br>\n\ |
| - Gnuplot file name: <a href=\"%s\">%s</a><br>\n\ | - Gnuplot file name: <a href=\"%s\">%s</a><br>\n\ |
| - Date and time at start: %s</ul>\n",\ | - Date and time at start: %s</ul>\n",\ |
| optionfilehtm,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model,\ | version,fullversion,optionfilehtm,optionfilehtm,title,datafile,datafile,firstpass,lastpass,stepm, weightopt, model, \ |
| optionfilefiname,optionfilext,optionfilefiname,optionfilext,\ | optionfilefiname,optionfilext,optionfilefiname,optionfilext,\ |
| fileres,fileres,\ | fileres,fileres,\ |
| filelog,filelog,optionfilegnuplot,optionfilegnuplot,strstart); | filelog,filelog,optionfilegnuplot,optionfilegnuplot,strstart); |
| Line 12734 Please run with mle=-1 to get a correct | Line 13191 Please run with mle=-1 to get a correct |
| globpr=1; /* again, to print the individual contributions using computed gpimx and gsw */ | globpr=1; /* again, to print the individual contributions using computed gpimx and gsw */ |
| likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ | likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ |
| printf("Second Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw); | printf("Second Likeli=%12.6f ipmx=%ld sw=%12.6f",fretone,ipmx,sw); |
| /* exit(0); */ | |
| for (k=1; k<=npar;k++) | for (k=1; k<=npar;k++) |
| printf(" %d %8.5f",k,p[k]); | printf(" %d %8.5f",k,p[k]); |
| printf("\n"); | printf("\n"); |
| Line 13078 Please run with mle=-1 to get a correct | Line 13536 Please run with mle=-1 to get a correct |
| } | } |
| /* Results */ | /* Results */ |
| /* Value of covariate in each resultine will be compututed (if product) and sorted according to model rank */ | |
| /* It is precov[] because we need the varying age in order to compute the real cov[] of the model equation */ | |
| precov=matrix(1,MAXRESULTLINESPONE,1,NCOVMAX+1); | |
| endishere=0; | endishere=0; |
| nresult=0; | nresult=0; |
| parameterline=0; | parameterline=0; |
| Line 13151 Please run with mle=-1 to get a correct | Line 13612 Please run with mle=-1 to get a correct |
| } | } |
| break; | break; |
| case 13: | case 13: |
| num_filled=sscanf(line,"result:%[^\n]\n",resultline); | num_filled=sscanf(line,"result:%[^\n]\n",resultlineori); |
| nresult++; /* Sum of resultlines */ | nresult++; /* Sum of resultlines */ |
| printf("Result %d: result:%s\n",nresult, resultline); | printf("Result %d: result:%s\n",nresult, resultlineori); |
| /* removefirstspace(&resultlineori); */ | |
| if(strstr(resultlineori,"v") !=0){ | |
| printf("Error. 'v' must be in upper case 'V' result: %s ",resultlineori); | |
| fprintf(ficlog,"Error. 'v' must be in upper case result: %s ",resultlineori);fflush(ficlog); | |
| return 1; | |
| } | |
| trimbb(resultline, resultlineori); /* Suppressing double blank in the resultline */ | |
| printf("Decoderesult resultline=\"%s\" resultlineori=\"%s\"\n", resultline, resultlineori); | |
| if(nresult > MAXRESULTLINESPONE-1){ | if(nresult > MAXRESULTLINESPONE-1){ |
| printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); | printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); |
| fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); | fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); |
| goto end; | goto end; |
| } | } |
| if(!decoderesult(resultline, nresult)){ /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ | if(!decoderesult(resultline, nresult)){ /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ |
| fprintf(ficparo,"result: %s\n",resultline); | fprintf(ficparo,"result: %s\n",resultline); |
| fprintf(ficres,"result: %s\n",resultline); | fprintf(ficres,"result: %s\n",resultline); |
| Line 13262 Please run with mle=-1 to get a correct | Line 13733 Please run with mle=-1 to get a correct |
| /*--------------- Prevalence limit (period or stable prevalence) --------------*/ | /*--------------- Prevalence limit (period or stable prevalence) --------------*/ |
| /*#include "prevlim.h"*/ /* Use ficrespl, ficlog */ | /*#include "prevlim.h"*/ /* Use ficrespl, ficlog */ |
| prlim=matrix(1,nlstate,1,nlstate); | prlim=matrix(1,nlstate,1,nlstate); |
| /* Computes the prevalence limit for each combination k of the dummy covariates by calling prevalim(k) */ | |
| prevalence_limit(p, prlim, ageminpar, agemaxpar, ftolpl, &ncvyear); | prevalence_limit(p, prlim, ageminpar, agemaxpar, ftolpl, &ncvyear); |
| fclose(ficrespl); | fclose(ficrespl); |
| /*------------- h Pij x at various ages ------------*/ | /*------------- h Pij x at various ages ------------*/ |
| /*#include "hpijx.h"*/ | /*#include "hpijx.h"*/ |
| /** h Pij x Probability to be in state j at age x+h being in i at x, for each combination k of dummies in the model line or to nres?*/ | |
| /* calls hpxij with combination k */ | |
| hPijx(p, bage, fage); | hPijx(p, bage, fage); |
| fclose(ficrespij); | fclose(ficrespij); |
| /* ncovcombmax= pow(2,cptcoveff); */ | /* ncovcombmax= pow(2,cptcoveff); */ |
| /*-------------- Variance of one-step probabilities---*/ | /*-------------- Variance of one-step probabilities for a combination ij or for nres ?---*/ |
| 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); |
| Line 13392 Please run with mle=-1 to get a correct | Line 13866 Please run with mle=-1 to get a correct |
| fprintf(ficreseij,"\n#****** "); | fprintf(ficreseij,"\n#****** "); |
| printf("\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,Tvaraff[j])]); | fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| } | } |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | printf(" V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ |
| fprintf(ficreseij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | fprintf(ficreseij,"V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); |
| } | } |
| fprintf(ficreseij,"******\n"); | fprintf(ficreseij,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 13415 Please run with mle=-1 to get a correct | Line 13889 Please run with mle=-1 to get a correct |
| /*---------- State-specific expectancies and variances ------------*/ | /*---------- State-specific expectancies and variances ------------*/ |
| /* Should be moved in a function */ | |
| 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 13454 Please run with mle=-1 to get a correct | Line 13928 Please run with mle=-1 to get a correct |
| i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ | i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline, find the combination and output results according to the values of dummies and then quanti. */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying. For each nres and each value at position k |
| if(i1 != 1 && TKresult[nres]!= k) | * we know Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline |
| * Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline | |
| * and Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ | |
| /* */ | |
| if(i1 != 1 && TKresult[nres]!= k) /* TKresult[nres] is the combination of this nres resultline. All the i1 combinations are not output */ | |
| continue; | continue; |
| printf("\n# model %s \n#****** Result for:", model); | printf("\n# model %s \n#****** Result for:", model); |
| fprintf(ficrest,"\n# model %s \n#****** Result for:", model); | fprintf(ficrest,"\n# model %s \n#****** Result for:", model); |
| fprintf(ficlog,"\n# model %s \n#****** Result for:", model); | fprintf(ficlog,"\n# model %s \n#****** Result for:", model); |
| for(j=1;j<=cptcoveff;j++){ | /* It might not be a good idea to mix dummies and quantitative */ |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* for(j=1;j<=cptcoveff;j++){ /\* j=resultpos. Could be a loop on cptcovs: number of single dummy covariate in the result line as well as in the model *\/ */ |
| fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | for(j=1;j<=cptcovs;j++){ /* j=resultpos. Could be a loop on cptcovs: number of single covariate (dummy or quantitative) in the result line as well as in the model */ |
| fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /\* Output by variables in the resultline *\/ */ |
| } | /* Tvaraff[j] is the name of the dummy variable in position j in the equation model: |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | * Tvaraff[1]@9={4, 3, 0, 0, 0, 0, 0, 0, 0}, in model=V5+V4+V3+V4*V3+V5*age |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | * (V5 is quanti) V4 and V3 are dummies |
| fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | * TnsdVar[4] is the position 1 and TnsdVar[3]=2 in codtabm(k,l)(V4 V3)=V4 V3 |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | * l=1 l=2 |
| } | * k=1 1 1 0 0 |
| * k=2 2 1 1 0 | |
| * k=3 [1] [2] 0 1 | |
| * k=4 2 2 1 1 | |
| * If nres=1 result: V3=1 V4=0 then k=3 and outputs | |
| * If nres=2 result: V4=1 V3=0 then k=2 and outputs | |
| * nres=1 =>k=3 j=1 V4= nbcode[4][codtabm(3,1)=1)=0; j=2 V3= nbcode[3][codtabm(3,2)=2]=1 | |
| * nres=2 =>k=2 j=1 V4= nbcode[4][codtabm(2,1)=2)=1; j=2 V3= nbcode[3][codtabm(2,2)=1]=0 | |
| */ | |
| /* Tvresult[nres][j] Name of the variable at position j in this resultline */ | |
| /* Tresult[nres][j] Value of this variable at position j could be a float if quantitative */ | |
| /* We give up with the combinations!! */ | |
| printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]); /* end if dummy or quanti */ | |
| if(Dummy[modelresult[nres][j]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to j in resultline */ | |
| printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficlog,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficrest,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ | |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | |
| }else{ | |
| printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); | |
| } | |
| /* fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| /* fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| }else if(Dummy[modelresult[nres][j]]==1){ /* Quanti variable */ | |
| /* For each selected (single) quantitative value */ | |
| printf(" V%d=%lg ",Tvqresult[nres][j],Tqresult[nres][j]); | |
| fprintf(ficlog," V%d=%lg ",Tvqresult[nres][j],Tqresult[nres][j]); | |
| fprintf(ficrest," V%d=%lg ",Tvqresult[nres][j],Tqresult[nres][j]); | |
| if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ | |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | |
| }else{ | |
| printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); | |
| } | |
| }else{ | |
| printf("Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| fprintf(ficlog,"Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| exit(1); | |
| } | |
| } /* End loop for each variable in the resultline */ | |
| /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ | |
| /* printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /\* Wrong j is not in the equation model *\/ */ | |
| /* fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | |
| /* } */ | |
| fprintf(ficrest,"******\n"); | fprintf(ficrest,"******\n"); |
| fprintf(ficlog,"******\n"); | fprintf(ficlog,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| fprintf(ficresstdeij,"\n#****** "); | fprintf(ficresstdeij,"\n#****** "); |
| fprintf(ficrescveij,"\n#****** "); | fprintf(ficrescveij,"\n#****** "); |
| /* It could have been: for(j=1;j<=cptcoveff;j++) {printf("V=%d=%lg",Tvresult[nres][cpt],TinvDoQresult[nres][Tvresult[nres][cpt]]);} */ | |
| /* But it won't be sorted and depends on how the resultline is ordered */ | |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcoveff;j++) { |
| fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | fprintf(ficresstdeij,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); |
| fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); | /* fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| } | /* fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | } |
| fprintf(ficresstdeij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value, TvarsQind gives the position of a quantitative in model equation */ |
| fprintf(ficrescveij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | fprintf(ficresstdeij," V%d=%lg ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); |
| fprintf(ficrescveij," V%d=%lg ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); | |
| } | } |
| fprintf(ficresstdeij,"******\n"); | fprintf(ficresstdeij,"******\n"); |
| fprintf(ficrescveij,"******\n"); | fprintf(ficrescveij,"******\n"); |
| Line 13491 Please run with mle=-1 to get a correct | Line 14017 Please run with mle=-1 to get a correct |
| fprintf(ficresvij,"\n#****** "); | fprintf(ficresvij,"\n#****** "); |
| /* pstamp(ficresvij); */ | /* 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,Tvaraff[j])]); | fprintf(ficresvij,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); |
| /* fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[TnsdVar[Tvaraff[j]]])]); */ | |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | 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," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); /\* To solve *\/ */ |
| fprintf(ficresvij," V%d=%lg ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /* Solved */ | |
| } | } |
| fprintf(ficresvij,"******\n"); | fprintf(ficresvij,"******\n"); |
| Line 13524 Please run with mle=-1 to get a correct | Line 14052 Please run with mle=-1 to get a correct |
| 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); |
| else | else |
| fprintf(ficrest,"the age specific forward period (stable) prevalences in each health state \n"); | fprintf(ficrest,"the age specific forward period (stable) prevalences in each health state \n"); |
| fprintf(ficrest,"# Age popbased mobilav e.. (std) "); | fprintf(ficrest,"# Age popbased mobilav e.. (std) "); /* Adding covariate values? */ |
| 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"); */ |
| Line 13571 Please run with mle=-1 to get a correct | Line 14099 Please run with mle=-1 to get a correct |
| printf("done selection\n");fflush(stdout); | printf("done selection\n");fflush(stdout); |
| fprintf(ficlog,"done selection\n");fflush(ficlog); | fprintf(ficlog,"done selection\n");fflush(ficlog); |
| } /* End k selection */ | } /* End k selection or end covariate selection for nres */ |
| 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-covariance of forward period prevalence*/ | /* variance-covariance of forward period prevalence */ |
| varprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, prlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); | varprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, prlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); |
| Line 13655 Please run with mle=-1 to get a correct | Line 14183 Please run with mle=-1 to get a correct |
| free_ivector(Tmodelind,1,NCOVMAX); | free_ivector(Tmodelind,1,NCOVMAX); |
| free_ivector(TmodelInvind,1,NCOVMAX); | free_ivector(TmodelInvind,1,NCOVMAX); |
| free_ivector(TmodelInvQind,1,NCOVMAX); | free_ivector(TmodelInvQind,1,NCOVMAX); |
| free_matrix(precov, 1,MAXRESULTLINESPONE,1,NCOVMAX+1); /* Could be elsewhere ?*/ | |
| free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX); | free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX); |
| /* free_imatrix(codtab,1,100,1,10); */ | /* free_imatrix(codtab,1,100,1,10); */ |
| fflush(fichtm); | fflush(fichtm); |