|
|
| version 1.350, 2023/04/24 11:38:06 | version 1.351, 2023/04/29 10:43:47 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.351 2023/04/29 10:43:47 brouard | |
| Summary: 099r45 | |
| Revision 1.350 2023/04/24 11:38:06 brouard | Revision 1.350 2023/04/24 11:38:06 brouard |
| *** empty log message *** | *** empty log message *** |
| Line 1804 char *trimbb(char *out, char *in) | Line 1807 char *trimbb(char *out, char *in) |
| return s; | return s; |
| } | } |
| char *trimbtab(char *out, char *in) | |
| { /* Trim blanks or tabs in line but keeps first blanks if line starts with blanks */ | |
| char *s; | |
| s=out; | |
| while (*in != '\0'){ | |
| while( (*in == ' ' || *in == '\t')){ /* && *(in+1) != '\0'){*/ | |
| in++; | |
| } | |
| *out++ = *in++; | |
| } | |
| *out='\0'; | |
| return s; | |
| } | |
| /* char *substrchaine(char *out, char *in, char *chain) */ | /* char *substrchaine(char *out, char *in, char *chain) */ |
| /* { */ | /* { */ |
| /* /\* Substract chain 'chain' from 'in', return and output 'out' *\/ */ | /* /\* Substract chain 'chain' from 'in', return and output 'out' *\/ */ |
| Line 9095 set ter svg size 640, 480\nunset log y\n | Line 9112 set ter svg size 640, 480\nunset log y\n |
| fprintf(ficgp," u %d:(",ioffset); | fprintf(ficgp," u %d:(",ioffset); |
| kl=0; | kl=0; |
| strcpy(gplotcondition,"("); | strcpy(gplotcondition,"("); |
| for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ | /* for (k=1; k<=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]]); | for (k=1; k<=cptcovs; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
| /* lv=codtabm(k1,TnsdVar[Tvaraff[k]]); */ | |
| lv=Tvresult[nres][k]; | |
| vlv=TinvDoQresult[nres][Tvresult[nres][k]]; | |
| /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ | /* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
| /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ | /* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
| /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ | /* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
| /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ | /* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
| vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; | /* vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; */ |
| kl++; | kl++; |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); | /* sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); */ |
| sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,lv, kl+1, vlv ); | |
| kl++; | kl++; |
| if(k <cptcoveff && cptcoveff>1) | if(k <cptcovs && cptcovs>1) |
| sprintf(gplotcondition+strlen(gplotcondition)," && "); | sprintf(gplotcondition+strlen(gplotcondition)," && "); |
| } | } |
| strcpy(gplotcondition+strlen(gplotcondition),")"); | strcpy(gplotcondition+strlen(gplotcondition),")"); |
| Line 9190 set ter svg size 640, 480\nunset log y\n | Line 9211 set ter svg size 640, 480\nunset log y\n |
| }else{ | }else{ |
| fprintf(ficgp,",\\\n '' "); | fprintf(ficgp,",\\\n '' "); |
| } | } |
| if(cptcoveff ==0){ /* No covariate */ | /* if(cptcoveff ==0){ /\* No covariate *\/ */ |
| if(cptcovs ==0){ /* No covariate */ | |
| ioffset=2; /* Age is in 2 */ | ioffset=2; /* Age is in 2 */ |
| /*# yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ | /*# yearproj age p11 p21 p31 p.1 p12 p22 p32 p.2 p13 p23 p33 p.3 p14 p24 p34 p.4*/ |
| /*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ | /*# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */ |
| Line 9302 set ter svg size 640, 480\nunset log y\n | Line 9324 set ter svg size 640, 480\nunset log y\n |
| 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=1+age+%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 *\/ */ |
| fprintf(ficgp,"# k1=1 to 2^%d=%d\n",cptcovs,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; */ |
| Line 9920 void prevforecast(char fileres[], double | Line 9943 void prevforecast(char fileres[], double |
| /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */ | /* date2dmy(dateintmean,&jintmean,&mintmean,&aintmean); */ |
| /* date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); */ | /* date2dmy(dateprojd,&jprojd, &mprojd, &anprojd); */ |
| /* date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); */ | /* date2dmy(dateprojf,&jprojf, &mprojf, &anprojf); */ |
| i1=pow(2,cptcoveff); | /* i1=pow(2,cptcoveff); */ |
| if (cptcovn < 1){i1=1;} | /* if (cptcovn < 1){i1=1;} */ |
| fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); | fprintf(ficresf,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| fprintf(ficresf,"#****** Routine prevforecast **\n"); | fprintf(ficresf,"#****** Routine prevforecast **\n"); |
| /* if (h==(int)(YEARM*yearp)){ */ | /* if (h==(int)(YEARM*yearp)){ */ |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ /* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) */ | k=TKresult[nres]; |
| if(i1 != 1 && TKresult[nres]!= k) | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| continue; | /* for(k=1; k<=i1;k++){ /\* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) *\/ */ |
| if(invalidvarcomb[k]){ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| printf("\nCombination (%d) projection ignored because no cases \n",k); | /* continue; */ |
| continue; | /* if(invalidvarcomb[k]){ */ |
| } | /* printf("\nCombination (%d) projection ignored because no cases \n",k); */ |
| /* continue; */ | |
| /* } */ | |
| fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); | fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcovs;j++){ |
| /* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); */ | /* for(j=1;j<=cptcoveff;j++) { */ |
| fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* /\* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); *\/ */ |
| } | /* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* } */ |
| fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ |
| /* fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | |
| /* } */ | |
| fprintf(ficresf," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | |
| } | } |
| fprintf(ficresf," yearproj age"); | fprintf(ficresf," yearproj age"); |
| for(j=1; j<=nlstate+ndeath;j++){ | for(j=1; j<=nlstate+ndeath;j++){ |
| for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) |
| Line 9968 void prevforecast(char fileres[], double | Line 9997 void prevforecast(char fileres[], double |
| } | } |
| } | } |
| fprintf(ficresf,"\n"); | fprintf(ficresf,"\n"); |
| for(j=1;j<=cptcoveff;j++) | /* for(j=1;j<=cptcoveff;j++) */ |
| for(j=1;j<=cptcovs;j++) | |
| fprintf(ficresf,"%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | |
| /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */ | /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */ |
| fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* TnsdVar[Tvaraff] correct */ | /* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /\* TnsdVar[Tvaraff] correct *\/ */ |
| fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); | fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); |
| for(j=1; j<=nlstate+ndeath;j++) { | for(j=1; j<=nlstate+ndeath;j++) { |
| Line 10062 void prevforecast(char fileres[], double | Line 10093 void prevforecast(char fileres[], double |
| /* if(jintmean==0) jintmean=1; */ | /* if(jintmean==0) jintmean=1; */ |
| /* if(mintmean==0) jintmean=1; */ | /* if(mintmean==0) jintmean=1; */ |
| i1=pow(2,cptcoveff); | /* i1=pow(2,cptcoveff); */ |
| if (cptcovn < 1){i1=1;} | /* if (cptcovn < 1){i1=1;} */ |
| fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); | fprintf(ficresfb,"# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); | printf("# Mean day of interviews %.lf/%.lf/%.lf (%.2f) between %.2f and %.2f \n",jintmean,mintmean,aintmean,dateintmean,dateprev1,dateprev2); |
| fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); | fprintf(ficresfb,"#****** Routine prevbackforecast **\n"); |
| for(nres=1; nres <= nresult; nres++) /* For each resultline */ | for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
| for(k=1; k<=i1;k++){ | k=TKresult[nres]; |
| if(i1 != 1 && TKresult[nres]!= k) | if(TKresult[nres]==0) k=1; /* To be checked for noresult */ |
| continue; | /* for(k=1; k<=i1;k++){ */ |
| if(invalidvarcomb[k]){ | /* if(i1 != 1 && TKresult[nres]!= k) */ |
| printf("\nCombination (%d) projection ignored because no cases \n",k); | /* continue; */ |
| continue; | /* if(invalidvarcomb[k]){ */ |
| } | /* printf("\nCombination (%d) projection ignored because no cases \n",k); */ |
| /* continue; */ | |
| /* } */ | |
| fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); | fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcovs;j++){ |
| fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* for(j=1;j<=cptcoveff;j++) { */ |
| } | /* fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ | /* } */ |
| fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); | fprintf(ficresfb," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); |
| } | } |
| /* fprintf(ficrespij,"******\n"); */ | |
| /* for (k4=1; k4<= nsq; k4++){ /\* For each selected (single) quantitative value *\/ */ | |
| /* fprintf(ficresfb," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); */ | |
| /* } */ | |
| fprintf(ficresfb," yearbproj age"); | fprintf(ficresfb," yearbproj age"); |
| for(j=1; j<=nlstate+ndeath;j++){ | for(j=1; j<=nlstate+ndeath;j++){ |
| for(i=1; i<=nlstate;i++) | for(i=1; i<=nlstate;i++) |
| Line 10115 void prevforecast(char fileres[], double | Line 10152 void prevforecast(char fileres[], double |
| } | } |
| } | } |
| fprintf(ficresfb,"\n"); | fprintf(ficresfb,"\n"); |
| for(j=1;j<=cptcoveff;j++) | /* for(j=1;j<=cptcoveff;j++) */ |
| fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | for(j=1;j<=cptcovs;j++) |
| fprintf(ficresfb,"%d %lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][j]]); | |
| /* fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ | |
| fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); | fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); |
| for(i=1; i<=nlstate+ndeath;i++) { | for(i=1; i<=nlstate+ndeath;i++) { |
| ppij=0.;ppi=0.; | ppij=0.;ppi=0.; |
| Line 11375 int decodemodel( char model[], int lasto | Line 11414 int decodemodel( char model[], int lasto |
| if (strlen(modelsav) >1){ /* V2 +V3 +V4 +V6 +V7 +V6*V2 +V7*V2 +V6*V3 +V7*V3 +V6*V4 +V7*V4 +age*V2 +age*V3 +age*V4 +age*V6 +age*V7 +age*V6*V2 +V7*V2 +age*V6*V3 +age*V7*V3 +age*V6*V4 +age*V7*V4 */ | if (strlen(modelsav) >1){ /* V2 +V3 +V4 +V6 +V7 +V6*V2 +V7*V2 +V6*V3 +V7*V3 +V6*V4 +V7*V4 +age*V2 +age*V3 +age*V4 +age*V6 +age*V7 +age*V6*V2 +V7*V2 +age*V6*V3 +age*V7*V3 +age*V6*V4 +age*V7*V4 */ |
| j=nbocc(modelsav,'+'); /**< j=Number of '+' */ | j=nbocc(modelsav,'+'); /**< j=Number of '+' */ |
| j1=nbocc(modelsav,'*'); /**< j1=Number of '*' */ | j1=nbocc(modelsav,'*'); /**< j1=Number of '*' */ |
| cptcovs=j+1-j1; /**< Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age => V1 + V3 =4+1-3=2 */ | cptcovs=0; /**< Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age => V1 + V3 =4+1-3=2 Wrong */ |
| cptcovt= j+1; /* Number of total covariates in the model, not including | cptcovt= j+1; /* Number of total covariates in the model, not including |
| * cst, age and age*age | * cst, age and age*age |
| * V1+V1*age+ V3 + V3*V4+age*age=> 3+1=4*/ | * V1+V1*age+ V3 + V3*V4+age*age=> 3+1=4*/ |
| Line 11440 int decodemodel( char model[], int lasto | Line 11479 int decodemodel( char model[], int lasto |
| Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0; | Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0; |
| } | } |
| cptcovage=0; | cptcovage=0; |
| /* First loop in order to calculate */ | |
| /* for age*VN*Vm | |
| * Provides, Typevar[k], Tage[cptcovage], existcomb[n][m], FixedV[ncovcolt+k12] | |
| * Tprod[k1]=k Tposprod[k]=k1; Tvard[k1][1] =m; | |
| */ | |
| /* Needs FixedV[Tvardk[k][1]] */ | |
| /* For others: | |
| * Sets Typevar[k]; | |
| * Tvar[k]=ncovcol+nqv+ntv+nqtv+k11; | |
| * Tposprod[k]=k11; | |
| * Tprod[k11]=k; | |
| * Tvardk[k][1] =m; | |
| * Needs FixedV[Tvardk[k][1]] == 0 | |
| */ | |
| for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model line */ | for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model line */ |
| cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' cutl from left to right | cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' cutl from left to right |
| modelsav==V2+V1+V5*age+V4+V3*age strb=V3*age stra=V2+V1V5*age+V4 */ /* <model> "V5+V4+V3+V4*V3+V5*age+V1*age+V1" strb="V5" stra="V4+V3+V4*V3+V5*age+V1*age+V1" */ | modelsav==V2+V1+V5*age+V4+V3*age strb=V3*age stra=V2+V1V5*age+V4 */ /* <model> "V5+V4+V3+V4*V3+V5*age+V1*age+V1" strb="V5" stra="V4+V3+V4*V3+V5*age+V1*age+V1" */ |
| Line 11465 int decodemodel( char model[], int lasto | Line 11520 int decodemodel( char model[], int lasto |
| strcat(strb,stre); | strcat(strb,stre); |
| strcpy(strd,strb); /* in order for strd to not be "age" for next test (will be Vn*Vm */ | strcpy(strd,strb); /* in order for strd to not be "age" for next test (will be Vn*Vm */ |
| } | } |
| printf("DEBUG FIXED k=%d, Tage[k]=%d, Tvar[Tage[k]=%d,FixedV[Tvar[Tage[k]]]=%d\n",k,Tage[k],Tvar[Tage[k]],FixedV[Tvar[Tage[k]]]); | /* printf("DEBUG FIXED k=%d, Tage[k]=%d, Tvar[Tage[k]=%d,FixedV[Tvar[Tage[k]]]=%d\n",k,Tage[k],Tvar[Tage[k]],FixedV[Tvar[Tage[k]]]); */ |
| FixedV[Tvar[Tage[k]]]=0; /* HERY not sure */ | /* FixedV[Tvar[Tage[k]]]=0; /\* HERY not sure if V7*V4*age Fixed might not exist yet*\/ */ |
| }else{ /* strc=Vn*Vm (and strd=age) and should be strb=Vn*Vm but want to keep original strb double product */ | }else{ /* strc=Vn*Vm (and strd=age) and should be strb=Vn*Vm but want to keep original strb double product */ |
| strcpy(stre,strb); /* save full b in stre */ | strcpy(stre,strb); /* save full b in stre */ |
| strcpy(strb,strc); /* save short c in new short b for next block strb=Vn*Vm*/ | strcpy(strb,strc); /* save short c in new short b for next block strb=Vn*Vm*/ |
| Line 11499 int decodemodel( char model[], int lasto | Line 11554 int decodemodel( char model[], int lasto |
| Tvardk[k][1] =m; /* m 1 for V1*/ | Tvardk[k][1] =m; /* m 1 for V1*/ |
| Tvard[k1][2] =n; /* n 4 for V4*/ | Tvard[k1][2] =n; /* n 4 for V4*/ |
| Tvardk[k][2] =n; /* n 4 for V4*/ | Tvardk[k][2] =n; /* n 4 for V4*/ |
| /* Tvar[Tage[cptcovage]]=k1;*/ /* Tvar[6=age*V3*V2]=9 (new fixed covariate) */ | /* Tvar[Tage[cptcovage]]=k1;*/ /* Tvar[6=age*V3*V2]=9 (new fixed covariate) */ /* We don't know about Fixed yet HERE */ |
| 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 */ | 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 */ | 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 |
| Line 11649 int decodemodel( char model[], int lasto | Line 11704 int decodemodel( char model[], int lasto |
| /*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav); | /*printf("a=%s b=%s sav=%s\n", stra,strb,modelsav); |
| scanf("%d",i);*/ | scanf("%d",i);*/ |
| } /* end of loop + on total covariates */ | } /* end of loop + on total covariates */ |
| } /* end if strlen(modelsave == 0) age*age might exist */ | } /* end if strlen(modelsave == 0) age*age might exist */ |
| } /* end if strlen(model == 0) */ | } /* end if strlen(model == 0) */ |
| cptcovs=cptcovt - cptcovdageprod - cptcovprod;/**< Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age + age*v4*V3=> V1 + V3 =4+1-3=2 */ | cptcovs=cptcovt - cptcovdageprod - cptcovprod;/**< Number of simple covariates V1 +V1*age +V3 +V3*V4 +age*age + age*v4*V3=> V1 + V3 =4+1-3=2 */ |
| Line 11687 Fixed[k] 0=fixed (product or simple), 1 | Line 11744 Fixed[k] 0=fixed (product or simple), 1 |
| 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<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;} | for(k=-1;k<=NCOVMAX; k++){ Fixed[k]=0; Dummy[k]=0;} |
| for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;} | for(k=1;k<=NCOVMAX; k++){TvarFind[k]=0; TvarVind[k]=0;} |
| /* Second loop for calculating Fixed[k], Dummy[k]*/ | |
| for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0,ncovva=0,ncovvta=0, ncova=0, ncoveff=0, nqfveff=0, ntveff=0, nqtveff=0, ncovvt=0;k<=cptcovt; k++){ /* or cptocvt loop on k from model */ | for(k=1, ncovf=0, nsd=0, nsq=0, ncovv=0,ncovva=0,ncovvta=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; |
| Line 12940 int main(int argc, char *argv[]) | Line 13002 int main(int argc, char *argv[]) |
| /* double ***mobaverage; */ | /* double ***mobaverage; */ |
| double wald; | double wald; |
| char line[MAXLINE]; | char line[MAXLINE], linetmp[MAXLINE]; |
| char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; | char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
| char modeltemp[MAXLINE]; | char modeltemp[MAXLINE]; |
| Line 13273 int main(int argc, char *argv[]) | Line 13335 int main(int argc, char *argv[]) |
| }else | }else |
| break; | break; |
| } | } |
| if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){ | if((num_filled=sscanf(line,"model=%[^.\n]", model)) !=EOF){ /* Every character after model but dot and return */ |
| if (num_filled != 1){ | |
| printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); | |
| fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); | |
| model[0]='\0'; | |
| goto end; | |
| }else{ | |
| trimbtab(linetmp,line); /* Trims multiple blanks in line */ | |
| strcpy(line, linetmp); | |
| } | |
| } | |
| if((num_filled=sscanf(line,"model=1+age%[^.\n]", model)) !=EOF){ /* Every character after 1+age but dot and return */ | |
| if (num_filled != 1){ | if (num_filled != 1){ |
| printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); | printf("ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); |
| fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); | fprintf(ficlog,"ERROR %d: Model should be at minimum 'model=1+age+' instead of '%s'\n",num_filled, line); |
| Line 13646 Please run with mle=-1 to get a correct | Line 13719 Please run with mle=-1 to get a correct |
| Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1] and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm | Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1] and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm |
| * For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd. | * For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd. |
| * Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */ | * Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */ |
| Tvardk=imatrix(-1,NCOVMAX,1,2); | Tvardk=imatrix(0,NCOVMAX,1,2); |
| Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age | Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age |
| 4 covariates (3 plus signs) | 4 covariates (3 plus signs) |
| Tage[1=V3*age]= 4; Tage[2=age*V4] = 3 | Tage[1=V3*age]= 4; Tage[2=age*V4] = 3 |
| Line 14901 Please run with mle=-1 to get a correct | Line 14974 Please run with mle=-1 to get a correct |
| pstamp(ficreseij); | pstamp(ficreseij); |
| 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 */ |
| 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(ficreseij,"\n#****** "); | fprintf(ficreseij,"\n#****** "); |
| printf("\n#****** "); | printf("\n#****** "); |
| for(j=1;j<=cptcoveff;j++) { | for(j=1;j<=cptcovs;j++){ |
| fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* for(j=1;j<=cptcoveff;j++) { */ |
| printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); | /* fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
| fprintf(ficreseij," V%d=%lg ",Tvresult[nres][j],TinvDoQresult[nres][Tvresult[nres][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]])]); */ | |
| } | } |
| 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=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ | printf(" V%d=%lg ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ |
| Line 15156 Please run with mle=-1 to get a correct | Line 15232 Please run with mle=-1 to get a correct |
| free_vector(weight,firstobs,lastobs); | free_vector(weight,firstobs,lastobs); |
| free_imatrix(Tvardk,-1,NCOVMAX,1,2); | free_imatrix(Tvardk,0,NCOVMAX,1,2); |
| free_imatrix(Tvard,1,NCOVMAX,1,2); | free_imatrix(Tvard,1,NCOVMAX,1,2); |
| free_imatrix(s,1,maxwav+1,firstobs,lastobs); | free_imatrix(s,1,maxwav+1,firstobs,lastobs); |
| free_matrix(anint,1,maxwav,firstobs,lastobs); | free_matrix(anint,1,maxwav,firstobs,lastobs); |