|
|
| version 1.143, 2014/01/26 09:45:38 | version 1.144, 2014/02/10 22:17:31 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.144 2014/02/10 22:17:31 brouard | |
| *** empty log message *** | |
| Revision 1.143 2014/01/26 09:45:38 brouard | Revision 1.143 2014/01/26 09:45:38 brouard |
| Summary: Version 0.98nR (to be improved, but gives same optimization results as 0.98k. Nice, promising | Summary: Version 0.98nR (to be improved, but gives same optimization results as 0.98k. Nice, promising |
| Line 429 extern int errno; | Line 432 extern int errno; |
| #define GLOCK_ERROR_NOPATH -1 /* empty path */ | #define GLOCK_ERROR_NOPATH -1 /* empty path */ |
| #define GLOCK_ERROR_GETCWD -2 /* cannot get cwd */ | #define GLOCK_ERROR_GETCWD -2 /* cannot get cwd */ |
| #define MAXPARM 128 /* Maximum number of parameters for the optimization */ | #define MAXPARM 128 /**< Maximum number of parameters for the optimization */ |
| #define NPARMAX 64 /* (nlstate+ndeath-1)*nlstate*ncovmodel */ | #define NPARMAX 64 /**< (nlstate+ndeath-1)*nlstate*ncovmodel */ |
| #define NINTERVMAX 8 | #define NINTERVMAX 8 |
| #define NLSTATEMAX 8 /* Maximum number of live states (for func) */ | #define NLSTATEMAX 8 /**< Maximum number of live states (for func) */ |
| #define NDEATHMAX 8 /* Maximum number of dead states (for func) */ | #define NDEATHMAX 8 /**< Maximum number of dead states (for func) */ |
| #define NCOVMAX 20 /* Maximum number of covariates */ | #define NCOVMAX 20 /**< Maximum number of covariates, including generated covariates V1*V2 */ |
| #define MAXN 20000 | #define MAXN 20000 |
| #define YEARM 12. /* Number of months per year */ | #define YEARM 12. /**< Number of months per year */ |
| #define AGESUP 130 | #define AGESUP 130 |
| #define AGEBASE 40 | #define AGEBASE 40 |
| #define AGEGOMP 10. /* Minimal age for Gompertz adjustment */ | #define AGEGOMP 10. /**< Minimal age for Gompertz adjustment */ |
| #ifdef UNIX | #ifdef UNIX |
| #define DIRSEPARATOR '/' | #define DIRSEPARATOR '/' |
| #define CHARSEPARATOR "/" | #define CHARSEPARATOR "/" |
| Line 2209 void freqsummary(char fileres[], int ia | Line 2212 void freqsummary(char fileres[], int ia |
| first=1; | first=1; |
| for(k1=1; k1<=j;k1++){ /* Loop on covariates */ | for(k1=1; k1<=j ; k1++){ /* Loop on covariates */ |
| for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */ | for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */ |
| j1++; | j1++; |
| /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); | /*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
| Line 2227 void freqsummary(char fileres[], int ia | Line 2230 void freqsummary(char fileres[], int ia |
| k2cpt=0; | k2cpt=0; |
| for (i=1; i<=imx; i++) { | for (i=1; i<=imx; i++) { |
| bool=1; | bool=1; |
| if (cptcovn>0) { | if (cptcovn>0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
| for (z1=1; z1<=cptcoveff; z1++) | for (z1=1; z1<=cptcoveff; z1++) |
| if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtab[j1][z1]]) | if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtab[j1][z1]]){ |
| bool=0; | bool=0; |
| printf("bool=%d i=%d, z1=%d, i1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtab[%d][%d]=%d, nbcode[Tvaraff][codtab[%d][%d]=%d, j1=%d\n", | |
| bool,i,z1, i1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtab[j1][z1], | |
| j1,z1,nbcode[Tvaraff[z1]][codtab[j1][z1]],j1); | |
| /* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtab[7][3]=1 and nbcde[3][?]=1*/ | |
| } | |
| } | } |
| if (bool==1){ | if (bool==1){ |
| for(m=firstpass; m<=lastpass; m++){ | for(m=firstpass; m<=lastpass; m++){ |
| k2=anint[m][i]+(mint[m][i]/12.); | k2=anint[m][i]+(mint[m][i]/12.); |
| Line 2573 void concatwav(int wav[], int **dh, int | Line 2582 void concatwav(int wav[], int **dh, int |
| /*********** Tricode ****************************/ | /*********** Tricode ****************************/ |
| void tricode(int *Tvar, int **nbcode, int imx) | void tricode(int *Tvar, int **nbcode, int imx) |
| { | { |
| /* Uses cptcovn+2*cptcovprod as the number of covariates */ | /**< Uses cptcovn+2*cptcovprod as the number of covariates */ |
| /* Tvar[i]=atoi(stre); /* find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 */ | /* Tvar[i]=atoi(stre); find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 |
| /* Boring subroutine which should only output nbcode[Tvar[j]][k] | |
| /* nbcode[Tvar[j][1]= | |
| */ | |
| int Ndum[20],ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; | int Ndum[20],ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; |
| int modmaxcovj=0; /* Modality max of covariates j */ | int modmaxcovj=0; /* Modality max of covariates j */ |
| cptcoveff=0; | cptcoveff=0; |
| for (k=0; k<maxncov; k++) Ndum[k]=0; | for (k=0; k < maxncov; k++) Ndum[k]=0; |
| for (k=1; k<=7; k++) ncodemax[k]=0; /* Horrible constant again */ | for (k=1; k <= maxncov; k++) ncodemax[k]=0; /* Horrible constant again replaced by NCOVMAX */ |
| for (j=1; j<=(cptcovn+2*cptcovprod); j++) { /* For each covariate j */ | for (j=1; j<=(cptcovn+2*cptcovprod); j++) { /* For each covariate j */ |
| for (i=1; i<=imx; i++) { /*reads the data file to get the maximum value of the | for (i=1; i<=imx; i++) { /*reads the data file to get the maximum value of the |
| Line 2635 void tricode(int *Tvar, int **nbcode, in | Line 2647 void tricode(int *Tvar, int **nbcode, in |
| } | } |
| } | } |
| ij--; | ij--; |
| cptcoveff=ij; /*Number of simple covariates*/ | cptcoveff=ij; /*Number of total covariates*/ |
| } | } |
| /*********** Health Expectancies ****************/ | /*********** Health Expectancies ****************/ |
| Line 5420 run imach with mle=-1 to get a correct t | Line 5432 run imach with mle=-1 to get a correct t |
| anint=matrix(1,maxwav,1,n); | anint=matrix(1,maxwav,1,n); |
| s=imatrix(1,maxwav+1,1,n); /* s[i][j] health state for wave i and individual j */ | s=imatrix(1,maxwav+1,1,n); /* s[i][j] health state for wave i and individual j */ |
| tab=ivector(1,NCOVMAX); | tab=ivector(1,NCOVMAX); |
| ncodemax=ivector(1,8); /* hard coded ? */ | ncodemax=ivector(1,NCOVMAX); /* Number of code per covariate; if O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ |
| /* Reads data from file datafile */ | /* Reads data from file datafile */ |
| if (readdata(datafile, firstobs, lastobs, &imx)==1) | if (readdata(datafile, firstobs, lastobs, &imx)==1) |
| Line 5499 run imach with mle=-1 to get a correct t | Line 5511 run imach with mle=-1 to get a correct t |
| ncodemax[1]=1; | ncodemax[1]=1; |
| if (cptcovn > 0) tricode(Tvar,nbcode,imx); | if (cptcovn > 0) tricode(Tvar,nbcode,imx); |
| codtab=imatrix(1,100,1,10); /* Cross tabulation to get the order of | codtab=imatrix(1,100,1,10); /**< codtab[h,k]=( (h-1) - mod(k-1,2**(k-1) )/2**(k-1) |
| the estimations*/ | */ |
| h=0; | h=0; |
| m=pow(2,cptcoveff); | m=pow(2,cptcoveff); |
| Line 5511 run imach with mle=-1 to get a correct t | Line 5523 run imach with mle=-1 to get a correct t |
| h++; | h++; |
| if (h>m) | if (h>m) |
| h=1; | h=1; |
| /**< codtab(h,k) k | /**< codtab(h,k) k = codtab[h,k]=( (h-1) - mod(k-1,2**(k-1) )/2**(k-1) + 1 |
| * h 1 2 3 4 | * h 1 2 3 4 |
| *______________________________ | *______________________________ |
| * 1 i=1 1 i=1 1 i=1 1 i=1 1 | * 1 i=1 1 i=1 1 i=1 1 i=1 1 |