|
|
| version 1.333, 2022/08/21 09:10:30 | version 1.334, 2022/08/25 09:08:41 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.334 2022/08/25 09:08:41 brouard | |
| Summary: In progress for quantitative | |
| Revision 1.333 2022/08/21 09:10:30 brouard | Revision 1.333 2022/08/21 09:10:30 brouard |
| * src/imach.c (Module): Version 0.99r33 A lot of changes in | * src/imach.c (Module): Version 0.99r33 A lot of changes in |
| reassigning covariates: my first idea was that people will always | reassigning covariates: my first idea was that people will always |
| Line 1296 int cptcovs=0; /**< cptcovs number of si | Line 1299 int cptcovs=0; /**< cptcovs number of si |
| int cptcovsnq=0; /**< cptcovsnq number of simple covariates in the model but non quantitative V2+V1 =2 */ | int cptcovsnq=0; /**< cptcovsnq number of simple covariates in the model but non quantitative V2+V1 =2 */ |
| int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ | int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ |
| int cptcovprodnoage=0; /**< Number of covariate products without age */ | int cptcovprodnoage=0; /**< Number of covariate products without age */ |
| int cptcoveff=0; /* Total number of covariates to vary for printing results (2**cptcoveff combinations of dummies)(computed in tricode as cptcov) */ | int cptcoveff=0; /* Total number of single dummy covariates to vary for printing results (2**cptcoveff combinations of dummies)(computed in tricode as cptcov) */ |
| int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ | int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ |
| int ncovv=0; /* Total number of effective (wave) varying covariates (dummy or quantitative) in the model */ | int ncovv=0; /* Total number of effective (wave) varying covariates (dummy or quantitative) in the model */ |
| int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ | int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
| Line 1307 int nqfveff=0; /**< nqfveff Number of Qu | Line 1310 int nqfveff=0; /**< nqfveff Number of Qu |
| int ntveff=0; /**< ntveff number of effective time varying variables */ | int ntveff=0; /**< ntveff number of effective time varying variables */ |
| int nqtveff=0; /**< ntqveff number of effective time varying quantitative variables */ | int nqtveff=0; /**< ntqveff number of effective time varying quantitative variables */ |
| int cptcov=0; /* Working variable */ | int cptcov=0; /* Working variable */ |
| int firstobs=1, lastobs=10; /* nobs = lastobs-firstobs+1 declared globally ;*/ | |
| int nobs=10; /* Number of observations in the data lastobs-firstobs */ | int nobs=10; /* Number of observations in the data lastobs-firstobs */ |
| int ncovcombmax=NCOVMAX; /* Maximum calculated number of covariate combination = pow(2, cptcoveff) */ | int ncovcombmax=NCOVMAX; /* Maximum calculated number of covariate combination = pow(2, cptcoveff) */ |
| int npar=NPARMAX; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ | int npar=NPARMAX; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ |
| Line 1524 int *TvarsQind; | Line 1528 int *TvarsQind; |
| #define MAXRESULTLINESPONE 10+1 | #define MAXRESULTLINESPONE 10+1 |
| int nresult=0; | int nresult=0; |
| int parameterline=0; /* # of the parameter (type) line */ | int parameterline=0; /* # of the parameter (type) line */ |
| int TKresult[MAXRESULTLINESPONE]; | int TKresult[MAXRESULTLINESPONE]; /* TKresult[nres]=k for each resultline nres give the corresponding combination of dummies */ |
| int resultmodel[MAXRESULTLINESPONE][NCOVMAX];/* resultmodel[k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ | int resultmodel[MAXRESULTLINESPONE][NCOVMAX];/* resultmodel[k1]=k3: k1th position in the model corresponds to the k3 position in the resultline */ |
| int Tresult[MAXRESULTLINESPONE][NCOVMAX];/* For dummy variable , value (output) */ | int modelresult[MAXRESULTLINESPONE][NCOVMAX];/* modelresult[k3]=k1: k1th position in the model corresponds to the k3 position in the resultline */ |
| int Tresult[MAXRESULTLINESPONE][NCOVMAX];/* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ | |
| int Tinvresult[MAXRESULTLINESPONE][NCOVMAX];/* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ | int Tinvresult[MAXRESULTLINESPONE][NCOVMAX];/* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
| double TinvDoQresult[MAXRESULTLINESPONE][NCOVMAX];/* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ | double TinvDoQresult[MAXRESULTLINESPONE][NCOVMAX];/* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
| int Tvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For dummy variable , variable # (output) */ | int Tvresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
| double Tqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ | double Tqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ |
| double Tqinvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ | double Tqinvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ |
| int Tvqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ | int Tvqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ |
| Line 4975 Title=%s <br>Datafile=%s Firstpass=%d La | Line 4980 Title=%s <br>Datafile=%s Firstpass=%d La |
| j1=0; | j1=0; |
| /* j=ncoveff; /\* Only fixed dummy covariates *\/ */ | /* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
| j=cptcoveff; /* Only dummy covariates of the model */ | j=cptcoveff; /* Only dummy covariates used in the model */ |
| /* j=cptcovn; /\* Only dummy covariates of the model *\/ */ | /* j=cptcovn; /\* Only dummy covariates of the model *\/ */ |
| if (cptcovn<1) {j=1;ncodemax[1]=1;} | if (cptcovn<1) {j=1;ncodemax[1]=1;} |
| Line 5090 Title=%s <br>Datafile=%s Firstpass=%d La | Line 5095 Title=%s <br>Datafile=%s Firstpass=%d La |
| constant and age model which counts them. */ | constant and age model which counts them. */ |
| bool=0; /* not selected */ | bool=0; /* not selected */ |
| }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ | }else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { | /* i1=Tvaraff[z1]; */ |
| /* i2=TnsdVar[i1]; */ | |
| /* i3=nbcode[i1][i2]; */ | |
| /* i4=covar[i1][iind]; */ | |
| /* if(i4 != i3){ */ | |
| if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { /* Bug valgrind */ | |
| bool=0; | bool=0; |
| } | } |
| } | } |
| Line 6018 void concatwav(int wav[], int **dh, int | Line 6028 void concatwav(int wav[], int **dh, int |
| break; | break; |
| } /* end switch */ | } /* end switch */ |
| } /* end dummy test */ | } /* end dummy test */ |
| if(Dummy[k]==1 && Typevar[k] !=1){ /* Dummy covariate and not age product */ | if(Dummy[k]==1 && Typevar[k] !=1){ /* Quantitative covariate and not age product */ |
| for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ | for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ |
| if(isnan(covar[Tvar[k]][i])){ | if(isnan(covar[Tvar[k]][i])){ |
| printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); | printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); |
| Line 6464 void concatwav(int wav[], int **dh, int | Line 6474 void concatwav(int wav[], int **dh, int |
| pstamp(ficresprobmorprev); | pstamp(ficresprobmorprev); |
| fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); | fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); |
| fprintf(ficresprobmorprev,"# Selected quantitative variables and dummies"); | fprintf(ficresprobmorprev,"# Selected quantitative variables and dummies"); |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ /* To be done*/ |
| fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
| } | } |
| for(j=1;j<=cptcoveff;j++) | for(j=1;j<=cptcoveff;j++) |
| fprintf(ficresprobmorprev,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,TnsdVar[Tvaraff[j]])]); | fprintf(ficresprobmorprev," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,TnsdVar[Tvaraff[j]])]); |
| fprintf(ficresprobmorprev,"\n"); | fprintf(ficresprobmorprev,"\n"); |
| fprintf(ficresprobmorprev,"# Age cov=%-d",ij); | fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
| Line 7099 To be simple, these graphs help to under | Line 7109 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 \n", TKresult[nres], j1, nres, cptcovn, cptcoveff, tj); | 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 7107 To be simple, these graphs help to under | Line 7117 To be simple, these graphs help to under |
| /* for(nres=1;nres <=1; nres++){ /\* For each resultline *\/ */ | /* for(nres=1;nres <=1; nres++){ /\* For each resultline *\/ */ |
| /* /\* for(nres=1;nres <=nresult; nres++){ /\\* For each resultline *\\/ *\/ */ | /* /\* for(nres=1;nres <=nresult; nres++){ /\\* For each resultline *\\/ *\/ */ |
| if (cptcovn>0) { | if (cptcovn>0) { |
| fprintf(ficresprob, "\n#********** Variable "); | fprintf(ficresprob, "\n#********** Variable "); |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | |
| fprintf(ficresprob, "**********\n#\n"); | |
| fprintf(ficresprobcov, "\n#********** Variable "); | fprintf(ficresprobcov, "\n#********** Variable "); |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcov, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | fprintf(ficgp, "\n#********** Variable "); |
| fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); | |
| fprintf(ficresprobcor, "\n#********** Variable "); | |
| /* Including quantitative variables of the resultline to be done */ | |
| for (z1=1; z1<=cptcovs; z1++){ /* Loop on each variable of this resultline */ | |
| printf("Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); | |
| fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); | |
| /* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */ | |
| if(Dummy[modelresult[nres][z1]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to z1 in resultline */ | |
| if(Fixed[modelresult[nres][z1]]==0){ /* Fixed referenced to model equation */ | |
| fprintf(ficresprob,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprobcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficgp,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(fichtmcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprobcor,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficresprob,"fixed "); | |
| fprintf(ficresprobcov,"fixed "); | |
| fprintf(ficgp,"fixed "); | |
| fprintf(fichtmcov,"fixed "); | |
| fprintf(ficresprobcor,"fixed "); | |
| }else{ | |
| fprintf(ficresprob,"varyi "); | |
| fprintf(ficresprobcov,"varyi "); | |
| fprintf(ficgp,"varyi "); | |
| fprintf(fichtmcov,"varyi "); | |
| fprintf(ficresprobcor,"varyi "); | |
| } | |
| }else if(Dummy[modelresult[nres][z1]]==1){ /* Quanti variable */ | |
| /* For each selected (single) quantitative value */ | |
| fprintf(ficresprob," V%d=%f ",Tvqresult[nres][z1],Tqresult[nres][z1]); | |
| if(Fixed[modelresult[nres][z1]]==0){ /* Fixed */ | |
| fprintf(ficresprob,"fixed "); | |
| fprintf(ficresprobcov,"fixed "); | |
| fprintf(ficgp,"fixed "); | |
| fprintf(fichtmcov,"fixed "); | |
| fprintf(ficresprobcor,"fixed "); | |
| }else{ | |
| fprintf(ficresprob,"varyi "); | |
| fprintf(ficresprobcov,"varyi "); | |
| fprintf(ficgp,"varyi "); | |
| fprintf(fichtmcov,"varyi "); | |
| fprintf(ficresprobcor,"varyi "); | |
| } | |
| }else{ | |
| printf("Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| fprintf(ficlog,"Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| exit(1); | |
| } | |
| } /* End loop on variable of this resultline */ | |
| /* for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); */ | |
| fprintf(ficresprob, "**********\n#\n"); | |
| fprintf(ficresprobcov, "**********\n#\n"); | fprintf(ficresprobcov, "**********\n#\n"); |
| fprintf(ficgp, "\n#********** Variable "); | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficgp, " V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | |
| fprintf(ficgp, "**********\n#\n"); | fprintf(ficgp, "**********\n#\n"); |
| fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); | |
| /* for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); */ | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtmcov, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | |
| fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); | fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
| fprintf(ficresprobcor, "\n#********** Variable "); | |
| for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcor, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); | |
| fprintf(ficresprobcor, "**********\n#"); | fprintf(ficresprobcor, "**********\n#"); |
| if(invalidvarcomb[j1]){ | if(invalidvarcomb[j1]){ |
| fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); | fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); |
| Line 7137 To be simple, these graphs help to under | Line 7185 To be simple, these graphs help to under |
| trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); | trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); |
| gp=vector(1,(nlstate)*(nlstate+ndeath)); | gp=vector(1,(nlstate)*(nlstate+ndeath)); |
| gm=vector(1,(nlstate)*(nlstate+ndeath)); | gm=vector(1,(nlstate)*(nlstate+ndeath)); |
| for (age=bage; age<=fage; age ++){ | for (age=bage; age<=fage; age ++){ /* Fo each age we feed the model equation with covariates, using precov as in hpxij() ? */ |
| cov[2]=age; | cov[2]=age; |
| if(nagesqr==1) | if(nagesqr==1) |
| cov[3]= age*age; | cov[3]= age*age; |
| /* for (k=1; k<=cptcovn;k++) { */ | /* New code end of combination but for each resultline */ |
| /* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; */ | for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
| for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ | if(Typevar[k1]==1){ /* A product with age */ |
| /* Here comes the value of the covariate 'j1' after renumbering k with single dummy covariates */ | cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
| cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(j1,TnsdVar[TvarsD[k]])]; | |
| /*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*//* j1 1 2 3 4 | |
| * 1 1 1 1 1 | |
| * 2 2 1 1 1 | |
| * 3 1 2 1 1 | |
| */ | |
| /* nbcode[1][1]=0 nbcode[1][2]=1;*/ | |
| } | |
| /* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 */ | |
| /* ) p nbcode[Tvar[Tage[k]]][(1 & (ij-1) >> (k-1))+1] */ | |
| /*for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ | |
| for (k=1; k<=cptcovage;k++){ /* For product with age */ | |
| if(Dummy[Tage[k]]==2){ /* dummy with age */ | |
| cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(j1,TnsdVar[Tvar[Tage[k]]])]*cov[2]; | |
| /* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; */ | |
| } else if(Dummy[Tage[k]]==3){ /* quantitative with age */ | |
| printf("Internal IMaCh error, don't know which value for quantitative covariate with age, Tage[k]%d, k=%d, Tvar[Tage[k]]=V%d, age=%d\n",Tage[k],k ,Tvar[Tage[k]], (int)cov[2]); | |
| /* cov[2+nagesqr+Tage[k]]=meanq[k]/idq[k]*cov[2];/\* Using the mean of quantitative variable Tvar[Tage[k]] /\* Tqresult[nres][k]; *\/ */ | |
| /* exit(1); */ | |
| /* cov[++k1]=Tqresult[nres][k]; */ | |
| } | |
| /* cov[2+Tage[k]+nagesqr]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; */ | |
| } | |
| for (k=1; k<=cptcovprod;k++){/* For product without age */ | |
| if(Dummy[Tvard[k][1]]==0){ | |
| if(Dummy[Tvard[k][2]]==0){ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])]; | |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | |
| }else{ /* Should we use the mean of the quantitative variables? */ | |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * Tqresult[nres][resultmodel[nres][k]]; | |
| /* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; */ | |
| } | |
| }else{ | }else{ |
| if(Dummy[Tvard[k][2]]==0){ | cov[2+nagesqr+k1]=precov[nres][k1]; |
| cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][TnsdVar[Tvard[k][1]]]; | |
| /* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; */ | |
| }else{ | |
| cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][TnsdVar[Tvard[k][1]]]* Tqinvresult[nres][TnsdVar[Tvard[k][2]]]; | |
| /* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ | |
| } | |
| } | } |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; */ | }/* End of loop on model equation */ |
| } | /* Old code */ |
| /* /\* for (k=1; k<=cptcovn;k++) { *\/ */ | |
| /* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; *\/ */ | |
| /* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ | |
| /* /\* Here comes the value of the covariate 'j1' after renumbering k with single dummy covariates *\/ */ | |
| /* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(j1,TnsdVar[TvarsD[k]])]; */ | |
| /* /\*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*\//\* j1 1 2 3 4 */ | |
| /* * 1 1 1 1 1 */ | |
| /* * 2 2 1 1 1 */ | |
| /* * 3 1 2 1 1 */ | |
| /* *\/ */ | |
| /* /\* nbcode[1][1]=0 nbcode[1][2]=1;*\/ */ | |
| /* } */ | |
| /* /\* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 *\/ */ | |
| /* /\* ) p nbcode[Tvar[Tage[k]]][(1 & (ij-1) >> (k-1))+1] *\/ */ | |
| /* /\*for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; *\/ */ | |
| /* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ | |
| /* if(Dummy[Tage[k]]==2){ /\* dummy with age *\/ */ | |
| /* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(j1,TnsdVar[Tvar[Tage[k]]])]*cov[2]; */ | |
| /* /\* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ | |
| /* } else if(Dummy[Tage[k]]==3){ /\* quantitative with age *\/ */ | |
| /* printf("Internal IMaCh error, don't know which value for quantitative covariate with age, Tage[k]%d, k=%d, Tvar[Tage[k]]=V%d, age=%d\n",Tage[k],k ,Tvar[Tage[k]], (int)cov[2]); */ | |
| /* /\* cov[2+nagesqr+Tage[k]]=meanq[k]/idq[k]*cov[2];/\\* Using the mean of quantitative variable Tvar[Tage[k]] /\\* Tqresult[nres][k]; *\\/ *\/ */ | |
| /* /\* exit(1); *\/ */ | |
| /* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ | |
| /* } */ | |
| /* /\* cov[2+Tage[k]+nagesqr]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ | |
| /* } */ | |
| /* for (k=1; k<=cptcovprod;k++){/\* For product without age *\/ */ | |
| /* if(Dummy[Tvard[k][1]]==0){ */ | |
| /* if(Dummy[Tvard[k][2]]==0){ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])]; */ | |
| /* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ | |
| /* }else{ /\* Should we use the mean of the quantitative variables? *\/ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * Tqresult[nres][resultmodel[nres][k]]; */ | |
| /* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; *\/ */ | |
| /* } */ | |
| /* }else{ */ | |
| /* if(Dummy[Tvard[k][2]]==0){ */ | |
| /* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][TnsdVar[Tvard[k][1]]]; */ | |
| /* /\* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; *\/ */ | |
| /* }else{ */ | |
| /* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][TnsdVar[Tvard[k][1]]]* Tqinvresult[nres][TnsdVar[Tvard[k][2]]]; */ | |
| /* /\* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ | |
| /* } */ | |
| /* } */ | |
| /* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ | |
| /* } */ | |
| /* For each age and combination of dummy covariates we slightly move the parameters of delti in order to get the gradient*/ | /* For each age and combination of dummy covariates we slightly move the parameters of delti in order to get the gradient*/ |
| for(theta=1; theta <=npar; theta++){ | for(theta=1; theta <=npar; theta++){ |
| for(i=1; i<=npar; i++) | for(i=1; i<=npar; i++) |
| Line 10265 int decoderesult( char resultline[], int | Line 10322 int decoderesult( char resultline[], int |
| int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=0; | int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=0; |
| char resultsav[MAXLINE]; | char resultsav[MAXLINE]; |
| /* int resultmodel[MAXLINE]; */ | /* int resultmodel[MAXLINE]; */ |
| int modelresult[MAXLINE]; | /* int modelresult[MAXLINE]; */ |
| char stra[80], strb[80], strc[80], strd[80],stre[80]; | char stra[80], strb[80], strc[80], strd[80],stre[80]; |
| removefirstspace(&resultline); | removefirstspace(&resultline); |
| Line 10274 int decoderesult( char resultline[], int | Line 10331 int decoderesult( char resultline[], int |
| 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'=' */ | j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' in this resultline */ |
| } | } |
| if(j == 0){ /* Resultline but no = */ | if(j == 0){ /* Resultline but no = */ |
| TKresult[nres]=0; /* Combination for the nresult and the model */ | TKresult[nres]=0; /* Combination for the nresult and the model */ |
| return (0); | return (0); |
| } | } |
| if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ | if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
| printf("ERROR: the number of variables in the resultline which is %d, differs from the number %d of variables used in the model line, %s.\n",j, cptcovs, model); | printf("ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
| fprintf(ficlog,"ERROR: the number of variables in the resultline which is %d, differs from the number %d of variables used in the model line, %s.\n",j, cptcovs, model); | fprintf(ficlog,"ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
| /* return 1;*/ | /* return 1;*/ |
| } | } |
| for(k=1; k<=j;k++){ /* Loop on any covariate of the result line */ | for(k=1; k<=j;k++){ /* Loop on any covariate of the RESULT LINE */ |
| if(nbocc(resultsav,'=') >1){ | if(nbocc(resultsav,'=') >1){ |
| cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' (stra is the rest of the resultline to be analyzed in the next loop *//* resultsav= "V4=1 V5=25.1 V3=0" stra= "V5=25.1 V3=0" strb= "V4=1" */ | cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' (stra is the rest of the resultline to be analyzed in the next loop *//* resultsav= "V4=1 V5=25.1 V3=0" stra= "V5=25.1 V3=0" strb= "V4=1" */ |
| /* If resultsav= "V4= 1 V5=25.1 V3=0" with a blank then strb="V4=" and stra="1 V5=25.1 V3=0" */ | /* If resultsav= "V4= 1 V5=25.1 V3=0" with a blank then strb="V4=" and stra="1 V5=25.1 V3=0" */ |
| Line 10309 int decoderesult( char resultline[], int | Line 10366 int decoderesult( char resultline[], int |
| } | } |
| /* Checking for missing or useless values in comparison of current model needs */ | /* Checking for missing or useless values in comparison of current model needs */ |
| /* Feeds resultmodel[nres][k1]=k2 for k1th product covariate with age in the model equation fed by the index k2 of the resutline*/ | /* Feeds resultmodel[nres][k1]=k2 for k1th product covariate with age in the model equation fed by the index k2 of the resutline*/ |
| for(k1=1; k1<= cptcovt ;k1++){ /* Loop on model. model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | for(k1=1; k1<= cptcovt ;k1++){ /* Loop on MODEL LINE V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| if(Typevar[k1]==0){ /* Single covariate in model */ | if(Typevar[k1]==0){ /* Single covariate in model */ |
| /* 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ | /* 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ |
| match=0; | match=0; |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
| if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
| modelresult[k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ | modelresult[nres][k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
| match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ | match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
| break; | break; |
| } | } |
| Line 10330 int decoderesult( char resultline[], int | Line 10387 int decoderesult( char resultline[], int |
| match=0; | match=0; |
| for(k2=1; k2 <=j;k2++){/* Loop on resultline. jth occurence of = signs in the result line. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | for(k2=1; k2 <=j;k2++){/* Loop on resultline. jth occurence of = signs in the result line. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
| if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ | if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
| modelresult[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 */ |
| Line 10376 int decoderesult( char resultline[], int | Line 10433 int decoderesult( char resultline[], int |
| }/* End loop cptcovt */ | }/* End loop cptcovt */ |
| /* Checking for missing or useless values in comparison of current model needs */ | /* Checking for missing or useless values in comparison of current model needs */ |
| /* Feeds resultmodel[nres][k1]=k2 for single covariate (k1) in the model equation */ | /* Feeds resultmodel[nres][k1]=k2 for single covariate (k1) in the model equation */ |
| for(k2=1; k2 <=j;k2++){ /* Loop on resultline variables: result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | for(k2=1; k2 <=j;k2++){ /* j or cptcovs is the number of single covariates used either in the model line as well as in the result line (dummy or quantitative) |
| * Loop on resultline variables: result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ | |
| match=0; | match=0; |
| for(k1=1; k1<= cptcovt ;k1++){ /* loop on model: model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | for(k1=1; k1<= cptcovt ;k1++){ /* loop on model: model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| if(Typevar[k1]==0){ /* Single only */ | if(Typevar[k1]==0){ /* Single only */ |
| if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ | if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ |
| resultmodel[nres][k1]=k2; /* k1th position in the model equation corresponds to k2th position in the result line. resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ | resultmodel[nres][k1]=k2; /* k1th position in the model equation corresponds to k2th position in the result line. resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ |
| modelresult[nres][k2]=k1; /* k1th position in the model equation corresponds to k2th position in the result line. modelresult[1]=2 modelresult[2]=1 modelresult[3]=3 remodelresult[4]=6 modelresult[5]=9 */ | |
| ++match; | ++match; |
| } | } |
| } | } |
| Line 10396 int decoderesult( char resultline[], int | Line 10455 int decoderesult( char resultline[], int |
| return 1; | return 1; |
| } | } |
| } | } |
| /* cptcovres=j /\* Number of variables in the resultline is equal to cptcovs and thus useless *\/ */ | |
| /* We need to deduce which combination number is chosen and save quantitative values */ | /* We need to deduce which combination number is chosen and save quantitative values */ |
| /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ | /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
| /* nres=1st result line: V4=1 V5=25.1 V3=0 V2=8 V1=1 */ | /* nres=1st result line: V4=1 V5=25.1 V3=0 V2=8 V1=1 */ |
| Line 10415 int decoderesult( char resultline[], int | Line 10474 int decoderesult( char resultline[], int |
| /* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ | /* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ |
| /* V5*age V5 known which value for nres? */ | /* V5*age V5 known which value for nres? */ |
| /* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ | /* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ |
| for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* loop k1 on position in the model line (excluding product) */ | for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* cptcovt number of covariates (excluding 1 and age or age*age) in the MODEL equation. |
| * loop on position k1 in the MODEL LINE */ | |
| /* k counting number of combination of single dummies in the equation model */ | /* k counting number of combination of single dummies in the equation model */ |
| /* k4 counting single dummies in the equation model */ | /* k4 counting single dummies in the equation model */ |
| /* k4q counting single quantitatives in the equation model */ | /* k4q counting single quantitatives in the equation model */ |
| if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single */ | if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, k1 is sorting according to MODEL, but k3 to resultline */ |
| /* k4+1= position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ | /* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ |
| /* modelresult[k3]=k1: k3th position in the result line 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 */ |
| /* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ | /* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ |
| Line 10428 int decoderesult( char resultline[], int | Line 10488 int decoderesult( char resultline[], int |
| /* Tvarsel[k3]: Name of the variable at the k3th position in the result line. */ | /* Tvarsel[k3]: Name of the variable at the k3th position in the result line. */ |
| /* Tvalsel[k3]: Value of the variable at the k3th position in the result line. */ | /* Tvalsel[k3]: Value of the variable at the k3th position in the result line. */ |
| /* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ | /* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ |
| /* Tvresult[nres][result_position]= id of the dummy variable at the result_position in the nres resultline */ | /* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
| /* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ | /* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
| /* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ | /* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
| k3= resultmodel[nres][k1]; /* From position k1 in model get position k3 in result line */ | k3= resultmodel[nres][k1]; /* From position k1 in model get position k3 in result line */ |
| /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ | /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ |
| k2=(int)Tvarsel[k3]; /* from position k3 in resultline get name k2: nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ | k2=(int)Tvarsel[k3]; /* from position k3 in resultline get name k2: nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ |
| k+=Tvalsel[k3]*pow(2,k4); /* nres=1 k1=2 Tvalsel[1]=1 (V4=1); k1=3 k3=2 Tvalsel[2]=0 (V3=0) */ | k+=Tvalsel[k3]*pow(2,k4); /* nres=1 k1=2 Tvalsel[1]=1 (V4=1); k1=3 k3=2 Tvalsel[2]=0 (V3=0) */ |
| TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Stores the value into the name of the variable. */ | TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][Name]=Value; stores the value into the name of the variable. */ |
| /* Tinvresult[nres][4]=1 */ | /* Tinvresult[nres][4]=1 */ |
| Tresult[nres][k4+1]=Tvalsel[k3];/* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) */ | /* Tresult[nres][k4+1]=Tvalsel[k3];/\* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) *\/ */ |
| Tvresult[nres][k4+1]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | Tresult[nres][k3]=Tvalsel[k3];/* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) */ |
| /* Tvresult[nres][k4+1]=(int)Tvarsel[k3];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ | |
| Tvresult[nres][k3]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | |
| Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ | Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ |
| precov[nres][k1]=Tvalsel[k3]; | 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 */ |
| Line 10450 int decoderesult( char resultline[], int | Line 10512 int decoderesult( char resultline[], int |
| k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 5 =k3q */ | k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 5 =k3q */ |
| k2q=(int)Tvarsel[k3q]; /* Name of variable at k3q th position in the resultline */ | k2q=(int)Tvarsel[k3q]; /* Name of variable at k3q th position in the resultline */ |
| /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ | /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ |
| Tqresult[nres][k4q+1]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ | /* Tqresult[nres][k4q+1]=Tvalsel[k3q]; /\* Tqresult[nres][1]=25.1 *\/ */ |
| Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ | /* Tvresult[nres][k4q+1]=(int)Tvarsel[k3q];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ |
| /* Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /\* Tvqresult[nres][1]=5 *\/ */ | |
| Tqresult[nres][k3q]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ | |
| Tvresult[nres][k3q]=(int)Tvarsel[k3q];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ | |
| Tvqresult[nres][k3q]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ | |
| Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ | Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
| TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ | TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
| precov[nres][k1]=Tvalsel[k3q]; | precov[nres][k1]=Tvalsel[k3q]; |
| Line 10463 int decoderesult( char resultline[], int | Line 10529 int decoderesult( char resultline[], int |
| k3= resultmodel[nres][k1]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ | k3= resultmodel[nres][k1]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ |
| k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ | k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ |
| TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ | TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][4]=1 */ |
| 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]; /* Tqinvresult[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]]); |
| Line 10481 int decoderesult( char resultline[], int | Line 10547 int decoderesult( char resultline[], int |
| } | } |
| } | } |
| TKresult[nres]=++k; /* Combination for the nresult and the model */ | TKresult[nres]=++k; /* Number of combinations of dummies for the nresult and the model =Tvalsel[k3]*pow(2,k4) + 1*/ |
| return (0); | return (0); |
| } | } |
| Line 10746 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 10812 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| modell[k].maintype= FTYPE; | modell[k].maintype= FTYPE; |
| modell[k].subtype= FQ; | modell[k].subtype= FQ; |
| nsq++; | nsq++; |
| TvarsQ[nsq]=Tvar[k]; | TvarsQ[nsq]=Tvar[k]; /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary see below */ |
| TvarsQind[nsq]=k; | TvarsQind[nsq]=k; /* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
| ncovf++; | ncovf++; |
| TvarF[ncovf]=Tvar[k]; | TvarF[ncovf]=Tvar[k]; |
| TvarFind[ncovf]=k; | TvarFind[ncovf]=k; |
| Line 10778 Dummy[k] 0=dummy (0 1), 1 quantitative ( | Line 10844 Dummy[k] 0=dummy (0 1), 1 quantitative ( |
| modell[k].subtype= VQ; | modell[k].subtype= VQ; |
| ncovv++; /* Only simple time varying variables */ | ncovv++; /* Only simple time varying variables */ |
| nsq++; | nsq++; |
| TvarsQ[nsq]=Tvar[k]; /* k=1 Tvar=5 nsq=1 TvarsQ[1]=5 */ | TvarsQ[nsq]=Tvar[k]; /* k=1 Tvar=5 nsq=1 TvarsQ[1]=5 */ /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary here) */ |
| TvarsQind[nsq]=k; /* For single quantitative covariate gives the model position of each single quantitative covariate */ | TvarsQind[nsq]=k; /* For single quantitative covariate gives the model position of each single quantitative covariate *//* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
| TvarV[ncovv]=Tvar[k]; | TvarV[ncovv]=Tvar[k]; |
| TvarVind[ncovv]=k; /* TvarVind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ | TvarVind[ncovv]=k; /* TvarVind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
| TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ | TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
| Line 11722 int main(int argc, char *argv[]) | Line 11788 int main(int argc, char *argv[]) |
| char pathr[MAXLINE], pathimach[MAXLINE]; | char pathr[MAXLINE], pathimach[MAXLINE]; |
| char *tok, *val; /* pathtot */ | char *tok, *val; /* pathtot */ |
| int firstobs=1, lastobs=10; /* nobs = lastobs-firstobs declared globally ;*/ | /* int firstobs=1, lastobs=10; /\* nobs = lastobs-firstobs declared globally ;*\/ */ |
| int c, h , cpt, c2; | int c, h , cpt, c2; |
| int jl=0; | int jl=0; |
| int i1, j1, jk, stepsize=0; | int i1, j1, jk, stepsize=0; |
| Line 13631 Please run with mle=-1 to get a correct | Line 13697 Please run with mle=-1 to get a correct |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
| } | } |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | printf(" V%d=%f ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ |
| fprintf(ficreseij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | fprintf(ficreseij,"V%d=%f ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); |
| } | } |
| fprintf(ficreseij,"******\n"); | fprintf(ficreseij,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 13689 Please run with mle=-1 to get a correct | Line 13755 Please run with mle=-1 to get a correct |
| i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ | i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
| if (cptcovn < 1){i1=1;} | if (cptcovn < 1){i1=1;} |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++) /* For each resultline, find the combination and output results according to the values of dummies and then quanti. */ |
| for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ | for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying. For each nres and each value at position k |
| if(i1 != 1 && TKresult[nres]!= k) | * we know Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline |
| * Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline | |
| * and Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ | |
| /* */ | |
| if(i1 != 1 && TKresult[nres]!= k) /* TKresult[nres] is the combination of this nres resultline. All the i1 combinations are not output */ | |
| continue; | continue; |
| printf("\n# model %s \n#****** Result for:", model); | printf("\n# model %s \n#****** Result for:", model); |
| fprintf(ficrest,"\n# model %s \n#****** Result for:", model); | fprintf(ficrest,"\n# model %s \n#****** Result for:", model); |
| fprintf(ficlog,"\n# model %s \n#****** Result for:", model); | fprintf(ficlog,"\n# model %s \n#****** Result for:", model); |
| for(j=1;j<=cptcoveff;j++){ | /* It might not be a good idea to mix dummies and quantitative */ |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* for(j=1;j<=cptcoveff;j++){ /\* j=resultpos. Could be a loop on cptcovs: number of single dummy covariate in the result line as well as in the model *\/ */ |
| fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | for(j=1;j<=cptcovs;j++){ /* j=resultpos. Could be a loop on cptcovs: number of single covariate (dummy or quantitative) in the result line as well as in the model */ |
| fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /\* Output by variables in the resultline *\/ */ |
| /* Tvaraff[j] is the name of the dummy variable in position j in the equation model: | |
| * Tvaraff[1]@9={4, 3, 0, 0, 0, 0, 0, 0, 0}, in model=V5+V4+V3+V4*V3+V5*age | |
| * (V5 is quanti) V4 and V3 are dummies | |
| * TnsdVar[4] is the position 1 and TnsdVar[3]=2 in codtabm(k,l)(V4 V3)=V4 V3 | |
| * l=1 l=2 | |
| * k=1 1 1 0 0 | |
| * k=2 2 1 1 0 | |
| * k=3 [1] [2] 0 1 | |
| * k=4 2 2 1 1 | |
| * If nres=1 result: V3=1 V4=0 then k=3 and outputs | |
| * If nres=2 result: V4=1 V3=0 then k=2 and outputs | |
| * nres=1 =>k=3 j=1 V4= nbcode[4][codtabm(3,1)=1)=0; j=2 V3= nbcode[3][codtabm(3,2)=2]=1 | |
| * nres=2 =>k=2 j=1 V4= nbcode[4][codtabm(2,1)=2)=1; j=2 V3= nbcode[3][codtabm(2,2)=1]=0 | |
| */ | |
| /* Tvresult[nres][j] Name of the variable at position j in this resultline */ | |
| /* Tresult[nres][j] Value of this variable at position j could be a float if quantitative */ | |
| /* We give up with the combinations!! */ | |
| printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]); /* end if dummy or quanti */ | |
| if(Dummy[modelresult[nres][j]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to j in resultline */ | |
| printf("V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficlog,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| fprintf(ficrest,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ | |
| if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ | |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | |
| }else{ | |
| printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); | |
| } | |
| /* fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| /* fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| }else if(Dummy[modelresult[nres][j]]==1){ /* Quanti variable */ | |
| /* For each selected (single) quantitative value */ | |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); | |
| if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ | |
| printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); | |
| }else{ | |
| printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); | |
| } | |
| }else{ | |
| printf("Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| fprintf(ficlog,"Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ | |
| exit(1); | |
| } | |
| } | } |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | /* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ |
| printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | /* printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /\* Wrong j is not in the equation model *\/ */ |
| fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | /* fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | /* fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
| } | /* } */ |
| fprintf(ficrest,"******\n"); | fprintf(ficrest,"******\n"); |
| fprintf(ficlog,"******\n"); | fprintf(ficlog,"******\n"); |
| printf("******\n"); | printf("******\n"); |
| Line 13713 Please run with mle=-1 to get a correct | Line 13826 Please run with mle=-1 to get a correct |
| fprintf(ficresstdeij,"\n#****** "); | fprintf(ficresstdeij,"\n#****** "); |
| fprintf(ficrescveij,"\n#****** "); | fprintf(ficrescveij,"\n#****** "); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcoveff;j++) { |
| fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | fprintf(ficresstdeij,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); |
| fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| } | /* fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ | } |
| fprintf(ficresstdeij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value, TvarsQind gives the position of a quantitative in model equation */ |
| fprintf(ficrescveij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); | fprintf(ficresstdeij," V%d=%f ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); |
| fprintf(ficrescveij," V%d=%f ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); | |
| } | } |
| fprintf(ficresstdeij,"******\n"); | fprintf(ficresstdeij,"******\n"); |
| fprintf(ficrescveij,"******\n"); | fprintf(ficrescveij,"******\n"); |