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 |