|
|
| version 1.335, 2022/08/31 08:23:16 | version 1.343, 2022/09/14 14:22:16 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.343 2022/09/14 14:22:16 brouard | |
| Summary: version 0.99r39 | |
| * imach.c (Module): Version 0.99r39 with colored dummy covariates | |
| (fixed or time varying), using new last columns of | |
| ILK_parameter.txt file. | |
| Revision 1.342 2022/09/11 19:54:09 brouard | |
| Summary: 0.99r38 | |
| * imach.c (Module): Adding timevarying products of any kinds, | |
| should work before shifting cotvar from ncovcol+nqv columns in | |
| order to have a correspondance between the column of cotvar and | |
| the id of column. | |
| (Module): Some cleaning and adding covariates in ILK.txt | |
| Revision 1.341 2022/09/11 07:58:42 brouard | |
| Summary: Version 0.99r38 | |
| After adding change in cotvar. | |
| Revision 1.340 2022/09/11 07:53:11 brouard | |
| Summary: Version imach 0.99r37 | |
| * imach.c (Module): Adding timevarying products of any kinds, | |
| should work before shifting cotvar from ncovcol+nqv columns in | |
| order to have a correspondance between the column of cotvar and | |
| the id of column. | |
| Revision 1.339 2022/09/09 17:55:22 brouard | |
| Summary: version 0.99r37 | |
| * imach.c (Module): Many improvements for fixing products of fixed | |
| timevarying as well as fixed * fixed, and test with quantitative | |
| covariate. | |
| Revision 1.338 2022/09/04 17:40:33 brouard | |
| Summary: 0.99r36 | |
| * imach.c (Module): Now the easy runs i.e. without result or | |
| model=1+age only did not work. The defautl combination should be 1 | |
| and not 0 because everything hasn't been tranformed yet. | |
| 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 | Revision 1.335 2022/08/31 08:23:16 brouard |
| Summary: improvements... | Summary: improvements... |
| Line 1248 typedef struct { | Line 1301 typedef struct { |
| #define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */ | #define MAXLINE 2048 /* Was 256 and 1024. Overflow with 312 with 2 states and 4 covariates. Should be ok */ |
| #define GNUPLOTPROGRAM "gnuplot" | #define GNUPLOTPROGRAM "gnuplot" |
| #define GNUPLOTVERSION 5.1 | |
| double gnuplotversion=GNUPLOTVERSION; | |
| /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ | /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
| #define FILENAMELENGTH 256 | #define FILENAMELENGTH 256 |
| Line 1288 typedef struct { | Line 1343 typedef struct { |
| /* $State$ */ | /* $State$ */ |
| #include "version.h" | #include "version.h" |
| char version[]=__IMACH_VERSION__; | char version[]=__IMACH_VERSION__; |
| char copyright[]="August 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]; |
| int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ | int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
| int debugILK=0; /* debugILK is set by a #d in a comment line */ | |
| 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 */ |
| Line 1305 int cptcovprodnoage=0; /**< Number of co | Line 1361 int cptcovprodnoage=0; /**< Number of co |
| 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 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 ncovvt=0; /* Total number of effective (wave) varying covariates (dummy or quantitative or products [without age]) in the model */ | |
| int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ | int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
| int nsd=0; /**< Total number of single dummy variables (output) */ | int nsd=0; /**< Total number of single dummy variables (output) */ |
| int nsq=0; /**< Total number of single quantitative variables (output) */ | int nsq=0; /**< Total number of single quantitative variables (output) */ |
| Line 1320 int npar=NPARMAX; /* Number of parameter | Line 1377 int npar=NPARMAX; /* Number of parameter |
| int nlstate=2; /* Number of live states */ | int nlstate=2; /* Number of live states */ |
| int ndeath=1; /* Number of dead states */ | int ndeath=1; /* Number of dead states */ |
| int ncovmodel=0, ncovcol=0; /* Total number of covariables including constant a12*1 +b12*x ncovmodel=2 */ | int ncovmodel=0, ncovcol=0; /* Total number of covariables including constant a12*1 +b12*x ncovmodel=2 */ |
| int nqv=0, ntv=0, nqtv=0; /* Total number of quantitative variables, time variable (dummy), quantitative and time variable */ | int nqv=0, ntv=0, nqtv=0; /* Total number of quantitative variables, time variable (dummy), quantitative and time variable*/ |
| int ncovcolt=0; /* ncovcolt=ncovcol+nqv+ntv+nqtv; total of covariates in the data, not in the model equation*/ | |
| int popbased=0; | int popbased=0; |
| int *wav; /* Number of waves for this individuual 0 is possible */ | int *wav; /* Number of waves for this individuual 0 is possible */ |
| Line 1469 double **covar; /**< covar[j,i], value | Line 1527 double **covar; /**< covar[j,i], value |
| * covar=matrix(0,NCOVMAX,1,n); | * covar=matrix(0,NCOVMAX,1,n); |
| * cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*age; */ | * cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*age; */ |
| double **coqvar; /* Fixed quantitative covariate nqv */ | double **coqvar; /* Fixed quantitative covariate nqv */ |
| double ***cotvar; /* Time varying covariate ntv */ | double ***cotvar; /* Time varying covariate start at ncovcol + nqv + (1 to ntv) */ |
| double ***cotqvar; /* Time varying quantitative covariate itqv */ | double ***cotqvar; /* Time varying quantitative covariate itqv */ |
| double idx; | double idx; |
| int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ | int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ |
| Line 1481 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1539 int **nbcode, *Tvar; /**< model=V2 => Tv |
| * cptcovn number of covariates (not including constant and age or age*age) = number of plus sign + 1 = 10+1=11 | * cptcovn number of covariates (not including constant and age or age*age) = number of plus sign + 1 = 10+1=11 |
| * For time varying covariate, quanti or dummies | * For time varying covariate, quanti or dummies |
| * cotqvar[wav][iv(1 to nqtv)][i]= [1][12][i]=(V12) quanti | * cotqvar[wav][iv(1 to nqtv)][i]= [1][12][i]=(V12) quanti |
| * cotvar[wav][ntv+iv][i]= [3+(1 to nqtv)][i]=(V12) quanti | * cotvar[wav][ncovcol+nqv+ iv(1 to nqtv)][i]= [(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[Vk,i], value of the Vkth fixed covariate dummy or quanti for individual i: | * covar[Vk,i], value of the Vkth fixed covariate dummy or quanti for individual i: |
| Line 1494 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1552 int **nbcode, *Tvar; /**< model=V2 => Tv |
| # States 1=Coresidence, 2 Living alone, 3 Institution | # States 1=Coresidence, 2 Living alone, 3 Institution |
| # V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi | # 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 */ |
| /* k 1 2 3 4 5 6 7 8 9 */ | /* kmodel 1 2 3 4 5 6 7 8 9 */ |
| /*Typevar[k]= 0 0 0 2 1 0 2 1 0 *//*0 for simple covariate (dummy, quantitative,*/ | /*Typevar[k]= 0 0 0 2 1 0 2 1 0 *//*0 for simple covariate (dummy, quantitative,*/ |
| /* fixed or varying), 1 for age product, 2 for*/ | /* fixed or varying), 1 for age product, 2 for*/ |
| /* product */ | /* product */ |
| Line 1505 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1563 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[nsd] 2 3 9 */ /* position K of single dummy cova */ |
| /* nsq 1 2 */ /* Counting single quantit tv */ | /* nsq 1 2 */ /* Counting single quantit tv */ |
| /* TvarsQ[k] 5 2 */ /* Number of single quantitative cova */ | /* TvarsQ[k] 5 2 */ /* Number of single quantitative cova */ |
| /* TvarsQind 1 6 */ /* position K of single quantitative cova */ | /* TvarsQind 1 6 */ /* position K of single quantitative cova */ |
| Line 1561 int *TvarVD; /* TvarVD[1]=V5 in V5+V4+V3 | Line 1620 int *TvarVD; /* TvarVD[1]=V5 in V5+V4+V3 |
| int *TvarVDind; /* TvarVDind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ | int *TvarVDind; /* TvarVDind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
| int *TvarVQ; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ | int *TvarVQ; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
| int *TvarVQind; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ | int *TvarVQind; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
| int *TvarVV; /* We count ncovvt time varying covariates (single or products without age) and put their name into TvarVV */ | |
| int *TvarVVind; /* We count ncovvt time varying covariates (single or products without age) and put their name into TvarVV */ | |
| /*# ID V1 V2 weight birth death 1st s1 V3 V4 V5 2nd s2 */ | |
| /* model V1+V3+age*V1+age*V3+V1*V3 */ | |
| /* Tvar={1, 3, 1, 3, 6}, the 6 comes from the fact that there are already V1, V2, V3, V4, V5 native covariates */ | |
| /* TvarVV={3,1,3}, for V3 and then the product V1*V3 is decomposed into V1 and V3 */ | |
| /* TvarVVind={2,5,5}, for V3 and then the product V1*V3 is decomposed into V1 and V3 */ | |
| int *Tvarsel; /**< Selected covariates for output */ | int *Tvarsel; /**< Selected covariates for output */ |
| double *Tvalsel; /**< Selected modality value of covariate for output */ | double *Tvalsel; /**< Selected modality value of covariate for output */ |
| int *Typevar; /**< 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ | int *Typevar; /**< 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ |
| Line 2499 void powell(double p[], double **xi, int | Line 2564 void powell(double p[], double **xi, int |
| xits=vector(1,n); | xits=vector(1,n); |
| *fret=(*func)(p); | *fret=(*func)(p); |
| for (j=1;j<=n;j++) pt[j]=p[j]; | for (j=1;j<=n;j++) pt[j]=p[j]; |
| rcurr_time = time(NULL); | rcurr_time = time(NULL); |
| fp=(*fret); /* Initialisation */ | |
| for (*iter=1;;++(*iter)) { | for (*iter=1;;++(*iter)) { |
| ibig=0; | ibig=0; |
| del=0.0; | del=0.0; |
| Line 2507 void powell(double p[], double **xi, int | Line 2573 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 2811 void powell(double p[], double **xi, int | Line 2879 void powell(double p[], double **xi, int |
| double **prevalim(double **prlim, int nlstate, double x[], double age, double **oldm, double **savm, double ftolpl, int *ncvyear, int ij, int nres) | double **prevalim(double **prlim, int nlstate, double x[], double age, double **oldm, double **savm, double ftolpl, int *ncvyear, int ij, int nres) |
| { | { |
| /**< Computes the prevalence limit in each live state at age x and for covariate combination ij | /**< Computes the prevalence limit in each live state at age x and for covariate combination ij . Nicely done |
| * (and selected quantitative values in nres) | * (and selected quantitative values in nres) |
| * by left multiplying the unit | * by left multiplying the unit |
| * matrix by transitions matrix until convergence is reached with precision ftolpl | * matrix by transitions matrix until convergence is reached with precision ftolpl |
| Line 3259 double **pmij(double **ps, double *cov, | Line 3327 double **pmij(double **ps, double *cov, |
| for(i=1; i<= nlstate; i++){ | for(i=1; i<= nlstate; i++){ |
| s1=0; | s1=0; |
| for(j=1; j<i; j++){ | for(j=1; j<i; j++){ |
| /* printf("debug1 %d %d ps=%lf exp(ps)=%lf \n",i,j,ps[i][j],exp(ps[i][j])); */ | |
| s1+=exp(ps[i][j]); /* In fact sums pij/pii */ | s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
| /* printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ | |
| } | } |
| for(j=i+1; j<=nlstate+ndeath; j++){ | for(j=i+1; j<=nlstate+ndeath; j++){ |
| /* printf("debug2 %d %d ps=%lf exp(ps)=%lf \n",i,j,ps[i][j],exp(ps[i][j])); */ | |
| s1+=exp(ps[i][j]); /* In fact sums pij/pii */ | s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
| /* printf("debug2 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ | |
| } | } |
| /* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ | /* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
| ps[i][i]=1./(s1+1.); | ps[i][i]=1./(s1+1.); |
| Line 3508 double **matprod2(double **out, double * | Line 3576 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 dummies values in each resultline (loop on ij to find the corresponding combination) to 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 3839 double ***hbxij(double ***po, int nhstep | Line 3908 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; |
| int ipos=0,iposold=0,ncovv=0; | |
| double cotvarv, cotvarvold; | |
| 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 3871 double func( double *x) | Line 3944 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 3887 double func( double *x) | Line 3960 double func( double *x) |
| mw[mi][i] is real wave of the mi th effectve wave */ | 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]; | /* 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]; | s2=s[mw[mi+1][i]][i]; |
| And the iv th varying covariate is the cotvar[mw[mi+1][i]][iv][i] | And the iv th varying covariate is the cotvar[mw[mi+1][i]][iv][i] because now is moved after nvocol+nqv |
| 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 */ |
| 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*/ | /* Wave varying (but not age varying) */ |
| /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? */ | /* 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]]-ncovcol-nqv][i]; | /* /\* 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]; */ |
| /* } */ | |
| for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age )*/ | |
| itv=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/ | |
| if(TvarFind[itv]==0){ /* Not a fixed covariate */ | |
| cotvarv=cotvar[mw[mi][i]][TvarVV[ncovv]][i]; /* cotvar[wav][ncovcol+nqv+iv][i] */ | |
| }else{ /* fixed covariate */ | |
| cotvarv=covar[Tvar[TvarFind[itv]]][i]; | |
| } | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| cotvarvold=cotvarv; | |
| }else{ /* A second product */ | |
| cotvarv=cotvarv*cotvarvold; | |
| } | |
| iposold=ipos; | |
| cov[ioffset+ipos]=cotvarv; | |
| } | |
| /* for(itv=1; itv <= ntveff; itv++){ /\* Varying dummy covariates (single??)*\/ */ | |
| /* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; /\* Counting the # varying covariate from 1 to ntveff *\/ */ | |
| /* cov[ioffset+iv]=cotvar[mw[mi][i]][iv][i]; */ | |
| /* k=ioffset-2-nagesqr-cptcovage+itv; /\* position in simple model *\/ */ | |
| /* cov[ioffset+itv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; */ | |
| /* printf(" i=%d,mi=%d,itv=%d,TmodelInvind[itv]=%d,cotvar[mw[mi][i]][TmodelInvind[itv]][i]=%f\n", i, mi, itv, TmodelInvind[itv],cotvar[mw[mi][i]][TmodelInvind[itv]][i]); */ | |
| /* } */ | |
| /* for(iqtv=1; iqtv <= nqtveff; iqtv++){ /\* Varying quantitatives covariates *\/ */ | |
| /* iv=TmodelInvQind[iqtv]; /\* Counting the # varying covariate from 1 to ntveff *\/ */ | |
| /* /\* printf(" i=%d,mi=%d,iqtv=%d,TmodelInvQind[iqtv]=%d,cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]=%f\n", i, mi, iqtv, TmodelInvQind[iqtv],cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]); *\/ */ | |
| /* cov[ioffset+ntveff+iqtv]=cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]; */ | |
| /* } */ | |
| /* for products of time varying to be done */ | |
| for (ii=1;ii<=nlstate+ndeath;ii++) | for (ii=1;ii<=nlstate+ndeath;ii++) |
| for (j=1;j<=nlstate+ndeath;j++){ | for (j=1;j<=nlstate+ndeath;j++){ |
| oldm[ii][j]=(ii==j ? 1.0 : 0.0); | oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
| savm[ii][j]=(ii==j ? 1.0 : 0.0); | savm[ii][j]=(ii==j ? 1.0 : 0.0); |
| } | } |
| agebegin=agev[mw[mi][i]][i]; /* Age at beginning of effective wave */ | |
| 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 3911 double func( double *x) | Line 4017 double func( double *x) |
| if(!FixedV[Tvar[Tage[kk]]]) | if(!FixedV[Tvar[Tage[kk]]]) |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ | cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
| else | else |
| cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; | cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]*agexact; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ |
| } | } |
| out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, | out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
| 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); | 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
| Line 3991 double func( double *x) | Line 4097 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 */ |
| } | } |
| /*lli=(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]);*/ | /*lli=(1.+bbh)*log(out[s1][s2])- bbh*log(savm[s1][s2]);*/ |
| /*if(lli ==000.0)*/ | /*if(lli ==000.0)*/ |
| /*printf("bbh= %f lli=%f savm=%f out=%f %d\n",bbh,lli,savm[s1][s2], out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]],i); */ | /* printf("num[i], i=%d, bbh= %f lli=%f savm=%f out=%f %d\n",bbh,lli,savm[s1][s2], out[s[mw[mi][i]][i]][s[mw[mi+1][i]][i]],i); */ |
| 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; |
| Line 4024 double func( double *x) | Line 4130 double func( double *x) |
| cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i]; | cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i]; |
| for(mi=1; mi<= wav[i]-1; mi++){ | for(mi=1; mi<= wav[i]-1; mi++){ |
| for(k=1; k <= ncovv ; k++){ | for(k=1; k <= ncovv ; k++){ |
| 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]]][i]; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ |
| } | } |
| for (ii=1;ii<=nlstate+ndeath;ii++) | for (ii=1;ii<=nlstate+ndeath;ii++) |
| for (j=1;j<=nlstate+ndeath;j++){ | for (j=1;j<=nlstate+ndeath;j++){ |
| Line 4071 double func( double *x) | Line 4177 double func( double *x) |
| if(nagesqr==1) | if(nagesqr==1) |
| cov[3]= agexact*agexact; | cov[3]= agexact*agexact; |
| for (kk=1; kk<=cptcovage;kk++) { | for (kk=1; kk<=cptcovage;kk++) { |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; | if(!FixedV[Tvar[Tage[kk]]]) |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ | |
| else | |
| cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]*agexact; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ | |
| } | } |
| out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, | out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
| 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); | 1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
| Line 4127 double func( double *x) | Line 4236 double func( 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("num[i]=%09ld, i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */ |
| } /* end of wave */ | } /* end of wave */ |
| } /* end of individual */ | } /* end of individual */ |
| }else{ /* ml=5 no inter-extrapolation no jackson =0.8a */ | }else{ /* ml=5 no inter-extrapolation no jackson =0.8a */ |
| Line 4146 double func( double *x) | Line 4255 double func( double *x) |
| if(nagesqr==1) | if(nagesqr==1) |
| cov[3]= agexact*agexact; | cov[3]= agexact*agexact; |
| for (kk=1; kk<=cptcovage;kk++) { | for (kk=1; kk<=cptcovage;kk++) { |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; | if(!FixedV[Tvar[Tage[kk]]]) |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ | |
| else | |
| cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]*agexact; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ | |
| } | } |
| out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, | out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
| Line 4177 double funcone( double *x) | Line 4289 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, kf=0; | int i, ii, j, k, mi, d, kk, kf=0; |
| int ioffset=0; | int ioffset=0; |
| int ipos=0,iposold=0,ncovv=0; | |
| double cotvarv, cotvarvold; | |
| 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 */ |
| Line 4198 double funcone( double *x) | Line 4313 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 (kf=1; kf<=ncovf;kf++){ /* 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 */ |
| /* printf("Debug3 TvarFind[%d]=%d",kf, TvarFind[kf]); */ | |
| /* printf(" Tvar[TvarFind[kf]]=%d", Tvar[TvarFind[kf]]); */ | |
| /* printf(" i=%d covar[Tvar[TvarFind[kf]]][i]=%f\n",i,covar[Tvar[TvarFind[kf]]][i]); */ | |
| 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[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]; */ |
| Line 4215 double funcone( double *x) | Line 4338 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 in the DATA is the cotvar[mw[mi+1][i]][ncovcol+nqv+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 4224 double funcone( double *x) | Line 4358 double funcone( double *x) |
| for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ | for(mi=1; mi<= wav[i]-1; mi++){ /* Varying with waves */ |
| /* Wave varying (but not age varying) */ | /* Wave varying (but not age varying) *//* V1+V3+age*V1+age*V3+V1*V3 with V4 tv and V5 tvq k= 1 to 5 and extra at V(5+1)=6 for V1*V3 */ |
| for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ | /* for(k=1; k <= ncovv ; k++){ /\* Varying covariates (single and product but no age )*\/ */ |
| /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; */ | /* /\* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; *\/ */ |
| 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]; */ |
| } | /* } */ |
| /* for(itv=1; itv <= ntveff; itv++){ /\* Varying dummy covariates (single??)*\/ */ | |
| /* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; /\* Counting the # varying covariate from 1 to ntveff *\/ */ | /*# ID V1 V2 weight birth death 1st s1 V3 V4 V5 2nd s2 */ |
| /* cov[ioffset+iv]=cotvar[mw[mi][i]][iv][i]; */ | /* model V1+V3+age*V1+age*V3+V1*V3 */ |
| /* k=ioffset-2-nagesqr-cptcovage+itv; /\* position in simple model *\/ */ | /* Tvar={1, 3, 1, 3, 6}, the 6 comes from the fact that there are already V1, V2, V3, V4, V5 native covariates */ |
| /* cov[ioffset+itv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; */ | /* TvarVV[1]=V3 (first time varying in the model equation, TvarVV[2]=V1 (in V1*V3) TvarVV[3]=3(V3) */ |
| /* printf(" i=%d,mi=%d,itv=%d,TmodelInvind[itv]=%d,cotvar[mw[mi][i]][TmodelInvind[itv]][i]=%f\n", i, mi, itv, TmodelInvind[itv],cotvar[mw[mi][i]][TmodelInvind[itv]][i]); */ | /* We need the position of the time varying or product in the model */ |
| /* TvarVVind={2,5,5}, for V3 at position 2 and then the product V1*V3 is decomposed into V1 and V3 but at same position 5 */ | |
| /* TvarVV gives the variable name */ | |
| /* Other example V1 + V3 + V5 + age*V1 + age*V3 + age*V5 + V1*V3 + V3*V5 + V1*V5 | |
| * k= 1 2 3 4 5 6 7 8 9 | |
| * varying 1 2 3 4 5 | |
| * ncovv 1 2 3 4 5 6 7 8 | |
| * TvarVV[ncovv] V3 5 1 3 3 5 1 5 | |
| * TvarVVind 2 3 7 7 8 8 9 9 | |
| * TvarFind[k] 1 0 0 0 0 0 0 0 0 | |
| */ | |
| for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age) including individual from products */ | |
| itv=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/ | |
| if(TvarFind[itv]==0){ /* Not a fixed covariate */ | |
| cotvarv=cotvar[mw[mi][i]][TvarVV[ncovv]][i]; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ | |
| }else{ /* fixed covariate */ | |
| cotvarv=covar[Tvar[TvarFind[itv]]][i]; | |
| } | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| cotvarvold=cotvarv; | |
| }else{ /* A second product */ | |
| cotvarv=cotvarv*cotvarvold; | |
| } | |
| iposold=ipos; | |
| cov[ioffset+ipos]=cotvarv; | |
| /* For products */ | |
| } | |
| /* for(itv=1; itv <= ntveff; itv++){ /\* Varying dummy covariates single *\/ */ | |
| /* iv=TvarVDind[itv]; /\* iv, position in the model equation of time varying covariate itv *\/ */ | |
| /* /\* "V1+V3+age*V1+age*V3+V1*V3" with V3 time varying *\/ */ | |
| /* /\* 1 2 3 4 5 *\/ */ | |
| /* /\*itv 1 *\/ */ | |
| /* /\* TvarVInd[1]= 2 *\/ */ | |
| /* /\* iv= Tvar[Tmodelind[itv]]-ncovcol-nqv; /\\* Counting the # varying covariate from 1 to ntveff *\\/ *\/ */ | |
| /* /\* iv= Tvar[Tmodelind[ioffset-2-nagesqr-cptcovage+itv]]-ncovcol-nqv; *\/ */ | |
| /* /\* cov[ioffset+iv]=cotvar[mw[mi][i]][iv][i]; *\/ */ | |
| /* /\* k=ioffset-2-nagesqr-cptcovage+itv; /\\* position in simple model *\\/ *\/ */ | |
| /* /\* cov[ioffset+iv]=cotvar[mw[mi][i]][TmodelInvind[itv]][i]; *\/ */ | |
| /* cov[ioffset+iv]=cotvar[mw[mi][i]][itv][i]; */ | |
| /* /\* printf(" i=%d,mi=%d,itv=%d,TmodelInvind[itv]=%d,cotvar[mw[mi][i]][itv][i]=%f\n", i, mi, itv, TvarVDind[itv],cotvar[mw[mi][i]][itv][i]); *\/ */ | |
| /* } */ | |
| /* for(iqtv=1; iqtv <= nqtveff; iqtv++){ /\* Varying quantitatives covariates *\/ */ | /* for(iqtv=1; iqtv <= nqtveff; iqtv++){ /\* Varying quantitatives covariates *\/ */ |
| /* iv=TmodelInvQind[iqtv]; /\* Counting the # varying covariate from 1 to ntveff *\/ */ | /* iv=TmodelInvQind[iqtv]; /\* Counting the # varying covariate from 1 to ntveff *\/ */ |
| /* /\* printf(" i=%d,mi=%d,iqtv=%d,TmodelInvQind[iqtv]=%d,cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]=%f\n", i, mi, iqtv, TmodelInvQind[iqtv],cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]); *\/ */ | /* /\* printf(" i=%d,mi=%d,iqtv=%d,TmodelInvQind[iqtv]=%d,cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]=%f\n", i, mi, iqtv, TmodelInvQind[iqtv],cotqvar[mw[mi][i]][TmodelInvQind[iqtv]][i]); *\/ */ |
| Line 4261 double funcone( double *x) | Line 4436 double funcone( double *x) |
| if(!FixedV[Tvar[Tage[kk]]]) | if(!FixedV[Tvar[Tage[kk]]]) |
| cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; | cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; |
| else | else |
| cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; | cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]*agexact; /* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ |
| } | } |
| /* printf("i=%d,mi=%d,d=%d,mw[mi][i]=%d\n",i, mi,d,mw[mi][i]); */ | /* printf("i=%d,mi=%d,d=%d,mw[mi][i]=%d\n",i, mi,d,mw[mi][i]); */ |
| /* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ | /* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
| Line 4272 double funcone( double *x) | Line 4447 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 4304 double funcone( double *x) | Line 4491 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("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])); */ | /* Printing covariates values for each contribution for checking */ |
| /* printf("num[i]=%09ld, i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],(s2==-1? -1: out[s1][s2]),(s2==-1? -1: savm[s1][s2])); */ | |
| if(globpr){ | 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\ */ | /* printf("%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])); */ |
| 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); */ | /* printf(" %10.6f",-ll[k]*gipmx/gsw); */ |
| } | } |
| fprintf(ficresilk," %10.6f\n", -llt); | fprintf(ficresilk," %10.6f ", -llt); |
| /* printf(" %10.6f\n", -llt); */ | /* printf(" %10.6f\n", -llt); */ |
| } | /* if(debugILK){ /\* debugILK is set by a #d in a comment line *\/ */ |
| /* fprintf(ficresilk,"%09ld ", num[i]); */ /* not necessary */ | |
| for (kf=1; kf<=ncovf;kf++){ /* Simple and product fixed covariates without age* products *//* Missing values are set to -1 but should be dropped */ | |
| fprintf(ficresilk," %g",covar[Tvar[TvarFind[kf]]][i]); | |
| } | |
| for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Varying covariates (single and product but no age) including individual from products */ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate*/ | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| fprintf(ficresilk," %g",cov[ioffset+ipos]); | |
| /* printf(" %g",cov[ioffset+ipos]); */ | |
| }else{ | |
| fprintf(ficresilk,"*"); | |
| /* printf("*"); */ | |
| } | |
| iposold=ipos; | |
| } | |
| for (kk=1; kk<=cptcovage;kk++) { | |
| if(!FixedV[Tvar[Tage[kk]]]){ | |
| fprintf(ficresilk," %g*age",covar[Tvar[Tage[kk]]][i]); | |
| /* printf(" %g*age",covar[Tvar[Tage[kk]]][i]); */ | |
| }else{ | |
| fprintf(ficresilk," %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ | |
| /* printf(" %g*age",cotvar[mw[mi][i]][Tvar[Tage[kk]]][i]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/ */ | |
| } | |
| } | |
| /* printf("\n"); */ | |
| /* } /\* End debugILK *\/ */ | |
| fprintf(ficresilk,"\n"); | |
| } /* End if globpr */ | |
| } /* 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]; |
| Line 4331 double funcone( double *x) | Line 4547 double funcone( double *x) |
| gipmx=ipmx; | gipmx=ipmx; |
| gsw=sw; | gsw=sw; |
| } | } |
| return -l; | return -l; |
| } | } |
| Line 4342 void likelione(FILE *ficres,double p[], | Line 4558 void likelione(FILE *ficres,double p[], |
| the selection of individuals/waves and | the selection of individuals/waves and |
| to check the exact contribution to the likelihood. | to check the exact contribution to the likelihood. |
| Plotting could be done. | Plotting could be done. |
| */ | */ |
| int k; | void pstamp(FILE *ficres); |
| int k, kf, kk, kvar, ncovv, iposold, ipos; | |
| if(*globpri !=0){ /* Just counts and sums, no printings */ | if(*globpri !=0){ /* Just counts and sums, no printings */ |
| strcpy(fileresilk,"ILK_"); | strcpy(fileresilk,"ILK_"); |
| Line 4352 void likelione(FILE *ficres,double p[], | Line 4569 void likelione(FILE *ficres,double p[], |
| printf("Problem with resultfile: %s\n", fileresilk); | printf("Problem with resultfile: %s\n", fileresilk); |
| fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk); | fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk); |
| } | } |
| pstamp(ficresilk);fprintf(ficresilk,"# model=1+age+%s\n",model); | |
| fprintf(ficresilk, "#individual(line's_record) count ageb ageend s1 s2 wave# effective_wave# number_of_matrices_product pij weight weight/gpw -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n"); | fprintf(ficresilk, "#individual(line's_record) count ageb ageend s1 s2 wave# effective_wave# number_of_matrices_product pij weight weight/gpw -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n"); |
| fprintf(ficresilk, "#num_i ageb agend i s1 s2 mi mw dh likeli weight %%weight 2wlli out sav "); | fprintf(ficresilk, "#num_i ageb agend i s1 s2 mi mw dh likeli weight %%weight 2wlli out sav "); |
| /* i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */ | /* i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */ |
| for(k=1; k<=nlstate; k++) | for(k=1; k<=nlstate; k++) |
| fprintf(ficresilk," -2*gipw/gsw*weight*ll[%d]++",k); | fprintf(ficresilk," -2*gipw/gsw*weight*ll[%d]++",k); |
| fprintf(ficresilk," -2*gipw/gsw*weight*ll(total)\n"); | fprintf(ficresilk," -2*gipw/gsw*weight*ll(total) "); |
| } | |
| /* if(debugILK){ /\* debugILK is set by a #d in a comment line *\/ */ | |
| for(kf=1;kf <= ncovf; kf++){ | |
| fprintf(ficresilk,"V%d",Tvar[TvarFind[kf]]); | |
| /* printf("V%d",Tvar[TvarFind[kf]]); */ | |
| } | |
| for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */ | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| /* printf(" %d",ipos); */ | |
| fprintf(ficresilk," V%d",TvarVV[ncovv]); | |
| }else{ | |
| /* printf("*"); */ | |
| fprintf(ficresilk,"*"); | |
| } | |
| iposold=ipos; | |
| } | |
| for (kk=1; kk<=cptcovage;kk++) { | |
| if(!FixedV[Tvar[Tage[kk]]]){ | |
| /* printf(" %d*age(Fixed)",Tvar[Tage[kk]]); */ | |
| fprintf(ficresilk," %d*age(Fixed)",Tvar[Tage[kk]]); | |
| }else{ | |
| fprintf(ficresilk," %d*age(Varying)",Tvar[Tage[kk]]);/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ | |
| /* printf(" %d*age(Varying)",Tvar[Tage[kk]]);/\* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) *\/ */ | |
| } | |
| } | |
| /* } /\* End if debugILK *\/ */ | |
| /* printf("\n"); */ | |
| fprintf(ficresilk,"\n"); | |
| } /* End glogpri */ | |
| *fretone=(*func)(p); | *fretone=(*func)(p); |
| if(*globpri !=0){ | if(*globpri !=0){ |
| Line 4370 void likelione(FILE *ficres,double p[], | Line 4617 void likelione(FILE *ficres,double p[], |
| fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk)); | fprintf(fichtm," You should at least run with mle >= 1 to get starting values corresponding to the optimized parameters in order to visualize the real contribution of each individual/wave: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk)); |
| fprintf(fichtm,"\n<br>Equation of the model: <b>model=1+age+%s</b><br>\n",model); | fprintf(fichtm,"\n<br>Equation of the model: <b>model=1+age+%s</b><br>\n",model); |
| for (k=1; k<= nlstate ; k++) { | |
| fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Dot's sizes are related to corresponding weight: <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ | |
| <img src=\"%s-p%dj.png\">",k,k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k); | |
| } | |
| fprintf(fichtm,"<br>- The function drawn is -2Log(L) in Log scale: by state of origin <a href=\"%s-ori.png\">%s-ori.png</a><br> \ | fprintf(fichtm,"<br>- The function drawn is -2Log(L) in Log scale: by state of origin <a href=\"%s-ori.png\">%s-ori.png</a><br> \ |
| <img src=\"%s-ori.png\">",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_")); | <img src=\"%s-ori.png\">\n",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_")); |
| fprintf(fichtm,"<br>- and by state of destination <a href=\"%s-dest.png\">%s-dest.png</a><br> \ | fprintf(fichtm,"<br>- and by state of destination <a href=\"%s-dest.png\">%s-dest.png</a><br> \ |
| <img src=\"%s-dest.png\">",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_")); | <img src=\"%s-dest.png\">\n",subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_"),subdirf2(optionfilefiname,"ILK_")); |
| for (k=1; k<= nlstate ; k++) { | |
| fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Dot's sizes are related to corresponding weight: <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br>\n \ | |
| <img src=\"%s-p%dj.png\">\n",k,k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k); | |
| for(kf=1; kf <= ncovf; kf++){ /* For each simple dummy covariate of the model */ | |
| /* kvar=Tvar[TvarFind[kf]]; */ /* variable */ | |
| fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j with colored covariate V%d. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ | |
| <img src=\"%s-p%dj-%d.png\">",k,k,Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,Tvar[TvarFind[kf]]); | |
| } | |
| for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /* Loop on the time varying extended covariates (with extension of Vn*Vm */ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */ | |
| kvar=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */ | |
| /* printf("DebugILK fichtm ncovv=%d, kvar=TvarVV[ncovv]=V%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); */ | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| /* fprintf(ficresilk," V%d",TvarVV[ncovv]); */ | |
| /* printf(" DebugILK fichtm ipos=%d != iposold=%d\n", ipos, iposold); */ | |
| if(Dummy[ipos]==0 && Typevar[ipos]==0){ /* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) */ | |
| fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j with colored time varying dummy covariate V%d. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ | |
| <img src=\"%s-p%dj-%d.png\">",k,k,kvar,kvar,kvar,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,kvar); | |
| } /* End only for dummies time varying (single?) */ | |
| }else{ /* Useless product */ | |
| /* printf("*"); */ | |
| /* fprintf(ficresilk,"*"); */ | |
| } | |
| iposold=ipos; | |
| } /* For each time varying covariate */ | |
| } /* End loop on states */ | |
| /* if(debugILK){ */ | |
| /* for(kf=1; kf <= ncovf; kf++){ /\* For each simple dummy covariate of the model *\/ */ | |
| /* /\* kvar=Tvar[TvarFind[kf]]; *\/ /\* variable *\/ */ | |
| /* for (k=1; k<= nlstate ; k++) { */ | |
| /* fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j with colored covariate V%. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ */ | |
| /* <img src=\"%s-p%dj-%d.png\">",k,k,Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],Tvar[TvarFind[kf]],subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,Tvar[TvarFind[kf]]); */ | |
| /* } */ | |
| /* } */ | |
| /* for(ncovv=1, iposold=0; ncovv <= ncovvt ; ncovv++){ /\* Loop on the time varying extended covariates (with extension of Vn*Vm *\/ */ | |
| /* ipos=TvarVVind[ncovv]; /\* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate *\/ */ | |
| /* kvar=TvarVV[ncovv]; /\* TvarVV={3, 1, 3} gives the name of each varying covariate *\/ */ | |
| /* /\* printf("DebugILK fichtm ncovv=%d, kvar=TvarVV[ncovv]=V%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); *\/ */ | |
| /* if(ipos!=iposold){ /\* Not a product or first of a product *\/ */ | |
| /* /\* fprintf(ficresilk," V%d",TvarVV[ncovv]); *\/ */ | |
| /* /\* printf(" DebugILK fichtm ipos=%d != iposold=%d\n", ipos, iposold); *\/ */ | |
| /* if(Dummy[ipos]==0 && Typevar[ipos]==0){ /\* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) *\/ */ | |
| /* for (k=1; k<= nlstate ; k++) { */ | |
| /* fprintf(fichtm,"<br>- Probability p<sub>%dj</sub> by origin %d and destination j. Same dot size of all points but with a different color for transitions with dummy variable V%d=1 at beginning of transition (keeping former color for V%d=0): <a href=\"%s-p%dj.png\">%s-p%dj.png</a><br> \ */ | |
| /* <img src=\"%s-p%dj-%d.png\">",k,k,kvar,kvar,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,subdirf2(optionfilefiname,"ILK_"),k,kvar); */ | |
| /* } /\* End state *\/ */ | |
| /* } /\* End only for dummies time varying (single?) *\/ */ | |
| /* }else{ /\* Useless product *\/ */ | |
| /* /\* printf("*"); *\/ */ | |
| /* /\* fprintf(ficresilk,"*"); *\/ */ | |
| /* } */ | |
| /* iposold=ipos; */ | |
| /* } /\* For each time varying covariate *\/ */ | |
| /* }/\* End debugILK *\/ */ | |
| fflush(fichtm); | fflush(fichtm); |
| } | }/* End globpri */ |
| return; | return; |
| } | } |
| Line 5080 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5379 Title=%s <br>Datafile=%s Firstpass=%d La |
| /* }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( 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( 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) | 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); | printf("Error Tvaraff[z1]=%d<1 or >=%d, cptcoveff=%d model=1+age+%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 */ | 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 */ |
| Line 5101 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5400 Title=%s <br>Datafile=%s Firstpass=%d La |
| if(anyvaryingduminmodel==1){ /* Some are varying covariates */ | if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
| for (z1=1; z1<=cptcoveff; z1++) { | for (z1=1; z1<=cptcoveff; z1++) { |
| if( Fixed[Tmodelind[z1]]==1){ | if( Fixed[Tmodelind[z1]]==1){ |
| iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; | /* iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; /\* Good *\/ */ |
| iv= Tvar[Tmodelind[z1]]; /* Good *//* because cotvar starts now at first at ncovcol+nqv+ntv */ | |
| if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[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. */ |
| Line 5182 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5482 Title=%s <br>Datafile=%s Firstpass=%d La |
| fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); | fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
| fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); | fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
| fprintf(ficlog, "\n#********** Variable "); | fprintf(ficlog, "\n#********** Variable "); |
| for (z1=1; z1<=cptcovs; z1++){ | for (z1=1; z1<=cptcoveff; z1++){ |
| if(!FixedV[Tvaraff[z1]]){ | if(!FixedV[Tvaraff[z1]]){ |
| printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
| fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
| Line 5390 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5690 Title=%s <br>Datafile=%s Firstpass=%d La |
| printf("# This combination (%d) is not valid and no result will be produced\n",j1); | printf("# This combination (%d) is not valid and no result will be produced\n",j1); |
| invalidvarcomb[j1]=1; | invalidvarcomb[j1]=1; |
| }else{ | }else{ |
| fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced.</p>",j1); | fprintf(ficresphtm,"\n <p> This combination (%d) is valid and result will be produced (or no resultline).</p>",j1); |
| invalidvarcomb[j1]=0; | invalidvarcomb[j1]=0; |
| } | } |
| fprintf(ficresphtmfr,"</table>\n"); | fprintf(ficresphtmfr,"</table>\n"); |
| Line 5638 void prevalence(double ***probs, double | Line 5938 void prevalence(double ***probs, double |
| /* Tvar[Tmodelind[z1]] is the n of Vn; n-ncovcol-nqv is the first time varying covariate or iv */ | /* Tvar[Tmodelind[z1]] is the n of Vn; n-ncovcol-nqv is the first time varying covariate or iv */ |
| 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]];/* because cotvar starts now at first ncovcol+nqv+ (1 to nqtv) */ |
| if (cotvar[m][iv][i]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[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 */ |
| Line 5947 void concatwav(int wav[], int **dh, int | Line 6247 void concatwav(int wav[], int **dh, int |
| /* 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++) { /* cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ | 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 */ | /* printf("Testing k=%d, cptcovt=%d\n",k, cptcovt); */ |
| if(Dummy[k]==0 && Typevar[k] !=1 && Typevar[k] != 2){ /* Dummy covariate and not age product nor fixed product */ | |
| switch(Fixed[k]) { | switch(Fixed[k]) { |
| case 0: /* Testing on fixed dummy covariate, simple or product of fixed */ | case 0: /* Testing on fixed dummy covariate, simple or product of fixed */ |
| modmaxcovj=0; | modmaxcovj=0; |
| modmincovj=0; | modmincovj=0; |
| 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*/ |
| /* printf("Waiting for error tricode Tvar[%d]=%d i=%d (int)(covar[Tvar[k]][i]=%d\n",k,Tvar[k], i, (int)(covar[Tvar[k]][i])); */ | |
| ij=(int)(covar[Tvar[k]][i]); | ij=(int)(covar[Tvar[k]][i]); |
| /* ij=0 or 1 or -1. Value of the covariate Tvar[j] for individual i | /* ij=0 or 1 or -1. Value of the covariate Tvar[j] for individual i |
| * If product of Vn*Vm, still boolean *: | * If product of Vn*Vm, still boolean *: |
| Line 6043 void concatwav(int wav[], int **dh, int | Line 6345 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){ /* Quantitative covariate and not age product */ | if(Dummy[k]==1 && Typevar[k] !=1 && Fixed ==0){ /* Fixed 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){ | if(Tvar[k]<=0 || Tvar[k]>=NCOVMAX){ |
| printf("Error k=%d \n",k); | printf("Error k=%d \n",k); |
| Line 6234 void concatwav(int wav[], int **dh, int | Line 6536 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 6502 void concatwav(int wav[], int **dh, int | Line 6805 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 */ /* To be done*/ | |
| fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[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,TnsdVar[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 7137 To be simple, these graphs help to under | Line 7445 To be simple, these graphs help to under |
| 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 */ | 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); | /* 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) | if(tj != 1 && TKresult[nres]!= j1) |
| continue; | continue; |
| Line 7153 To be simple, these graphs help to under | Line 7461 To be simple, these graphs help to under |
| /* Including quantitative variables of the resultline to be done */ | /* Including quantitative variables of the resultline to be done */ |
| for (z1=1; z1<=cptcovs; z1++){ /* Loop on each variable of this resultline */ | 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); | /* printf("Varprob modelresult[%d][%d]=%d model=1+age+%s \n",nres, z1, modelresult[nres][z1], model); */ |
| fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); | fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=1+age+%s \n",nres, z1, modelresult[nres][z1], model); |
| /* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */ | /* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=1+age+%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */ |
| if(Dummy[modelresult[nres][z1]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to z1 in resultline */ | 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 */ | 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(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 */ |
| Line 7177 To be simple, these graphs help to under | Line 7485 To be simple, these graphs help to under |
| } | } |
| }else if(Dummy[modelresult[nres][z1]]==1){ /* Quanti variable */ | }else if(Dummy[modelresult[nres][z1]]==1){ /* Quanti variable */ |
| /* For each selected (single) quantitative value */ | /* For each selected (single) quantitative value */ |
| fprintf(ficresprob," V%d=%f ",Tvqresult[nres][z1],Tqresult[nres][z1]); | fprintf(ficresprob," V%d=%lg ",Tvqresult[nres][z1],Tqresult[nres][z1]); |
| if(Fixed[modelresult[nres][z1]]==0){ /* Fixed */ | if(Fixed[modelresult[nres][z1]]==0){ /* Fixed */ |
| fprintf(ficresprob,"fixed "); | fprintf(ficresprob,"fixed "); |
| fprintf(ficresprobcov,"fixed "); | fprintf(ficresprobcov,"fixed "); |
| Line 7524 void printinghtml(char fileresu[], char | Line 7832 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; | if(TKresult[nres]==0)k1=1; /* To be checked for no result */ |
| /* 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 7558 void printinghtml(char fileresu[], char | Line 7876 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; | if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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=1+age+%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
| if(invalidvarcomb[k1]){ | if(invalidvarcomb[k1]){ |
| fprintf(fichtm,"\n<h3>Combination (%d) ignored because no cases </h3>\n",k1); | fprintf(fichtm,"\n<h3>Combination (%d) ignored because no cases </h3>\n",k1); |
| printf("\nCombination (%d) ignored because no cases \n",k1); | printf("\nCombination (%d) ignored because no cases \n",k1); |
| Line 7624 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 7940 divided by h: <sub>h</sub>P<sub>ij</sub> |
| /* Period (forward stable) prevalence in each health state */ | /* Period (forward stable) prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br>", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); | fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br>", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
| fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"P_"),subdirf2(optionfilefiname,"P_")); | fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"PIJ_"),subdirf2(optionfilefiname,"PIJ_")); |
| fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">" ,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); | fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">" ,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
| } | } |
| if(prevbcast==1){ | if(prevbcast==1){ |
| /* Backward prevalence in each health state */ | /* Backward prevalence in each health state */ |
| for(cpt=1; cpt<=nlstate;cpt++){ | for(cpt=1; cpt<=nlstate;cpt++){ |
| fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability for a person to be in state %d at a younger age, knowing that she/he was in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ | fprintf(fichtm,"<br>\n- Convergence to mixed (stable) back prevalence in state %d. Or probability for a person to be in state %d at a younger age, knowing that she/he was in state (1 to %d) at different older ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br>", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); |
| <img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); | fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"PIJB_"),subdirf2(optionfilefiname,"PIJB_")); |
| fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">" ,subdirf2(optionfilefiname,"PB_"),cpt,k1,nres); | |
| } | } |
| } | } |
| if(prevfcast==1){ | if(prevfcast==1){ |
| Line 7661 with weights corresponding to observed p | Line 7978 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 7708 See page 'Matrix of variance-covariance | Line 8025 See page 'Matrix of variance-covariance |
| /* - Population forecasting (if popforecast=1): <a href=\"pop%s\">pop%s</a> <br>\n */ | /* - Population forecasting (if popforecast=1): <a href=\"pop%s\">pop%s</a> <br>\n */ |
| /* <br>",fileres,fileres,fileres,fileres); */ | /* <br>",fileres,fileres,fileres,fileres); */ |
| /* else */ | /* else */ |
| /* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ | /* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=1+age+%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ |
| fflush(fichtm); | fflush(fichtm); |
| m=pow(2,cptcoveff); | m=pow(2,cptcoveff); |
| Line 7719 See page 'Matrix of variance-covariance | Line 8036 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 7748 See page 'Matrix of variance-covariance | Line 8061 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; | if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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=1+age+%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
| if(invalidvarcomb[k1]){ | if(invalidvarcomb[k1]){ |
| 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 7800 true period expectancies (those weighted | Line 8110 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 7811 void printinggnuplot(char fileresu[], ch | Line 8120 void printinggnuplot(char fileresu[], ch |
| char dirfileres[132],optfileres[132]; | char dirfileres[132],optfileres[132]; |
| char gplotcondition[132], gplotlabel[132]; | char gplotcondition[132], gplotlabel[132]; |
| int cpt=0,k1=0,i=0,k=0,j=0,jk=0,k2=0,k3=0,k4=0,ij=0, ijp=0, l=0; | int cpt=0,k1=0,i=0,k=0,j=0,jk=0,k2=0,k3=0,k4=0,kf=0,kvar=0,kk=0,ipos=0,iposold=0,ij=0, ijp=0, l=0; |
| int lv=0, vlv=0, kl=0; | int lv=0, vlv=0, kl=0; |
| int ng=0; | int ng=0; |
| int vpopbased; | int vpopbased; |
| Line 7837 void printinggnuplot(char fileresu[], ch | Line 8146 void printinggnuplot(char fileresu[], ch |
| fprintf(ficgp,"yoff=(%d > 2? 0:1);\n",nlstate); | fprintf(ficgp,"yoff=(%d > 2? 0:1);\n",nlstate); |
| fprintf(ficgp,"\n#Peripheral arrows\nset for [i=1:%d] for [j=1:%d] arrow i*10+j from cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.95*(cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) - cos(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta2:0)), -0.95*(sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) - sin(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d))+( i!=j?(i-j)/abs(i-j)*delta2:0)) ls (i < j? 1:2)\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); | fprintf(ficgp,"\n#Peripheral arrows\nset for [i=1:%d] for [j=1:%d] arrow i*10+j from cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.95*(cos(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) - cos(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta2:0)), -0.95*(sin(pi*((1-(%d/2)*2./%d)/2+(i-1)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) - sin(pi*((1-(%d/2)*2./%d)/2+(j-1)*2./%d))+( i!=j?(i-j)/abs(i-j)*delta2:0)) ls (i < j? 1:2)\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
| fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); | fprintf(ficgp,"\n#Centripete arrows (turning in other direction (1-i) instead of (i-1)) \nset for [i=1:%d] for [j=1:%d] arrow (%d+1)*10+i from cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))-(i!=j?(i-j)/abs(i-j)*delta:0), yoff +sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) rto -0.80*(cos(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d))+(i!=j?(i-j)/abs(i-j)*delta:0) ), -0.80*(sin(pi*((1-(%d/2)*2./%d)/2+(1-i)*2./%d)) + (i!=j?(i-j)/abs(i-j)*delta:0) + yoff ) ls 4\n",nlstate, nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
| fprintf(ficgp,"\n#show arrow\nunset label\n"); | fprintf(ficgp,"\n#show arrow\nunset label\n"); |
| fprintf(ficgp,"\n#States labels, starting from 2 (2-i) instead of (1-i), was (i-1)\nset for [i=1:%d] label i sprintf(\"State %%d\",i) center at cos(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)), yoff+sin(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)) font \"helvetica, 16\" tc rgbcolor \"blue\"\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); | fprintf(ficgp,"\n#States labels, starting from 2 (2-i) instead of (1-i), was (i-1)\nset for [i=1:%d] label i sprintf(\"State %%d\",i) center at cos(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)), yoff+sin(pi*((1-(%d/2)*2./%d)/2+(2-i)*2./%d)) font \"helvetica, 16\" tc rgbcolor \"blue\"\n",nlstate,nlstate,nlstate,nlstate,nlstate,nlstate,nlstate); |
| fprintf(ficgp,"\nset label %d+1 sprintf(\"State %%d\",%d+1) center at 0.,0. font \"helvetica, 16\" tc rgbcolor \"red\"\n",nlstate,nlstate); | fprintf(ficgp,"\nset label %d+1 sprintf(\"State %%d\",%d+1) center at 0.,0. font \"helvetica, 16\" tc rgbcolor \"red\"\n",nlstate,nlstate); |
| Line 7874 void printinggnuplot(char fileresu[], ch | Line 8183 void printinggnuplot(char fileresu[], ch |
| fprintf(ficgp,"\nset out;unset log\n"); | fprintf(ficgp,"\nset out;unset log\n"); |
| /* fprintf(ficgp,"\nset out \"%s.svg\"; replot; set out; # bug gnuplot",subdirf2(optionfilefiname,"ILK_")); */ | /* fprintf(ficgp,"\nset out \"%s.svg\"; replot; set out; # bug gnuplot",subdirf2(optionfilefiname,"ILK_")); */ |
| /* Plot the probability implied in the likelihood by covariate value */ | |
| fprintf(ficgp,"\nset ter pngcairo size 640, 480"); | |
| /* if(debugILK==1){ */ | |
| for(kf=1; kf <= ncovf; kf++){ /* For each simple dummy covariate of the model */ | |
| kvar=Tvar[TvarFind[kf]]; /* variable */ | |
| k=18+Tvar[TvarFind[kf]];/*offset because there are 18 columns in the ILK_ file */ | |
| for (i=1; i<= nlstate ; i ++) { | |
| fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar); | |
| fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk)); | |
| fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar); | |
| for (j=2; j<= nlstate+ndeath ; j ++) { | |
| fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar); | |
| } | |
| fprintf(ficgp,";\nset out; unset ylabel;\n"); | |
| } | |
| } /* End of each covariate dummy */ | |
| for(ncovv=1, iposold=0, kk=0; ncovv <= ncovvt ; ncovv++){ | |
| /* Other example V1 + V3 + V5 + age*V1 + age*V3 + age*V5 + V1*V3 + V3*V5 + V1*V5 | |
| * kmodel = 1 2 3 4 5 6 7 8 9 | |
| * varying 1 2 3 4 5 | |
| * ncovv 1 2 3 4 5 6 7 8 | |
| * TvarVV[ncovv] V3 5 1 3 3 5 1 5 | |
| * TvarVVind[ncovv]=kmodel 2 3 7 7 8 8 9 9 | |
| * TvarFind[kmodel] 1 0 0 0 0 0 0 0 0 | |
| * kdata ncovcol=[V1 V2] nqv=0 ntv=[V3 V4] nqtv=V5 | |
| * Dummy[kmodel] 0 0 1 2 2 3 1 1 1 | |
| */ | |
| ipos=TvarVVind[ncovv]; /* TvarVVind={2, 5, 5] gives the position in the model of the ncovv th varying covariate */ | |
| kvar=TvarVV[ncovv]; /* TvarVV={3, 1, 3} gives the name of each varying covariate */ | |
| /* printf("DebugILK ficgp ncovv=%d, kvar=TvarVV[ncovv]=%d, ipos=TvarVVind[ncovv]=%d, Dummy[ipos]=%d, Typevar[ipos]=%d\n", ncovv,kvar,ipos,Dummy[ipos],Typevar[ipos]); */ | |
| if(ipos!=iposold){ /* Not a product or first of a product */ | |
| /* printf(" %d",ipos); */ | |
| /* fprintf(ficresilk," V%d",TvarVV[ncovv]); */ | |
| /* printf(" DebugILK ficgp suite ipos=%d != iposold=%d\n", ipos, iposold); */ | |
| kk++; /* Position of the ncovv column in ILK_ */ | |
| k=18+ncovf+kk; /*offset because there are 18 columns in the ILK_ file plus ncovf fixed covariate */ | |
| if(Dummy[ipos]==0 && Typevar[ipos]==0){ /* Only if dummy time varying: Dummy(0, 1=quant singor prod without age,2 dummy*age, 3quant*age) Typevar (0 single, 1=*age,2=Vn*vm) */ | |
| for (i=1; i<= nlstate ; i ++) { | |
| fprintf(ficgp,"\nset out \"%s-p%dj-%d.png\";set ylabel \"Probability for each individual/wave\";",subdirf2(optionfilefiname,"ILK_"),i,kvar); | |
| fprintf(ficgp,"unset log;\n# For each simple dummy covariate of the model \n plot \"%s\"",subdirf(fileresilk)); | |
| if(gnuplotversion >=5.2){ /* Former gnuplot versions do not have variable pointsize!! */ | |
| /* printf("DebugILK gnuplotversion=%g >=5.2\n",gnuplotversion); */ | |
| fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable \\\n",i,1,k,k,i,1,kvar); | |
| for (j=2; j<= nlstate+ndeath ; j ++) { | |
| fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? 7 : 9):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt variable ps 0.4 lc variable ",i,j,k,k,i,j,kvar); | |
| } | |
| }else{ | |
| /* printf("DebugILK gnuplotversion=%g <5.2\n",gnuplotversion); */ | |
| fprintf(ficgp," u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable \\\n",i,1,k,i,1,kvar); | |
| for (j=2; j<= nlstate+ndeath ; j ++) { | |
| fprintf(ficgp,",\\\n \"\" u 2:($5 == %d && $6==%d ? $10 : 1/0):($%d==0 ? $6 : $6+4) t \"p%d%d V%d\" with points pt 7 ps 0.4 lc variable ",i,j,k,i,j,kvar); | |
| } | |
| } | |
| fprintf(ficgp,";\nset out; unset ylabel;\n"); | |
| } | |
| }/* End if dummy varying */ | |
| }else{ /*Product */ | |
| /* printf("*"); */ | |
| /* fprintf(ficresilk,"*"); */ | |
| } | |
| iposold=ipos; | |
| } /* For each time varying covariate */ | |
| /* } /\* debugILK==1 *\/ */ | |
| /* unset log; plot "rrtest1_sorted_4/ILK_rrtest1_sorted_4.txt" u 2:($4 == 1 && $5==2 ? $9 : 1/0):5 t "p12" with points lc variable */ | |
| /* fprintf(ficgp,"\nset log y;plot \"%s\" u 2:(-$11):3 t \"All sample, all transitions\" with dots lc variable",subdirf(fileresilk)); */ | |
| /* fprintf(ficgp,"\nreplot \"%s\" u 2:($3 <= 3 ? -$11 : 1/0):3 t \"First 3 individuals\" with line lc variable", subdirf(fileresilk)); */ | |
| fprintf(ficgp,"\nset out;unset log\n"); | |
| /* fprintf(ficgp,"\nset out \"%s.svg\"; replot; set out; # bug gnuplot",subdirf2(optionfilefiname,"ILK_")); */ | |
| strcpy(dirfileres,optionfilefiname); | strcpy(dirfileres,optionfilefiname); |
| strcpy(optfileres,"vpl"); | strcpy(optfileres,"vpl"); |
| /* 1eme*/ | /* 1eme*/ |
| for (cpt=1; cpt<= nlstate ; cpt ++){ /* For each live state */ | for (cpt=1; cpt<= nlstate ; cpt ++){ /* For each live state */ |
| for (k1=1; k1<= m ; 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]; | |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* 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]]); |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][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 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate k get corresponding value lv for combination k1 *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the value of the covariate corresponding to k1 combination *\\/ *\/ */ |
| vlv= nbcode[Tvaraff[k]][lv]; /* vlv is the value of the covariate lv, 0 or 1 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| /* printf(" V%d=%d ",Tvaraff[k],vlv); */ | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* vlv= nbcode[Tvaraff[k]][lv]; /\* vlv is the value of the covariate lv, 0 or 1 *\/ */ |
| } | /* /\* For each combination of covariate k1 (V1=1, V3=0), we printed the current covariate k and its value vlv *\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* /\* printf(" V%d=%d ",Tvaraff[k],vlv); *\/ */ |
| /* 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 (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 7916 void printinggnuplot(char fileresu[], ch | Line 8303 void printinggnuplot(char fileresu[], ch |
| fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1,nres); | fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
| fprintf(ficgp,"\n#set out \"V_%s_%d-%d-%d.svg\" \n",optionfilefiname,cpt,k1,nres); | fprintf(ficgp,"\n#set out \"V_%s_%d-%d-%d.svg\" \n",optionfilefiname,cpt,k1,nres); |
| /* fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); */ | /* fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); */ |
| fprintf(ficgp,"set title \"Alive state %d %s model=%s\" font \"Helvetica,12\"\n",cpt,gplotlabel,model); | fprintf(ficgp,"set title \"Alive state %d %s model=1+age+%s\" font \"Helvetica,12\"\n",cpt,gplotlabel,model); |
| fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); | fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
| /* fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1,nres); */ | /* fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1,nres); */ |
| /* k1-1 error should be nres-1*/ | /* k1-1 error should be nres-1*/ |
| Line 8015 void printinggnuplot(char fileresu[], ch | Line 8402 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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]]); |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* vlv= nbcode[Tvaraff[k]][lv]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| /* for(k=1; k <= ncovds; k++){ */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* } */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* /\* for(k=1; k <= ncovds; k++){ *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," 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(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 8083 void printinggnuplot(char fileresu[], ch | Line 8475 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | |
| /* continue; */ | |
| for (cpt=1; cpt<= nlstate ; cpt ++) { /* Fragile no verification of covariate values */ | 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]]); |
| lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| /* 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]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| } | /* 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 8140 plot [%.f:%.f] \"%s\" every :::%d::%d u | Line 8537 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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=codtabm(k1,TnsdVar[Tvaraff[k]]); | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* 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]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8193 set ter svg size 640, 480\nunset log y\n | Line 8595 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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=codtabm(k1,TnsdVar[Tvaraff[k]]); | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* 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]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8253 set ter svg size 640, 480\nunset log y\n | Line 8660 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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]]); |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* vlv= nbcode[Tvaraff[k]][lv]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8311 set ter svg size 640, 480\nunset log y\n | Line 8723 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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]]); |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate and each value *\/ */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate number corresponding to k1 combination *\\/ *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* vlv= nbcode[Tvaraff[k]][lv]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8369 set ter svg size 640, 480\nunset log y\n | Line 8786 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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]]); |
| lv=codtabm(k1,TnsdVar[Tvaraff[k]]); | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each correspondig covariate value *\/ */ |
| /* 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 k1 combination and kth covariate *\\/ *\/ */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ |
| /* vlv= nbcode[Tvaraff[k]][lv]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8486 set ter svg size 640, 480\nunset log y\n | Line 8908 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(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| /* 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]]); |
| lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ | sprintf(gplotlabel+strlen(gplotlabel)," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each correspondig covariate value *\/ */ |
| /* 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 k1 combination and kth covariate *\\/ *\/ */ |
| /* 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]; */ | /* /\* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* /\* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 *\/ */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* /\* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* /\* vlv= nbcode[Tvaraff[k]][lv]; *\/ */ |
| } | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* } */ |
| /* 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 8561 set ter svg size 640, 480\nunset log y\n | Line 8988 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[modelresult[nres][k]]==0){ /* To be verified */ |
| lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate writing the chain of conditions *\/ */ |
| /* decodtabm(1,1,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(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* 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=Tvresult[nres][k]; |
| /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ | vlv=TinvDoQresult[nres][Tvresult[nres][k]]; |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* 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 */ |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); | /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
| kl++; | /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
| if(k <cptcoveff && cptcoveff>1) | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| sprintf(gplotcondition+strlen(gplotcondition)," && "); | 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 <cptcovs && cptcovs>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 8638 set ter svg size 640, 480\nunset log y\n | Line 9071 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp,"#\n"); | fprintf(ficgp,"#\n"); |
| for(ng=1; ng<=3;ng++){ /* Number of graphics: first is logit, 2nd is probabilities, third is incidences per year*/ | for(ng=1; ng<=3;ng++){ /* Number of graphics: first is logit, 2nd is probabilities, third is incidences per year*/ |
| fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year\n"); | fprintf(ficgp,"#Number of graphics: first is logit, 2nd is probabilities, third is incidences per year\n"); |
| fprintf(ficgp,"#model=%s \n",model); | fprintf(ficgp,"#model=1+age+%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); | if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ |
| 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 |
| lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ | TinvDoQresult[nres][Tvresult[nres][k]] gives its value double or integer) */ |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | fprintf(ficgp," V%d=%lg ",Tvresult[nres][k],TinvDoQresult[nres][Tvresult[nres][k]]); |
| /* decodtabm(1,2,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(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | } |
| /* vlv= nbcode[Tvaraff[k]][lv]; */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* continue; */ |
| fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); | /* fprintf(ficgp,"\n\n# Combination of dummy k1=%d which is ",k1); */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); | /* strcpy(gplotlabel,"("); */ |
| } | /* /\*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*\/ */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each correspondig covariate value *\/ */ |
| fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* /\* lv= decodtabm(k1,k,cptcoveff); /\\* Should be the covariate value corresponding to k1 combination and kth covariate *\\/ *\/ */ |
| sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); | /* 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 8878 set ter svg size 640, 480\nunset log y\n | Line 9323 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 9447 void prevforecast(char fileres[], double | Line 9892 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++){ /* We find the combination equivalent to result line values of dummies */ | k=TKresult[nres]; |
| if(TKresult[nres]==0) k=1; /* To be checked for noresult */ | |
| /* 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,TnsdVar[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,TnsdVar[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,TnsdVar[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]])]); */ | |
| /* 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][resultmodel[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(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(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 9504 void prevforecast(char fileres[], double | Line 9953 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) | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| continue; | /* for(k=1; k<=i1;k++){ */ |
| /* 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,TnsdVar[Tvaraff[j]])]); | printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficresvbl," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficlog," V%d=%lg ",Tvresult[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][resultmodel[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][resultmodel[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][resultmodel[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 10006 int readdata(char datafile[], int firsto | Line 10461 int readdata(char datafile[], int firsto |
| printf("Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); | printf("Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); |
| fprintf(ficlog,"Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); | fprintf(ficlog,"Covariate type in the data: V%d, DummyV(V%d)=%d, FixedV(V%d)=%d\n",v,v,DummyV[v],v,FixedV[v]); |
| } | } |
| ncovcolt=ncovcol+nqv+ntv+nqtv; /* total of covariates in the data, not in the model equation */ | |
| if((fic=fopen(datafile,"r"))==NULL) { | if((fic=fopen(datafile,"r"))==NULL) { |
| printf("Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(stdout); | printf("Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(stdout); |
| fprintf(ficlog,"Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(ficlog);return 1; | fprintf(ficlog,"Problem while opening datafile: %s with errno='%s'\n", datafile,strerror(errno));fflush(ficlog);return 1; |
| Line 10084 int readdata(char datafile[], int firsto | Line 10541 int readdata(char datafile[], int firsto |
| if(strb[0]=='.') { /* Missing value */ | if(strb[0]=='.') { /* Missing value */ |
| lval=-1; | lval=-1; |
| cotqvar[j][iv][i]=-1; /* 0.0/0.0 */ | cotqvar[j][iv][i]=-1; /* 0.0/0.0 */ |
| cotvar[j][ntv+iv][i]=-1; /* For performance reasons */ | cotvar[j][ncovcol+nqv+ntv+iv][i]=-1; /* For performance reasons */ |
| if(isalpha(strb[1])) { /* .m or .d Really Missing value */ | if(isalpha(strb[1])) { /* .m or .d Really Missing value */ |
| printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j); | printf("Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j); |
| fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j);fflush(ficlog); | fprintf(ficlog,"Error reading data around '%s' at line number %d for individual %d, '%s'\nShould be the %d th quantitative value out of %d measured at wave %d. If missing, you should remove this individual or impute a value. Exiting.\n", strb, linei,i,line,iv, nqtv, j);fflush(ficlog); |
| Line 10104 int readdata(char datafile[], int firsto | Line 10561 int readdata(char datafile[], int firsto |
| return 1; | return 1; |
| } | } |
| cotqvar[j][iv][i]=dval; | cotqvar[j][iv][i]=dval; |
| cotvar[j][ntv+iv][i]=dval; | cotvar[j][ncovcol+nqv+ntv+iv][i]=dval; /* because cotvar starts now at first ntv */ |
| } | } |
| strcpy(line,stra); | strcpy(line,stra); |
| }/* end loop ntqv */ | }/* end loop ntqv */ |
| Line 10144 int readdata(char datafile[], int firsto | Line 10601 int readdata(char datafile[], int firsto |
| Exiting.\n",lval,linei, i,line,iv,j);fflush(ficlog); | Exiting.\n",lval,linei, i,line,iv,j);fflush(ficlog); |
| return 1; | return 1; |
| } | } |
| cotvar[j][iv][i]=(double)(lval); | cotvar[j][ncovcol+nqv+iv][i]=(double)(lval); |
| strcpy(line,stra); | strcpy(line,stra); |
| }/* end loop ntv */ | }/* end loop ntv */ |
| Line 10357 int decoderesult( char resultline[], int | Line 10814 int decoderesult( char resultline[], int |
| printf("decoderesult:%s\n",resultline); | printf("decoderesult:%s\n",resultline); |
| strcpy(resultsav,resultline); | strcpy(resultsav,resultline); |
| printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline); | /* printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline); */ |
| if (strlen(resultsav) >1){ | if (strlen(resultsav) >1){ |
| j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' in this resultline */ | j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' in this resultline */ |
| } | } |
| Line 10406 int decoderesult( char resultline[], int | Line 10863 int decoderesult( char resultline[], int |
| } | } |
| } | } |
| if(match == 0){ | if(match == 0){ |
| 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]); | printf("Error in result line (Dummy single): V%d is missing in result: %s according to model=1+age+%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 (Dummy single): V%d is missing in result: %s according to model=%s\n",Tvar[k1], resultline, model); | fprintf(ficlog,"Error in result line (Dummy single): V%d is missing in result: %s according to model=1+age+%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*/ | }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*/ |
| Line 10417 int decoderesult( char resultline[], int | Line 10874 int decoderesult( char resultline[], int |
| 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[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 */ | 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 */ | resultmodel[nres][k1]=k2; /* Added here */ |
| printf("Decoderesult first modelresult[k2=%d]=%d (k1) V%d*AGE\n",k2,k1,Tvar[k1]); | /* 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 */ | 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 (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]); | printf("Error in result line (Product with age): V%d is missing in result: %s according to model=1+age+%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]); | fprintf(ficlog,"Error in result line (Product with age): V%d is missing in result: %s according to model=1+age+%s (Tvarsel[k2=%d]=%d)\n",Tvar[k1], resultline, model, k2, Tvarsel[k2]); |
| return 1; | 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*/ | }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] */ | /* 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; | 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]); | /* 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 */ | 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 */ | 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; */ | /* modelresult[k2]=k1; */ |
| printf("Decoderesult first Product modelresult[k2=%d]=%d (k1) V%d * \n",k2,k1,Tvarsel[k2]); | /* 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 */ | match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
| } | } |
| } | } |
| if(match == 0){ | 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); | printf("Error in result line (Product without age first variable): V%d is missing in result: %s according to model=1+age+%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); | fprintf(ficlog,"Error in result line (Product without age first variable): V%d is missing in result: %s according to model=1+age+%s\n",Tvardk[k1][1], resultline, model); |
| return 1; | return 1; |
| } | } |
| 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(Tvardk[k1][2]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | 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;*/ | /* modelresult[k2]=k1;*/ |
| printf("Decoderesult second Product modelresult[k2=%d]=%d (k1) * V%d \n ",k2,k1,Tvarsel[k2]); | /* 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 */ | 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 (Product without age second variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][2], resultline, model); | printf("Error in result line (Product without age second variable): V%d is missing in result: %s according to model=1+age+%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); | fprintf(ficlog,"Error in result line (Product without age second variable): V%d is missing in result : %s according to model=1+age+%s\n",Tvardk[k1][2], resultline, model); |
| return 1; | return 1; |
| } | } |
| }/* End of testing */ | }/* End of testing */ |
| Line 10474 int decoderesult( char resultline[], int | Line 10931 int decoderesult( char resultline[], int |
| } | } |
| } | } |
| if(match == 0){ | if(match == 0){ |
| printf("Error in result line: variable V%d is missing in model; result: %s, model=%s\n",Tvarsel[k2], resultline, model); | printf("Error in result line: variable V%d is missing in model; result: %s, model=1+age+%s\n",Tvarsel[k2], resultline, model); |
| fprintf(ficlog,"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: variable V%d is missing in model; result: %s, model=1+age+%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=1+age+%s\n",k2, resultline, model); |
| fprintf(ficlog,"Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); | fprintf(ficlog,"Error in result line: %d doubled; result: %s, model=1+age+%s\n",k2, resultline, model); |
| return 1; | return 1; |
| } | } |
| } | } |
| Line 10531 int decoderesult( char resultline[], int | Line 10988 int decoderesult( char resultline[], int |
| Tvresult[nres][k3]=(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 */ |
| precov[nres][k1]=Tvalsel[k3]; /* Value from resultline of the variable at the k1 position in the model */ | 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); | /* 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 */ |
| Line 10549 int decoderesult( char resultline[], int | Line 11006 int decoderesult( char resultline[], int |
| 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 */ |
| precov[nres][k1]=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]); | /* 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 */ |
| Line 10559 int decoderesult( char resultline[], int | Line 11016 int decoderesult( char resultline[], int |
| 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]; /* TinvDoQresult[nres][4]=1 */ | TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][4]=1 */ |
| precov[nres][k1]=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]); | /* 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][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]; /* TinvDoQresult[nres][5]=25.1 */ | TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* TinvDoQresult[nres][5]=25.1 */ |
| precov[nres][k1]=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]); | /* 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) */ |
| precov[nres][k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; | 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]]); | /* 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 Decoderesult 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 Decoderesult 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]); |
| Line 10587 int decodemodel( char model[], int lasto | Line 11044 int decodemodel( char model[], int lasto |
| * - cptcovn or number of covariates k of the models excluding age*products =6 and age*age | * - cptcovn or number of covariates k of the models excluding age*products =6 and age*age |
| * - cptcovage number of covariates with age*products =2 | * - cptcovage number of covariates with age*products =2 |
| * - cptcovs number of simple covariates | * - cptcovs number of simple covariates |
| * ncovcolt=ncovcol+nqv+ntv+nqtv total of covariates in the data, not in the model equation | |
| * - Tvar[k] is the id of the kth covariate Tvar[1]@12 {1, 2, 3, 8, 10, 11, 8, 3, 7, 8, 5, 6}, thus Tvar[5=V7*V8]=10 | * - Tvar[k] is the id of the kth covariate Tvar[1]@12 {1, 2, 3, 8, 10, 11, 8, 3, 7, 8, 5, 6}, thus Tvar[5=V7*V8]=10 |
| * which is a new column after the 9 (ncovcol) variables. | * which is a new column after the 9 (ncovcol+nqv+ntv+nqtv) variables. |
| * - if k is a product Vn*Vm, covar[k][i] is filled with correct values for each individual | * - if k is a product Vn*Vm, covar[k][i] is filled with correct values for each individual |
| * - Tprod[l] gives the kth covariates of the product Vn*Vm l=1 to cptcovprod-cptcovage | * - Tprod[l] gives the kth covariates of the product Vn*Vm l=1 to cptcovprod-cptcovage |
| * Tprod[1]@2 {5, 6}: position of first product V7*V8 is 5, and second V5*V6 is 6. | * Tprod[1]@2 {5, 6}: position of first product V7*V8 is 5, and second V5*V6 is 6. |
| Line 10611 int decodemodel( char model[], int lasto | Line 11069 int decodemodel( char model[], int lasto |
| return 1; | return 1; |
| } | } |
| if (strstr(model,"v") !=0){ | if (strstr(model,"v") !=0){ |
| printf("Error. 'v' must be in upper case 'V' model=%s ",model); | printf("Error. 'v' must be in upper case 'V' model=1+age+%s ",model); |
| fprintf(ficlog,"Error. 'v' must be in upper case model=%s ",model);fflush(ficlog); | fprintf(ficlog,"Error. 'v' must be in upper case model=1+age+%s ",model);fflush(ficlog); |
| return 1; | return 1; |
| } | } |
| strcpy(modelsav,model); | strcpy(modelsav,model); |
| if ((strpt=strstr(model,"age*age")) !=0){ | if ((strpt=strstr(model,"age*age")) !=0){ |
| printf(" strpt=%s, model=%s\n",strpt, model); | printf(" strpt=%s, model=1+age+%s\n",strpt, model); |
| if(strpt != model){ | if(strpt != model){ |
| printf("Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ | printf("Error in model: 'model=1+age+%s'; 'age*age' should in first place before other covariates\n \ |
| 'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ | 'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
| corresponding column of parameters.\n",model); | corresponding column of parameters.\n",model); |
| fprintf(ficlog,"Error in model: 'model=%s'; 'age*age' should in first place before other covariates\n \ | fprintf(ficlog,"Error in model: 'model=1+age+%s'; 'age*age' should in first place before other covariates\n \ |
| 'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ | 'model=1+age+age*age+V1.' or 'model=1+age+age*age+V1+V1*age.', please swap as well as \n \ |
| corresponding column of parameters.\n",model); fflush(ficlog); | corresponding column of parameters.\n",model); fflush(ficlog); |
| return 1; | return 1; |
| Line 10732 int decodemodel( char model[], int lasto | Line 11190 int decodemodel( char model[], int lasto |
| cptcovn++; | cptcovn++; |
| cptcovprodnoage++;k1++; | cptcovprodnoage++;k1++; |
| cutl(stre,strb,strc,'V'); /* strc= Vn, stre is n; strb=V3*V2 stre=3 strc=*/ | cutl(stre,strb,strc,'V'); /* strc= Vn, stre is n; strb=V3*V2 stre=3 strc=*/ |
| Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* For model-covariate k tells which data-covariate to use but | Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* ncovcolt+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]=3 etc */ |
| /* Please remark that the new variables are model dependent */ | /* Please remark that the new variables are model dependent */ |
| /* If we have 4 variable but the model uses only 3, like in | /* 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 | * model= V1 + age*V1 + V2 + V3 + age*V2 + age*V3 + V1*V2 + V1*V3 |
| Line 10746 int decodemodel( char model[], int lasto | Line 11204 int decodemodel( char model[], int lasto |
| * Tage[kk] [1]= 2 [2]=5 [3]=6 kk=1 to cptcovage=3 | * Tage[kk] [1]= 2 [2]=5 [3]=6 kk=1 to cptcovage=3 |
| * Tvar[Tage[kk]][1]=2 [2]=2 [3]=3 | * Tvar[Tage[kk]][1]=2 [2]=2 [3]=3 |
| */ | */ |
| Typevar[k]=2; /* 2 for double fixed dummy covariates */ | Typevar[k]=2; /* 2 for product */ |
| cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ | cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ |
| Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ | Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ |
| Tposprod[k]=k1; /* Tposprod[3]=1, Tposprod[2]=5 */ | Tposprod[k]=k1; /* Tposprod[3]=1, Tposprod[2]=5 */ |
| Line 10759 int decodemodel( char model[], int lasto | Line 11217 int decodemodel( char model[], int lasto |
| /* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ | /* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ |
| /*ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2, Tvar[3]=5, Tvar[4]=6, cptcovt=5 */ | /*ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2, Tvar[3]=5, Tvar[4]=6, cptcovt=5 */ |
| /* 1 2 3 4 5 | Tvar[5+1)=1, Tvar[7]=2 */ | /* 1 2 3 4 5 | Tvar[5+1)=1, Tvar[7]=2 */ |
| for (i=1; i<=lastobs;i++){ | if( FixedV[Tvardk[k][1]] == 0 && FixedV[Tvardk[k][2]] == 0){ /* If the product is a fixed covariate then we feed the new column with Vn*Vm */ |
| for (i=1; i<=lastobs;i++){/* For fixed product */ | |
| /* Computes the new covariate which is a product of | /* Computes the new covariate which is a product of |
| covar[n][i]* covar[m][i] and stores it at ncovol+k1 May not be defined */ | covar[n][i]* covar[m][i] and stores it at ncovol+k1 May not be defined */ |
| covar[ncovcol+k1][i]=covar[atoi(stre)][i]*covar[atoi(strc)][i]; | covar[ncovcolt+k1][i]=covar[atoi(stre)][i]*covar[atoi(strc)][i]; |
| } | } |
| } /*End of FixedV */ | |
| } /* End age is not in the model */ | } /* End age is not in the model */ |
| } /* End if model includes a product */ | } /* End if model includes a product */ |
| else { /* not a product */ | else { /* not a product */ |
| Line 10814 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11274 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ | Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
| Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ | Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
| Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); | Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); |
| for(k=-1;k<=cptcovt; k++){ Fixed[k]=0; Dummy[k]=0;} | for(k=-1;k<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;} |
| for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0;k<=cptcovt; k++){ /* or cptocvt */ | for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;} |
| for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt loop on k from model */ | |
| if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */ | if (Tvar[k] <=ncovcol && Typevar[k]==0 ){ /* Simple fixed dummy (<=ncovcol) covariates */ |
| Fixed[k]= 0; | Fixed[k]= 0; |
| Dummy[k]= 0; | Dummy[k]= 0; |
| Line 10830 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11291 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| }else if( Tvar[k] <=ncovcol && Typevar[k]==2){ /* Product of fixed dummy (<=ncovcol) covariates */ | /* }else if( Tvar[k] <=ncovcol && Typevar[k]==2){ /\* Product of fixed dummy (<=ncovcol) covariates For a fixed product k is higher than ncovcol *\/ */ |
| }else if( Tposprod[k]>0 && Typevar[k]==2 && FixedV[Tvardk[k][1]] == 0 && FixedV[Tvardk[k][2]] == 0){ /* Needs a fixed product Product of fixed dummy (<=ncovcol) covariates For a fixed product k is higher than ncovcol */ | |
| Fixed[k]= 0; | Fixed[k]= 0; |
| Dummy[k]= 0; | Dummy[k]= 0; |
| ncoveff++; | ncoveff++; |
| Line 10856 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11318 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarFQ[nqfveff]=Tvar[k]-ncovcol; /* TvarFQ[1]=V2-1=1st in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ | TvarFQ[nqfveff]=Tvar[k]-ncovcol; /* TvarFQ[1]=V2-1=1st in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
| TvarFQind[nqfveff]=k; /* TvarFQind[1]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ | TvarFQind[nqfveff]=k; /* TvarFQind[1]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple fixed quantitative variable */ |
| }else if( Tvar[k] <=ncovcol+nqv+ntv && Typevar[k]==0){/* Only simple time varying dummy variables */ | }else if( Tvar[k] <=ncovcol+nqv+ntv && Typevar[k]==0){/* Only simple time varying dummy variables */ |
| /*# ID V1 V2 weight birth death 1st s1 V3 V4 V5 2nd s2 */ | |
| /* model V1+V3+age*V1+age*V3+V1*V3 */ | |
| /* Tvar={1, 3, 1, 3, 6}, the 6 comes from the fact that there are already V1, V2, V3, V4, V5 native covariates */ | |
| ncovvt++; | |
| TvarVV[ncovvt]=Tvar[k]; /* TvarVV[1]=V3 (first time varying in the model equation */ | |
| TvarVVind[ncovvt]=k; /* TvarVVind[1]=2 (second position in the model equation */ | |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 0; | Dummy[k]= 0; |
| ntveff++; /* Only simple time varying dummy variable */ | ntveff++; /* Only simple time varying dummy variable */ |
| Line 10873 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11342 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| printf("Quasi Tmodelind[%d]=%d,Tvar[Tmodelind[%d]]=V%d, ncovcol=%d, nqv=%d,Tvar[k]- ncovcol-nqv=%d\n",ntveff,k,ntveff,Tvar[k], ncovcol, nqv,Tvar[k]- ncovcol-nqv); | printf("Quasi Tmodelind[%d]=%d,Tvar[Tmodelind[%d]]=V%d, ncovcol=%d, nqv=%d,Tvar[k]- ncovcol-nqv=%d\n",ntveff,k,ntveff,Tvar[k], ncovcol, nqv,Tvar[k]- ncovcol-nqv); |
| printf("Quasi TmodelInvind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv); | printf("Quasi TmodelInvind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv); |
| }else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv && Typevar[k]==0){ /* Only simple time varying quantitative variable V5*/ | }else if( Tvar[k] <=ncovcol+nqv+ntv+nqtv && Typevar[k]==0){ /* Only simple time varying quantitative variable V5*/ |
| /*# ID V1 V2 weight birth death 1st s1 V3 V4 V5 2nd s2 */ | |
| /* model V1+V3+age*V1+age*V3+V1*V3 */ | |
| /* Tvar={1, 3, 1, 3, 6}, the 6 comes from the fact that there are already V1, V2, V3, V4, V5 native covariates */ | |
| ncovvt++; | |
| TvarVV[ncovvt]=Tvar[k]; /* TvarVV[1]=V3 (first time varying in the model equation */ | |
| TvarVVind[ncovvt]=k; /* TvarVV[1]=V3 (first time varying in the model equation */ | |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| nqtveff++; | nqtveff++; |
| Line 10888 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11364 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarVQind[nqtveff]=k; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ | TvarVQind[nqtveff]=k; /* TvarVQind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
| TmodelInvQind[nqtveff]=Tvar[k]- ncovcol-nqv-ntv;/* Only simple time varying quantitative variable */ | TmodelInvQind[nqtveff]=Tvar[k]- ncovcol-nqv-ntv;/* Only simple time varying quantitative variable */ |
| /* Tmodeliqind[k]=nqtveff;/\* Only simple time varying quantitative variable *\/ */ | /* Tmodeliqind[k]=nqtveff;/\* Only simple time varying quantitative variable *\/ */ |
| printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv); | /* printf("Quasi TmodelQind[%d]=%d,Tvar[TmodelQind[%d]]=V%d, ncovcol=%d, nqv=%d, ntv=%d,Tvar[k]- ncovcol-nqv-ntv=%d\n",nqtveff,k,nqtveff,Tvar[k], ncovcol, nqv, ntv, Tvar[k]- ncovcol-nqv-ntv); */ |
| printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv); | /* printf("Quasi TmodelInvQind[%d]=%d\n",k,Tvar[k]- ncovcol-nqv-ntv); */ |
| }else if (Typevar[k] == 1) { /* product with age */ | }else if (Typevar[k] == 1) { /* product with age */ |
| ncova++; | ncova++; |
| TvarA[ncova]=Tvar[k]; | TvarA[ncova]=Tvar[k]; |
| Line 10919 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11395 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| modell[k].subtype= APVQ; /* Product age * varying quantitative */ | modell[k].subtype= APVQ; /* Product age * varying quantitative */ |
| /* nqtveff++;/\* Only simple time varying quantitative variable *\/ */ | /* nqtveff++;/\* Only simple time varying quantitative variable *\/ */ |
| } | } |
| }else if (Typevar[k] == 2) { /* product without age */ | }else if (Typevar[k] == 2) { /* product Vn * Vm without age, V1+V3+age*V1+age*V3+V1*V3 looking at V1*V3, Typevar={0, 0, 1, 1, 2}, k=5, V1 is fixed, V3 is timevary, V5 is a product */ |
| k1=Tposprod[k]; | /*# ID V1 V2 weight birth death 1st s1 V3 V4 V5 2nd s2 */ |
| if(Tvard[k1][1] <=ncovcol){ | /* model V1+V3+age*V1+age*V3+V1*V3 */ |
| if(Tvard[k1][2] <=ncovcol){ | /* Tvar={1, 3, 1, 3, 6}, the 6 comes from the fact that there are already V1, V2, V3, V4, V5 native covariates */ |
| k1=Tposprod[k]; /* Position in the products of product k, Tposprod={0, 0, 0, 0, 1} k1=1 first product but second time varying because of V3 */ | |
| ncovvt++; | |
| TvarVV[ncovvt]=Tvard[k1][1]; /* TvarVV[2]=V1 (because TvarVV[1] was V3, first time varying covariates */ | |
| TvarVVind[ncovvt]=k; /* TvarVVind[2]=5 (because TvarVVind[2] was V1*V3 at position 5 */ | |
| ncovvt++; | |
| TvarVV[ncovvt]=Tvard[k1][2]; /* TvarVV[3]=V3 */ | |
| TvarVVind[ncovvt]=k; /* TvarVVind[2]=5 (because TvarVVind[2] was V1*V3 at position 5 */ | |
| if(Tvard[k1][1] <=ncovcol){ /* Vn is dummy fixed, (Tvard[1][1]=V1), (Tvard[1][1]=V3 time varying) */ | |
| if(Tvard[k1][2] <=ncovcol){ /* Vm is dummy fixed */ | |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 0; | Dummy[k]= 0; |
| modell[k].maintype= FTYPE; | modell[k].maintype= FTYPE; |
| Line 10930 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11417 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| ncovf++; /* Fixed variables without age */ | ncovf++; /* Fixed variables without age */ |
| TvarF[ncovf]=Tvar[k]; | TvarF[ncovf]=Tvar[k]; |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| }else if(Tvard[k1][2] <=ncovcol+nqv){ | }else if(Tvard[k1][2] <=ncovcol+nqv){ /* Vm is quanti fixed */ |
| Fixed[k]= 0; /* or 2 ?*/ | Fixed[k]= 0; /* Fixed product */ |
| Dummy[k]= 1; | Dummy[k]= 1; |
| modell[k].maintype= FTYPE; | modell[k].maintype= FTYPE; |
| modell[k].subtype= FPDQ; /* Product fixed dummy * fixed quantitative */ | modell[k].subtype= FPDQ; /* Product fixed dummy * fixed quantitative */ |
| ncovf++; /* Varying variables without age */ | ncovf++; /* Varying variables without age */ |
| TvarF[ncovf]=Tvar[k]; | TvarF[ncovf]=Tvar[k]; |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| }else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ | }else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ /* Vm is a time varying dummy covariate */ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 0; | Dummy[k]= 0; |
| modell[k].maintype= VTYPE; | modell[k].maintype= VTYPE; |
| modell[k].subtype= VPDD; /* Product fixed dummy * varying dummy */ | modell[k].subtype= VPDD; /* Product fixed dummy * varying dummy */ |
| ncovv++; /* Varying variables without age */ | ncovv++; /* Varying variables without age */ |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; /* TvarV[1]=Tvar[5]=5 because there is a V4 */ |
| TvarVind[ncovv]=k; | TvarVind[ncovv]=k;/* TvarVind[1]=5 */ |
| }else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ | }else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ /* Vm is a time varying quantitative covariate */ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| modell[k].maintype= VTYPE; | modell[k].maintype= VTYPE; |
| Line 10955 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11442 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; |
| TvarVind[ncovv]=k; | TvarVind[ncovv]=k; |
| } | } |
| }else if(Tvard[k1][1] <=ncovcol+nqv){ | }else if(Tvard[k1][1] <=ncovcol+nqv){ /* Vn is fixed quanti */ |
| if(Tvard[k1][2] <=ncovcol){ | if(Tvard[k1][2] <=ncovcol){ /* Vm is fixed dummy */ |
| Fixed[k]= 0; /* or 2 ?*/ | Fixed[k]= 0; /* Fixed product */ |
| Dummy[k]= 1; | Dummy[k]= 1; |
| modell[k].maintype= FTYPE; | modell[k].maintype= FTYPE; |
| modell[k].subtype= FPDQ; /* Product fixed quantitative * fixed dummy */ | modell[k].subtype= FPDQ; /* Product fixed quantitative * fixed dummy */ |
| ncovf++; /* Fixed variables without age */ | ncovf++; /* Fixed variables without age */ |
| TvarF[ncovf]=Tvar[k]; | TvarF[ncovf]=Tvar[k]; |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| }else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ | }else if(Tvard[k1][2] <=ncovcol+nqv+ntv){ /* Vm is time varying */ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| modell[k].maintype= VTYPE; | modell[k].maintype= VTYPE; |
| Line 10972 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11459 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| ncovv++; /* Varying variables without age */ | ncovv++; /* Varying variables without age */ |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; |
| TvarVind[ncovv]=k; | TvarVind[ncovv]=k; |
| }else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ | }else if(Tvard[k1][2] <=ncovcol+nqv+ntv+nqtv){ /* Vm is time varying quanti */ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| modell[k].maintype= VTYPE; | modell[k].maintype= VTYPE; |
| Line 10984 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11471 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; |
| TvarVind[ncovv]=k; | TvarVind[ncovv]=k; |
| } | } |
| }else if(Tvard[k1][1] <=ncovcol+nqv+ntv){ | }else if(Tvard[k1][1] <=ncovcol+nqv+ntv){ /* Vn is time varying dummy */ |
| if(Tvard[k1][2] <=ncovcol){ | if(Tvard[k1][2] <=ncovcol){ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| Line 11018 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11505 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; |
| TvarVind[ncovv]=k; | TvarVind[ncovv]=k; |
| } | } |
| }else if(Tvard[k1][1] <=ncovcol+nqv+ntv+nqtv){ | }else if(Tvard[k1][1] <=ncovcol+nqv+ntv+nqtv){ /* Vn is time varying quanti */ |
| if(Tvard[k1][2] <=ncovcol){ | if(Tvard[k1][2] <=ncovcol){ |
| Fixed[k]= 1; | Fixed[k]= 1; |
| Dummy[k]= 1; | Dummy[k]= 1; |
| Line 11060 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11547 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| printf("Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); | printf("Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
| fprintf(ficlog,"Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); | fprintf(ficlog,"Error, current version can't treat for performance reasons, Tvar[%d]=%d, Typevar[%d]=%d\n", k, Tvar[k], k, Typevar[k]); |
| } | } |
| printf("Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]); | /* printf("Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]); */ |
| printf(" modell[%d].maintype=%d, modell[%d].subtype=%d\n",k,modell[k].maintype,k,modell[k].subtype); | /* printf(" modell[%d].maintype=%d, modell[%d].subtype=%d\n",k,modell[k].maintype,k,modell[k].subtype); */ |
| fprintf(ficlog,"Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]); | fprintf(ficlog,"Decodemodel, k=%d, Tvar[%d]=V%d,Typevar=%d, Fixed=%d, Dummy=%d\n",k, k,Tvar[k],Typevar[k],Fixed[k],Dummy[k]); |
| } | } |
| /* Searching for doublons in the model */ | /* Searching for doublons in the model */ |
| Line 11071 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11558 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| if((Typevar[k1]==Typevar[k2]) && (Fixed[k1]==Fixed[k2]) && (Dummy[k1]==Dummy[k2] )){ | if((Typevar[k1]==Typevar[k2]) && (Fixed[k1]==Fixed[k2]) && (Dummy[k1]==Dummy[k2] )){ |
| if((Typevar[k1] == 0 || Typevar[k1] == 1)){ /* Simple or age product */ | if((Typevar[k1] == 0 || Typevar[k1] == 1)){ /* Simple or age product */ |
| if(Tvar[k1]==Tvar[k2]){ | if(Tvar[k1]==Tvar[k2]){ |
| printf("Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[k1],Dummy[k1]); | printf("Error duplication in the model=1+age+%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[k1],Dummy[k1]); |
| fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[k1],Dummy[k1]); fflush(ficlog); | fprintf(ficlog,"Error duplication in the model=1+age+%s at positions (+) %d and %d, Tvar[%d]=V%d, Tvar[%d]=V%d, Typevar=%d, Fixed=%d, Dummy=%d\n", model, k1,k2, k1, Tvar[k1], k2, Tvar[k2],Typevar[k1],Fixed[k1],Dummy[k1]); fflush(ficlog); |
| return(1); | return(1); |
| } | } |
| }else if (Typevar[k1] ==2){ | }else if (Typevar[k1] ==2){ |
| k3=Tposprod[k1]; | k3=Tposprod[k1]; |
| k4=Tposprod[k2]; | k4=Tposprod[k2]; |
| if( ((Tvard[k3][1]== Tvard[k4][1])&&(Tvard[k3][2]== Tvard[k4][2])) || ((Tvard[k3][1]== Tvard[k4][2])&&(Tvard[k3][2]== Tvard[k4][1])) ){ | if( ((Tvard[k3][1]== Tvard[k4][1])&&(Tvard[k3][2]== Tvard[k4][2])) || ((Tvard[k3][1]== Tvard[k4][2])&&(Tvard[k3][2]== Tvard[k4][1])) ){ |
| printf("Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); | printf("Error duplication in the model=1+age+%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); |
| fprintf(ficlog,"Error duplication in the model=%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); | fprintf(ficlog,"Error duplication in the model=1+age+%s at positions (+) %d and %d, V%d*V%d, Typevar=%d, Fixed=%d, Dummy=%d\n",model, k1,k2, Tvard[k3][1], Tvard[k3][2],Typevar[k1],Fixed[Tvar[k1]],Dummy[Tvar[k1]]); fflush(ficlog); |
| return(1); | return(1); |
| } | } |
| } | } |
| Line 11436 int prevalence_limit(double *p, double * | Line 11923 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(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| /* 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++){ */ |
| Line 11450 int prevalence_limit(double *p, double * | Line 11939 int prevalence_limit(double *p, double * |
| 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*\/ */ |
| fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* Here problem for varying dummy*/ | /* printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[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,TnsdVar[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]]); |
| } | printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | fprintf(ficlog," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | } |
| fprintf(ficrespl," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* 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 11472 int prevalence_limit(double *p, double * | Line 11963 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,TnsdVar[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,TnsdVar[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 11492 int prevalence_limit(double *p, double * | Line 11989 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 11535 int back_prevalence_limit(double *p, dou | Line 12032 int back_prevalence_limit(double *p, dou |
| 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++){ /* 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) | k=TKresult[nres]; |
| continue; | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| /*printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));*/ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| /* continue; */ | |
| /* /\*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<=cptcovs ;j++) {/**< cptcovs number of SIMPLE covariates in the model or resultline V2+V1 =2 (dummy or quantit or time varying) */ |
| fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficresplb," 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]])]); | fprintf(ficlog," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| } | } |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | /* for(j=1;j<=cptcoveff ;j++) {/\* all covariates *\/ */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | /* fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[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][resultmodel[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=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[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][resultmodel[nres][j]]); */ | |
| /* } */ | |
| fprintf(ficresplb,"******\n"); | fprintf(ficresplb,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| fprintf(ficlog,"******\n"); | fprintf(ficlog,"******\n"); |
| Line 11563 int back_prevalence_limit(double *p, dou | Line 12067 int back_prevalence_limit(double *p, dou |
| } | } |
| fprintf(ficresplb,"#Age "); | fprintf(ficresplb,"#Age "); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcovs;j++) { |
| fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficresplb,"V%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][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 11587 int back_prevalence_limit(double *p, dou | Line 12091 int back_prevalence_limit(double *p, dou |
| /* exit(1); */ | /* exit(1); */ |
| } | } |
| fprintf(ficresplb,"%.0f ",age ); | fprintf(ficresplb,"%.0f ",age ); |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcovs;j++) |
| fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficresplb,"%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 += bprlim[i][i]; | tot += bprlim[i][i]; |
| Line 11598 int back_prevalence_limit(double *p, dou | Line 12102 int back_prevalence_limit(double *p, dou |
| } /* Age */ | } /* Age */ |
| /* was end of cptcod */ | /* was end of cptcod */ |
| /*fprintf(ficresplb,"\n");*/ /* Seems to be necessary for gnuplot only if two result lines and no covariate. */ | /*fprintf(ficresplb,"\n");*/ /* Seems to be necessary for gnuplot only if two result lines and no covariate. */ |
| } /* end of any combination */ | /* } /\* end of any combination *\/ */ |
| } /* end of nres */ | } /* end of nres */ |
| /* hBijx(p, bage, fage); */ | /* hBijx(p, bage, fage); */ |
| /* fclose(ficrespijb); */ | /* fclose(ficrespijb); */ |
| Line 11608 int back_prevalence_limit(double *p, dou | Line 12112 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 11618 int hPijx(double *p, int bage, int fage) | Line 12122 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) | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| continue; | /* for(k=1; k<=i1;k++){ */ |
| fprintf(ficrespij,"\n#****** "); | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| for(j=1;j<=cptcoveff;j++) | /* continue; */ |
| fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficrespij,"\n#****** "); |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | for(j=1;j<=cptcovs;j++){ |
| printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | fprintf(ficrespij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* fprintf(ficrespij,"@wV%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| } | /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ |
| fprintf(ficrespij,"******\n"); | /* printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ |
| /* fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | |
| for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ | } |
| nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ | fprintf(ficrespij,"******\n"); |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */ | |
| for (agedeb=fage; agedeb>=bage; agedeb--){ /* If stepm=6 months */ | |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | nhstepm=(int) rint((agelim-agedeb)*YEARM/stepm); /* Typically 20 years = 20*12/6=40 */ |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10 */ | |
| p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); | |
| oldm=oldms;savm=savms; | /* nhstepm=nhstepm*YEARM; aff par mois*/ |
| hpxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k, nres); | |
| fprintf(ficrespij,"# Cov Agex agex+h hpijx with i,j="); | p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| 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 11720 int hPijx(double *p, int bage, int fage) | Line 12227 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) | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| continue; | /* for(k=1; k<=i1;k++){ /\* For any combination of dummy covariates, fixed and varying *\/ */ |
| fprintf(ficrespijb,"\n#****** "); | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| for(j=1;j<=cptcoveff;j++) | /* continue; */ |
| 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 */ | for(j=1;j<=cptcovs;j++){ |
| fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | fprintf(ficrespijb," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| } | /* for(j=1;j<=cptcoveff;j++) */ |
| fprintf(ficrespijb,"******\n"); | /* fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| if(invalidvarcomb[k]){ /* Is it necessary here? */ | /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ |
| fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); | /* fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| continue; | } |
| } | fprintf(ficrespijb,"******\n"); |
| if(invalidvarcomb[k]){ /* Is it necessary here? */ | |
| /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ | fprintf(ficrespijb,"\n#Combination (%d) ignored because no cases \n",k); |
| for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ | continue; |
| /* 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 */ | |
| nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 or 28*/ | /* for (agedeb=fage; agedeb>=bage; agedeb--){ /\* If stepm=6 months *\/ */ |
| for (agedeb=bage; agedeb<=fage; agedeb++){ /* If stepm=6 months and estepm=24 (2 years) */ | |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | /* 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 */ | |
| p3mat=ma3x(1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); /* We can't have it at an upper level because of nhstepm */ | nhstepm = nhstepm/hstepm; /* Typically 40/4=10, because estepm=24 stepm=6 => hstepm=24/6=4 or 28*/ |
| /* and memory limitations if stepm is small */ | |
| /* nhstepm=nhstepm*YEARM; aff par mois*/ | |
| /* oldm=oldms;savm=savms; */ | |
| /* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ | 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,prevacurrent,nlstate,stepm, k, nres);/* Bug valgrind */ | /* and memory limitations if stepm is small */ |
| /* 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="); | /* oldm=oldms;savm=savms; */ |
| /* 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"); | fprintf(ficrespijb,"\n"); |
| for (h=0; h<=nhstepm; h++){ | } |
| /*agedebphstep = agedeb + h*hstepm/YEARM*stepm;*/ | free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
| fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb - h*hstepm/YEARM*stepm ); | fprintf(ficrespijb,"\n"); |
| /* fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); */ | } /* end age deb */ |
| for(i=1; i<=nlstate;i++) | /* } /\* end combination *\/ */ |
| 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"); | |
| } /* end age deb */ | |
| } /* end combination */ | |
| } /* end nres */ | } /* end nres */ |
| return 0; | return 0; |
| } /* hBijx */ | } /* hBijx */ |
| Line 12163 int main(int argc, char *argv[]) | Line 12674 int main(int argc, char *argv[]) |
| strcpy(model,modeltemp); | strcpy(model,modeltemp); |
| } | } |
| } | } |
| /* printf(" model=1+age%s modeltemp= %s, model=%s\n",model, modeltemp, model);fflush(stdout); */ | /* printf(" model=1+age%s modeltemp= %s, model=1+age+%s\n",model, modeltemp, model);fflush(stdout); */ |
| printf("model=1+age+%s\n",model);fflush(stdout); | printf("model=1+age+%s\n",model);fflush(stdout); |
| fprintf(ficparo,"model=1+age+%s\n",model);fflush(stdout); | fprintf(ficparo,"model=1+age+%s\n",model);fflush(stdout); |
| fprintf(ficres,"model=1+age+%s\n",model);fflush(stdout); | fprintf(ficres,"model=1+age+%s\n",model);fflush(stdout); |
| Line 12191 int main(int argc, char *argv[]) | Line 12702 int main(int argc, char *argv[]) |
| numlinepar++; | numlinepar++; |
| if(line[1]=='q'){ /* This #q will quit imach (the answer is q) */ | if(line[1]=='q'){ /* This #q will quit imach (the answer is q) */ |
| z[0]=line[1]; | z[0]=line[1]; |
| }else if(line[1]=='d'){ /* For debugging individual values of covariates in ficresilk */ | |
| debugILK=1;printf("DebugILK\n"); | |
| } | } |
| /* printf("****line [1] = %c \n",line[1]); */ | /* printf("****line [1] = %c \n",line[1]); */ |
| fputs(line, stdout); | fputs(line, stdout); |
| Line 12204 int main(int argc, char *argv[]) | Line 12717 int main(int argc, char *argv[]) |
| covar=matrix(0,NCOVMAX,firstobs,lastobs); /**< used in readdata */ | covar=matrix(0,NCOVMAX,firstobs,lastobs); /**< used in readdata */ |
| if(nqv>=1)coqvar=matrix(1,nqv,firstobs,lastobs); /**< Fixed quantitative covariate */ | if(nqv>=1)coqvar=matrix(1,nqv,firstobs,lastobs); /**< Fixed quantitative covariate */ |
| if(nqtv>=1)cotqvar=ma3x(1,maxwav,1,nqtv,firstobs,lastobs); /**< Time varying quantitative covariate */ | if(nqtv>=1)cotqvar=ma3x(1,maxwav,1,nqtv,firstobs,lastobs); /**< Time varying quantitative covariate */ |
| if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,1,ntv+nqtv,firstobs,lastobs); /**< Time varying covariate (dummy and quantitative)*/ | /* if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,1,ntv+nqtv,firstobs,lastobs); /\**< Time varying covariate (dummy and quantitative)*\/ */ |
| if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,ncovcol+nqv+1,ncovcol+nqv+ntv+nqtv,firstobs,lastobs); /**< Might be better */ | |
| cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ | cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ |
| /* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 | /* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 |
| v1+v2*age+v2*v3 makes cptcovn = 3 | v1+v2*age+v2*v3 makes cptcovn = 3 |
| Line 12447 Please run with mle=-1 to get a correct | Line 12961 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 12485 Please run with mle=-1 to get a correct | Line 12999 Please run with mle=-1 to get a correct |
| TvarVDind=ivector(1,NCOVMAX); /* */ | TvarVDind=ivector(1,NCOVMAX); /* */ |
| TvarVQ=ivector(1,NCOVMAX); /* */ | TvarVQ=ivector(1,NCOVMAX); /* */ |
| TvarVQind=ivector(1,NCOVMAX); /* */ | TvarVQind=ivector(1,NCOVMAX); /* */ |
| TvarVV=ivector(1,NCOVMAX); /* */ | |
| TvarVVind=ivector(1,NCOVMAX); /* */ | |
| Tvalsel=vector(1,NCOVMAX); /* */ | Tvalsel=vector(1,NCOVMAX); /* */ |
| Tvarsel=ivector(1,NCOVMAX); /* */ | Tvarsel=ivector(1,NCOVMAX); /* */ |
| Line 12594 Please run with mle=-1 to get a correct | Line 13110 Please run with mle=-1 to get a correct |
| } | } |
| ncovcombmax=pow(2,cptcoveff); | ncovcombmax=pow(2,cptcoveff); |
| invalidvarcomb=ivector(1, ncovcombmax); | invalidvarcomb=ivector(0, ncovcombmax); |
| for(i=1;i<ncovcombmax;i++) | for(i=0;i<ncovcombmax;i++) |
| invalidvarcomb[i]=0; | invalidvarcomb[i]=0; |
| /* Nbcode gives the value of the lth modality (currently 1 to 2) of jth covariate, in | /* Nbcode gives the value of the lth modality (currently 1 to 2) of jth covariate, in |
| Line 12740 Title=%s <br>Datafile=%s Firstpass=%d La | Line 13256 Title=%s <br>Datafile=%s Firstpass=%d La |
| fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\"> \n\ | 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\ |
| This file: <a href=\"%s\">%s</a>Title=%s <br>Datafile=<a href=\"%s\">%s</a> 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 13486 Please run with mle=-1 to get a correct | Line 14002 Please run with mle=-1 to get a correct |
| case 13: | case 13: |
| num_filled=sscanf(line,"result:%[^\n]\n",resultlineori); | num_filled=sscanf(line,"result:%[^\n]\n",resultlineori); |
| nresult++; /* Sum of resultlines */ | nresult++; /* Sum of resultlines */ |
| printf("Result %d: result:%s\n",nresult, resultlineori); | /* printf("Result %d: result:%s\n",nresult, resultlineori); */ |
| /* removefirstspace(&resultlineori); */ | /* removefirstspace(&resultlineori); */ |
| if(strstr(resultlineori,"v") !=0){ | if(strstr(resultlineori,"v") !=0){ |
| Line 13495 Please run with mle=-1 to get a correct | Line 14011 Please run with mle=-1 to get a correct |
| return 1; | return 1; |
| } | } |
| trimbb(resultline, resultlineori); /* Suppressing double blank in the resultline */ | trimbb(resultline, resultlineori); /* Suppressing double blank in the resultline */ |
| printf("Decoderesult resultline=\"%s\" resultlineori=\"%s\"\n", resultline, resultlineori); | /* 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); |
| Line 13742 Please run with mle=-1 to get a correct | Line 14258 Please run with mle=-1 to get a correct |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[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 ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ | 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 ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); | fprintf(ficreseij,"V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); |
| } | } |
| fprintf(ficreseij,"******\n"); | fprintf(ficreseij,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 13761 Please run with mle=-1 to get a correct | Line 14277 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 13832 Please run with mle=-1 to get a correct | Line 14348 Please run with mle=-1 to get a correct |
| /* Tvresult[nres][j] Name of the variable at position j in this resultline */ | /* 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 */ | /* Tresult[nres][j] Value of this variable at position j could be a float if quantitative */ |
| /* We give up with the combinations!! */ | /* 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(debugILK) */ |
| /* 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 */ | 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=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
| fprintf(ficlog,"V%d=%d ",Tvresult[nres][j],Tresult[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=%d ",Tvresult[nres][j],Tresult[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 */ | if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); |
| }else{ | }else{ |
| Line 13847 Please run with mle=-1 to get a correct | Line 14364 Please run with mle=-1 to get a correct |
| /* fprintf(ficlog,"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 */ | }else if(Dummy[modelresult[nres][j]]==1){ /* Quanti variable */ |
| /* For each selected (single) quantitative value */ | /* For each selected (single) quantitative value */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | 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 */ | if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); |
| }else{ | }else{ |
| Line 13870 Please run with mle=-1 to get a correct | Line 14389 Please run with mle=-1 to get a correct |
| 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 ",Tvresult[nres][j],Tresult[nres][j]); | fprintf(ficresstdeij,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); |
| /* fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[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]])]); */ | /* 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, TvarsQind gives the position of a quantitative in model equation */ | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value, TvarsQind gives the position of a quantitative in model equation */ |
| fprintf(ficresstdeij," V%d=%f ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); | fprintf(ficresstdeij," V%d=%lg ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); |
| fprintf(ficrescveij," V%d=%f ",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 13889 Please run with mle=-1 to get a correct | Line 14410 Please run with mle=-1 to get a correct |
| /* fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[TnsdVar[Tvaraff[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]); /\* To solve *\/ */ | /* fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); /\* To solve *\/ */ |
| fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /* Solved */ | fprintf(ficresvij," V%d=%lg ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /* Solved */ |
| } | } |
| fprintf(ficresvij,"******\n"); | fprintf(ficresvij,"******\n"); |
| Line 14002 Please run with mle=-1 to get a correct | Line 14523 Please run with mle=-1 to get a correct |
| free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,firstobs,lastobs); | /* if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,firstobs,lastobs); */ |
| if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,ncovcol+nqv+1,ncovcol+nqv+ntv+nqtv,firstobs,lastobs); | |
| if(nqtv>=1)free_ma3x(cotqvar,1,maxwav,1,nqtv,firstobs,lastobs); | if(nqtv>=1)free_ma3x(cotqvar,1,maxwav,1,nqtv,firstobs,lastobs); |
| if(nqv>=1)free_matrix(coqvar,1,nqv,firstobs,lastobs); | if(nqv>=1)free_matrix(coqvar,1,nqv,firstobs,lastobs); |
| free_matrix(covar,0,NCOVMAX,firstobs,lastobs); | free_matrix(covar,0,NCOVMAX,firstobs,lastobs); |
| Line 14041 Please run with mle=-1 to get a correct | Line 14563 Please run with mle=-1 to get a correct |
| free_ivector(TvarVDind,1,NCOVMAX); | free_ivector(TvarVDind,1,NCOVMAX); |
| free_ivector(TvarVQ,1,NCOVMAX); | free_ivector(TvarVQ,1,NCOVMAX); |
| free_ivector(TvarVQind,1,NCOVMAX); | free_ivector(TvarVQind,1,NCOVMAX); |
| free_ivector(TvarVV,1,NCOVMAX); | |
| free_ivector(TvarVVind,1,NCOVMAX); | |
| free_ivector(Tvarsel,1,NCOVMAX); | free_ivector(Tvarsel,1,NCOVMAX); |
| free_vector(Tvalsel,1,NCOVMAX); | free_vector(Tvalsel,1,NCOVMAX); |
| free_ivector(Tposprod,1,NCOVMAX); | free_ivector(Tposprod,1,NCOVMAX); |
| free_ivector(Tprod,1,NCOVMAX); | free_ivector(Tprod,1,NCOVMAX); |
| free_ivector(Tvaraff,1,NCOVMAX); | free_ivector(Tvaraff,1,NCOVMAX); |
| free_ivector(invalidvarcomb,1,ncovcombmax); | free_ivector(invalidvarcomb,0,ncovcombmax); |
| free_ivector(Tage,1,NCOVMAX); | free_ivector(Tage,1,NCOVMAX); |
| free_ivector(Tmodelind,1,NCOVMAX); | free_ivector(Tmodelind,1,NCOVMAX); |
| free_ivector(TmodelInvind,1,NCOVMAX); | free_ivector(TmodelInvind,1,NCOVMAX); |