|
|
| version 1.337, 2022/09/02 14:26:02 | version 1.346, 2022/09/16 13:52:36 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.346 2022/09/16 13:52:36 brouard | |
| * src/imach.c (Module): 0.99r41 Was an error when product of timevarying and fixed. Using FixedV[of name] now. Thank you Feinuo | |
| Revision 1.345 2022/09/16 13:40:11 brouard | |
| Summary: Version 0.99r41 | |
| * imach.c (Module): 0.99r41 Was an error when product of timevarying and fixed. Using FixedV[of name] now. Thank you Feinuo | |
| Revision 1.344 2022/09/14 19:33:30 brouard | |
| Summary: version 0.99r40 | |
| * imach.c (Module): Fixing names of variables in T_ (thanks to Feinuo) | |
| Revision 1.343 2022/09/14 14:22:16 brouard | |
| Summary: version 0.99r39 | |
| * imach.c (Module): Version 0.99r39 with colored dummy covariates | |
| (fixed or time varying), using new last columns of | |
| ILK_parameter.txt file. | |
| Revision 1.342 2022/09/11 19:54:09 brouard | |
| Summary: 0.99r38 | |
| * 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 | Revision 1.337 2022/09/02 14:26:02 brouard |
| Summary: version 0.99r35 | Summary: version 0.99r35 |
| Line 1258 typedef struct { | Line 1314 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 1303 char fullversion[]="$Revision$ $Date$"; | Line 1361 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 1315 int cptcovprodnoage=0; /**< Number of co | Line 1374 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 1330 int npar=NPARMAX; /* Number of parameter | Line 1390 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 1479 double **covar; /**< covar[j,i], value | Line 1540 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 1491 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1552 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 1504 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1565 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 1517 int **nbcode, *Tvar; /**< model=V2 => Tv | Line 1578 int **nbcode, *Tvar; /**< model=V2 => Tv |
| /*TnsdVar[Tvar] 1 2 3 */ | /*TnsdVar[Tvar] 1 2 3 */ |
| /*Tvaraff[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ | /*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 1572 int *TvarVD; /* TvarVD[1]=V5 in V5+V4+V3 | Line 1633 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 2510 void powell(double p[], double **xi, int | Line 2577 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 2824 void powell(double p[], double **xi, int | Line 2892 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 3272 double **pmij(double **ps, double *cov, | Line 3340 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 3855 double func( double *x) | Line 3923 double func( double *x) |
| { | { |
| 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 3886 double func( double *x) | Line 3957 double func( double *x) |
| */ | */ |
| ioffset=2+nagesqr ; | ioffset=2+nagesqr ; |
| /* Fixed */ | /* Fixed */ |
| for (kf=1; kf<=ncovf;kf++){ /* For each fixed covariate dummu or quant or prod */ | for (kf=1; kf<=ncovf;kf++){ /* For each fixed covariate dummy 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 */ |
| Line 3902 double func( double *x) | Line 3973 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++){ /* 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) */ |
| for(k=1; k <= ncovv ; k++){ /* Varying covariates in the model (single and product but no age )"V5+V4+V3+V4*V3+V5*age+V1*age+V1" +TvarVind 1,2,3,4(V4*V3) Tvar[1]@7{5, 4, 3, 6, 5, 1, 1 ; 6 because the created covar is after V5 and is 6, minus 1+1, 3,2,1,4 positions in cotvar*/ | /* for(k=1; k <= ncovv ; k++){ /\* Varying covariates in the model (single and product but no age )"V5+V4+V3+V4*V3+V5*age+V1*age+V1" +TvarVind 1,2,3,4(V4*V3) Tvar[1]@7{5, 4, 3, 6, 5, 1, 1 ; 6 because the created covar is after V5 and is 6, minus 1+1, 3,2,1,4 positions in cotvar*\/ */ |
| /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? */ | /* /\* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? *\/ */ |
| cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; | /* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; */ |
| } | /* } */ |
| 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(FixedV[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[itv][i]; /* Error: TvarFind gives the name, that is the true column of fixed covariates, but Tvar of the model */ | |
| } | |
| 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); |
| Line 3930 double func( double *x) | Line 4030 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 4026 double func( double *x) | Line 4126 double func( double *x) |
| } | } |
| /*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 4043 double func( double *x) | Line 4143 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 4090 double func( double *x) | Line 4190 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 4146 double func( double *x) | Line 4249 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 4165 double func( double *x) | Line 4268 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 4196 double funcone( double *x) | Line 4302 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 4228 double funcone( double *x) | Line 4337 double funcone( double *x) |
| /* 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 4247 double funcone( double *x) | Line 4359 double funcone( 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 in the DATA is the cotvar[mw[mi+1][i]][ncovcol+nqv+iv][i] |
| But if the variable is not in the model TTvar[iv] is the real variable effective in the model: | |
| meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] | |
| */ | */ |
| /* This part may be useless now because everythin should be in covar */ | /* 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 *\/ */ |
| Line 4261 double funcone( double *x) | Line 4371 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 | |
| */ | |
| /* Other model ncovcol=5 nqv=0 ntv=3 nqtv=0 nlstate=3 | |
| * V2 V3 V4 are fixed V6 V7 are timevarying so V8 and V5 are not in the model and product column will start at 9 Tvar[4]=6 | |
| * FixedV[ncovcol+qv+ntv+nqtv] V5 | |
| * V1 V2 V3 V4 V5 V6 V7 V8 | |
| * 0 0 0 0 0 1 1 1 | |
| * model= V2 + V3 + V4 + V6 + V7 + V6*V2 + V7*V2 + V6*V3 + V7*V3 + V6*V4 + V7*V4 | |
| * kmodel 1 2 3 4 5 6 7 8 9 10 11 | |
| * ncovf 1 2 3 | |
| * ncovvt=14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
| * TvarVV[1]@14 = itv {6, 7, 6, 2, 7, 2, 6, 3, 7, 3, 6, 4, 7, 4} | |
| * TvarVVind[1]@14= {4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11} | |
| * TvarFind[1]@14= {1, 2, 3, 0 <repeats 12 times>} | |
| * Tvar[1]@20= {2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14} | |
| * TvarFind[itv] 0 0 0 | |
| * FixedV[itv] 1 1 1 0 1 0 1 0 1 0 0 | |
| * Tvar[TvarFind[ncovf]]=[1]=2 [2]=3 [4]=4 | |
| * Tvar[TvarFind[itv]] [0]=? ?ncovv 1 Ã ncovvt] | |
| * Not a fixed cotvar[mw][itv][i] 6 7 6 2 7, 2, 6, 3, 7, 3, 6, 4, 7, 4} | |
| * fixed covar[itv] [6] [7] [6][2] | |
| */ | |
| 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, exploding product */ | |
| 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? Could be a fixed covariate of a product with a higher than ncovcol+nqv, itv *\/ */ | |
| if(FixedV[itv]!=0){ /* Not a fixed covariate? Could be a fixed covariate of a product with a higher than ncovcol+nqv, itv */ | |
| cotvarv=cotvar[mw[mi][i]][TvarVV[ncovv]][i]; /* because cotvar starts now at first ncovcol+nqv+ntv+nqtv (1 to nqtv) */ | |
| }else{ /* fixed covariate */ | |
| /* cotvarv=covar[Tvar[TvarFind[itv]]][i]; /\* Error: TvarFind gives the name, that is the true column of fixed covariates, but Tvar of the model *\/ */ | |
| cotvarv=covar[itv][i]; /* Error: TvarFind gives the name, that is the true column of fixed covariates, but Tvar of the model */ | |
| } | |
| 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 4298 double funcone( double *x) | Line 4472 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 4353 double funcone( double *x) | Line 4527 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 4380 double funcone( double *x) | Line 4583 double funcone( double *x) |
| gipmx=ipmx; | gipmx=ipmx; |
| gsw=sw; | gsw=sw; |
| } | } |
| return -l; | return -l; |
| } | } |
| Line 4391 void likelione(FILE *ficres,double p[], | Line 4594 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 4401 void likelione(FILE *ficres,double p[], | Line 4605 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 4419 void likelione(FILE *ficres,double p[], | Line 4653 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 5129 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5415 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 5150 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5436 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 5231 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5518 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 5439 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5726 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 5687 void prevalence(double ***probs, double | Line 5974 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 5996 void concatwav(int wav[], int **dh, int | Line 6283 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 6092 void concatwav(int wav[], int **dh, int | Line 6381 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 6558 void concatwav(int wav[], int **dh, int | Line 6847 void concatwav(int wav[], int **dh, int |
| /* fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ | /* 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*/ | for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ /* To be done*/ |
| /* fprintf(ficresprobmorprev," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); */ | |
| fprintf(ficresprobmorprev," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | 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++) */ |
| Line 7192 To be simple, these graphs help to under | Line 7482 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 7208 To be simple, these graphs help to under | Line 7498 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 7581 void printinghtml(char fileresu[], char | Line 7871 void printinghtml(char fileresu[], char |
| 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 */ |
| /* k1=nres; */ | /* k1=nres; */ |
| k1= TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0)k1=1; /* To be checked for no result */ | |
| /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ | /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| Line 7624 void printinghtml(char fileresu[], char | Line 7915 void printinghtml(char fileresu[], char |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| /* k1=nres; */ | /* k1=nres; */ |
| k1= TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ | /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| Line 7649 void printinghtml(char fileresu[], char | Line 7941 void printinghtml(char fileresu[], char |
| /* 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); */ |
| } | } |
| /* 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 7685 divided by h: <sub>h</sub>P<sub>ij</sub> | Line 7977 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 7769 See page 'Matrix of variance-covariance | Line 8062 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 7782 See page 'Matrix of variance-covariance | Line 8075 See page 'Matrix of variance-covariance |
| 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 */ |
| /* k1=nres; */ | /* k1=nres; */ |
| k1= TKresult[nres]; | k1=TKresult[nres]; |
| /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ | /* for(k1=1; k1<=m;k1++){ /\* For each combination of covariate *\/ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| Line 7812 See page 'Matrix of variance-covariance | Line 8105 See page 'Matrix of variance-covariance |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| /* k1=nres; */ | /* k1=nres; */ |
| k1= TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* for(k1=1; k1<=m;k1++){ */ | /* for(k1=1; k1<=m;k1++){ */ |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| Line 7832 See page 'Matrix of variance-covariance | Line 8126 See page 'Matrix of variance-covariance |
| /* 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)]); */ |
| } | } |
| 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); |
| Line 7863 void printinggnuplot(char fileresu[], ch | Line 8157 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 7889 void printinggnuplot(char fileresu[], ch | Line 8183 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 7926 void printinggnuplot(char fileresu[], ch | Line 8220 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*/ |
| Line 7933 void printinggnuplot(char fileresu[], ch | Line 8299 void printinggnuplot(char fileresu[], ch |
| /* 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]; | 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; */ |
| Line 7973 void printinggnuplot(char fileresu[], ch | Line 8340 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 8080 void printinggnuplot(char fileresu[], ch | Line 8447 void printinggnuplot(char fileresu[], ch |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); | fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
| Line 8151 void printinggnuplot(char fileresu[], ch | Line 8519 void printinggnuplot(char fileresu[], ch |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| Line 8212 plot [%.f:%.f] \"%s\" every :::%d::%d u | Line 8581 plot [%.f:%.f] \"%s\" every :::%d::%d u |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state cpt*/ |
| Line 8269 set ter svg size 640, 480\nunset log y\n | Line 8639 set ter svg size 640, 480\nunset log y\n |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each inital state */ |
| Line 8334 set ter svg size 640, 480\nunset log y\n | Line 8705 set ter svg size 640, 480\nunset log y\n |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* 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 */ |
| Line 8391 set ter svg size 640, 480\nunset log y\n | Line 8763 set ter svg size 640, 480\nunset log y\n |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life origin state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life origin state */ |
| Line 8453 set ter svg size 640, 480\nunset log y\n | Line 8826 set ter svg size 640, 480\nunset log y\n |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
| Line 8574 set ter svg size 640, 480\nunset log y\n | Line 8948 set ter svg size 640, 480\nunset log y\n |
| /* 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 */ |
| k1=TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| /* if(m != 1 && TKresult[nres]!= k1) */ | /* if(m != 1 && TKresult[nres]!= k1) */ |
| /* continue; */ | /* continue; */ |
| for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ | for (cpt=1; cpt<=nlstate ; cpt ++) { /* For each life state */ |
| Line 8651 set ter svg size 640, 480\nunset log y\n | Line 9026 set ter svg size 640, 480\nunset log y\n |
| kl=0; | kl=0; |
| strcpy(gplotcondition,"("); | strcpy(gplotcondition,"("); |
| for (k=1; k<=cptcovs; k++){ /* For each covariate k of the resultline, get corresponding value lv for combination k1 */ | for (k=1; k<=cptcovs; k++){ /* For each covariate k of the resultline, get corresponding value lv for combination k1 */ |
| if(Dummy[Tvresult[nres][k]]==0){ /* To be verified */ | if(Dummy[modelresult[nres][k]]==0){ /* To be verified */ |
| /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate writing the chain of conditions *\/ */ | /* for (k=1; k<=cptcoveff; k++){ /\* For each covariate writing the chain of conditions *\/ */ |
| /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ | /* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ | /* lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
| Line 8666 set ter svg size 640, 480\nunset log y\n | Line 9041 set ter svg size 640, 480\nunset log y\n |
| /* sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); */ | /* sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); */ |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%lg " ,kl,Tvresult[nres][k], kl+1,TinvDoQresult[nres][Tvresult[nres][k]]); | sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%lg " ,kl,Tvresult[nres][k], kl+1,TinvDoQresult[nres][Tvresult[nres][k]]); |
| kl++; | kl++; |
| if(k <cptcoveff && cptcoveff>1) | if(k <cptcovs && cptcovs>1) |
| sprintf(gplotcondition+strlen(gplotcondition)," && "); | sprintf(gplotcondition+strlen(gplotcondition)," && "); |
| } | } |
| } | } |
| Line 8733 set ter svg size 640, 480\nunset log y\n | Line 9108 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 */ |
| /* k1=nres; */ | /* k1=nres; */ |
| k1= TKresult[nres]; | k1=TKresult[nres]; |
| if(TKresult[nres]==0) k1=1; /* To be checked for noresult */ | |
| fprintf(ficgp,"\n\n# Resultline k1=%d ",k1); | fprintf(ficgp,"\n\n# Resultline k1=%d ",k1); |
| strcpy(gplotlabel,"("); | strcpy(gplotlabel,"("); |
| /*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ | /*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ |
| Line 9555 void prevforecast(char fileres[], double | Line 9931 void prevforecast(char fileres[], double |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| k=TKresult[nres]; | 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 *\/ */ | /* 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; |
| Line 9615 void prevforecast(char fileres[], double | Line 9992 void prevforecast(char fileres[], double |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| k=TKresult[nres]; | k=TKresult[nres]; |
| if(TKresult[nres]==0) k=1; /* To be checked for noresult */ | |
| /* for(k=1; k<=i1;k++){ */ | /* for(k=1; k<=i1;k++){ */ |
| /* if(i1 != 1 && TKresult[nres]!= k) */ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| /* continue; */ | /* continue; */ |
| Line 9622 void prevforecast(char fileres[], double | Line 10000 void prevforecast(char fileres[], double |
| printf("\n#****** "); | printf("\n#****** "); |
| fprintf(ficlog,"\n#****** "); | fprintf(ficlog,"\n#****** "); |
| for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ | for (j=1; j<= cptcovs; j++){ /* For each selected (single) quantitative value */ |
| printf(" V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); | printf(" V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| fprintf(ficresvbl," V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); | fprintf(ficresvbl," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| fprintf(ficlog," V%d=%lg ",Tvqresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); | fprintf(ficlog," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][resultmodel[nres][j]]); |
| /* for(j=1;j<=cptcoveff;j++) { */ | /* for(j=1;j<=cptcoveff;j++) { */ |
| /* fprintf(ficresvbl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | /* fprintf(ficresvbl,"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]])]); */ |
| Line 10120 int readdata(char datafile[], int firsto | Line 10498 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 10198 int readdata(char datafile[], int firsto | Line 10578 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 10218 int readdata(char datafile[], int firsto | Line 10598 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 10258 int readdata(char datafile[], int firsto | Line 10638 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 10471 int decoderesult( char resultline[], int | Line 10851 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 10520 int decoderesult( char resultline[], int | Line 10900 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 10531 int decoderesult( char resultline[], int | Line 10911 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 10588 int decoderesult( char resultline[], int | Line 10968 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 10621 int decoderesult( char resultline[], int | Line 11001 int decoderesult( char resultline[], int |
| /* k counting number of combination of single dummies in the equation model */ | /* k counting number of combination of single dummies in the equation model */ |
| /* k4 counting single dummies in the equation model */ | /* k4 counting single dummies in the equation model */ |
| /* k4q counting single quantitatives in the equation model */ | /* k4q counting single quantitatives in the equation model */ |
| if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, k1 is sorting according to MODEL, but k3 to resultline */ | if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, fixed or timevarying, k1 is sorting according to MODEL, but k3 to resultline */ |
| /* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ | /* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ |
| /* modelresult[k3]=k1: k3th position in the result line corresponds to the k1 position in the model line (doesn't work with products)*/ | /* modelresult[k3]=k1: k3th position in the result line corresponds to the k1 position in the model line (doesn't work with products)*/ |
| /* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */ | /* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */ |
| Line 10645 int decoderesult( char resultline[], int | Line 11025 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 10663 int decoderesult( char resultline[], int | Line 11043 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 10673 int decoderesult( char resultline[], int | Line 11053 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 10701 int decodemodel( char model[], int lasto | Line 11081 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 10725 int decodemodel( char model[], int lasto | Line 11106 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 10770 int decodemodel( char model[], int lasto | Line 11151 int decodemodel( char model[], int lasto |
| * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 | * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 |
| * k= 1 2 3 4 5 6 7 8 | * k= 1 2 3 4 5 6 7 8 |
| * cptcovn number of covariates (not including constant and age ) = # of + plus 1 = 7+1=8 | * cptcovn number of covariates (not including constant and age ) = # of + plus 1 = 7+1=8 |
| * covar[k,i], value of kth covariate if not including age for individual i: | * covar[k,i], are for fixed covariates, value of kth covariate if not including age for individual i: |
| * covar[1][i]= (V1), covar[4][i]=(V4), covar[8][i]=(V8) | * covar[1][i]= (V1), covar[4][i]=(V4), covar[8][i]=(V8) |
| * Tvar[k] # of the kth covariate: Tvar[1]=2 Tvar[2]=1 Tvar[4]=3 Tvar[8]=8 | * Tvar[k] # of the kth covariate: Tvar[1]=2 Tvar[2]=1 Tvar[4]=3 Tvar[8]=8 |
| * if multiplied by age: V3*age Tvar[3=V3*age]=3 (V3) Tvar[7]=8 and | * if multiplied by age: V3*age Tvar[3=V3*age]=3 (V3) Tvar[7]=8 and |
| * Tage[++cptcovage]=k | * Tage[++cptcovage]=k |
| * if products, new covar are created after ncovcol with k1 | * if products, new covar are created after ncovcol + nqv (quanti fixed) with k1 |
| * Tvar[k]=ncovcol+k1; # of the kth covariate product: Tvar[5]=ncovcol+1=10 Tvar[6]=ncovcol+1=11 | * Tvar[k]=ncovcol+k1; # of the kth covariate product: Tvar[5]=ncovcol+1=10 Tvar[6]=ncovcol+1=11 |
| * Tprod[k1]=k; Tprod[1]=5 Tprod[2]= 6; gives the position of the k1th product | * Tprod[k1]=k; Tprod[1]=5 Tprod[2]= 6; gives the position of the k1th product |
| * Tvard[k1][1]=m Tvard[k1][2]=m; Tvard[1][1]=5 (V5) Tvard[1][2]=6 Tvard[2][1]=7 (V7) Tvard[2][2]=8 | * Tvard[k1][1]=m Tvard[k1][2]=m; Tvard[1][1]=5 (V5) Tvard[1][2]=6 Tvard[2][1]=7 (V7) Tvard[2][2]=8 |
| * Tvar[cptcovn+k2]=Tvard[k1][1];Tvar[cptcovn+k2+1]=Tvard[k1][2]; | * Tvar[cptcovn+k2]=Tvard[k1][1];Tvar[cptcovn+k2+1]=Tvard[k1][2]; |
| * Tvar[8+1]=5;Tvar[8+2]=6;Tvar[8+3]=7;Tvar[8+4]=8 inverted | * Tvar[8+1]=5;Tvar[8+2]=6;Tvar[8+3]=7;Tvar[8+4]=8 inverted |
| * V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 | * V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 |
| * < ncovcol=8 > | * < ncovcol=8 8 fixed covariate. Additional starts at 9 (V5*V6) and 10(V7*V8) > |
| * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 d1 d1 d2 d2 | * Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 d1 d1 d2 d2 |
| * k= 1 2 3 4 5 6 7 8 9 10 11 12 | * k= 1 2 3 4 5 6 7 8 9 10 11 12 |
| * Tvar[k]= 2 1 3 3 10 11 8 8 5 6 7 8 | * Tvard[k]= 2 1 3 3 10 11 8 8 5 6 7 8 |
| * p Tvar[1]@12={2, 1, 3, 3, 11, 10, 8, 8, 7, 8, 5, 6} | * p Tvar[1]@12={2, 1, 3, 3, 9, 10, 8, 8} |
| * p Tprod[1]@2={ 6, 5} | * p Tprod[1]@2={ 6, 5} |
| *p Tvard[1][1]@4= {7, 8, 5, 6} | *p Tvard[1][1]@4= {7, 8, 5, 6} |
| * covar[k][i]= V2 V1 ? V3 V5*V6? V7*V8? ? V8 | * covar[k][i]= V2 V1 ? V3 V5*V6? V7*V8? ? V8 |
| Line 10846 int decodemodel( char model[], int lasto | Line 11227 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 10860 int decodemodel( char model[], int lasto | Line 11241 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 10873 int decodemodel( char model[], int lasto | Line 11254 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 10928 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11311 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 10944 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11328 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 10970 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11355 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 10987 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11379 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 11002 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11401 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 11033 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11432 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 11044 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11454 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 11069 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11479 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 11086 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11496 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 11098 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11508 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 11132 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11542 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 11174 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11584 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 11185 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 11595 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 11553 int prevalence_limit(double *p, double * | Line 11963 int prevalence_limit(double *p, double * |
| /* 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 */ |
| k=TKresult[nres]; | k=TKresult[nres]; |
| 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 *\/ */ | /* if(i1 != 1 && TKresult[nres]!= k) /\* We found the combination k corresponding to the resultline value of dummies *\/ */ |
| /* continue; */ | /* continue; */ |
| Line 11658 int back_prevalence_limit(double *p, dou | Line 12069 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 */ | |
| 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]]); | |
| } | } |
| /* for(j=1;j<=cptcoveff ;j++) {/\* all covariates *\/ */ | |
| /* fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| /* printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| /* fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| /* } */ | |
| /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ | |
| /* 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 11686 int back_prevalence_limit(double *p, dou | Line 12104 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 11710 int back_prevalence_limit(double *p, dou | Line 12128 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 11721 int back_prevalence_limit(double *p, dou | Line 12139 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 11765 int hPijx(double *p, int bage, int fage) | Line 12183 int hPijx(double *p, int bage, int fage) |
| /* k=k+1; */ | /* k=k+1; */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| k=TKresult[nres]; | k=TKresult[nres]; |
| if(TKresult[nres]==0) k=1; /* To be checked for noresult */ | |
| /* for(k=1; k<=i1;k++){ */ | /* for(k=1; k<=i1;k++){ */ |
| /* if(i1 != 1 && TKresult[nres]!= k) */ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| /* continue; */ | /* continue; */ |
| Line 11846 int hPijx(double *p, int bage, int fage) | Line 12265 int hPijx(double *p, int bage, int fage) |
| /* k=k+1; */ | /* k=k+1; */ |
| for(nres=1; nres <= nresult; nres++){ /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| k=TKresult[nres]; | k=TKresult[nres]; |
| if(TKresult[nres]==0) k=1; /* To be checked for noresult */ | |
| /* for(k=1; k<=i1;k++){ /\* For any combination of dummy covariates, fixed and varying *\/ */ | /* for(k=1; k<=i1;k++){ /\* For any combination of dummy covariates, fixed and varying *\/ */ |
| /* if(i1 != 1 && TKresult[nres]!= k) */ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| /* continue; */ | /* continue; */ |
| fprintf(ficrespijb,"\n#****** "); | fprintf(ficrespijb,"\n#****** "); |
| for(j=1;j<=cptcovs;j++){ | for(j=1;j<=cptcovs;j++){ |
| fprintf(ficrespij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | fprintf(ficrespijb," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| /* for(j=1;j<=cptcoveff;j++) */ | /* for(j=1;j<=cptcoveff;j++) */ |
| /* fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | /* fprintf(ficrespijb,"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 *\/ */ |
| Line 12291 int main(int argc, char *argv[]) | Line 12711 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 12319 int main(int argc, char *argv[]) | Line 12739 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 12332 int main(int argc, char *argv[]) | Line 12754 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 12613 Please run with mle=-1 to get a correct | Line 13036 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 12722 Please run with mle=-1 to get a correct | Line 13147 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 13614 Please run with mle=-1 to get a correct | Line 14039 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 13623 Please run with mle=-1 to get a correct | Line 14048 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 13960 Please run with mle=-1 to get a correct | Line 14385 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=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | /* printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][j]); /\* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline *\/ */ /* TinvDoQresult[nres][Name of the variable] */ |
| 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 */ | printf("V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordered by the covariate values in the resultline */ |
| fprintf(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 */ | fprintf(ficlog,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
| fprintf(ficrest,"V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ | 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 14134 Please run with mle=-1 to get a correct | Line 14561 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 14173 Please run with mle=-1 to get a correct | Line 14601 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); |