|
|
| version 1.289, 2018/12/13 09:16:26 | version 1.290, 2019/05/09 13:39:37 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.290 2019/05/09 13:39:37 brouard | |
| Summary: 0.99r18 unlimited number of individuals | |
| The number n which was limited to 20,000 cases is now unlimited, from firstobs to lastobs. If the number is too for the virtual memory, probably an error will occur. | |
| Revision 1.289 2018/12/13 09:16:26 brouard | Revision 1.289 2018/12/13 09:16:26 brouard |
| Summary: Bug for young ages (<-30) will be in r17 | Summary: Bug for young ages (<-30) will be in r17 |
| Line 1049 typedef struct { | Line 1054 typedef struct { |
| #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, including generated covariates V1*V2 */ | /* #define NCOVMAX 20 */ /**< Maximum number of covariates, including generated covariates V1*V2 */ |
| #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 | #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 |
| /*#define decodtabm(h,k,cptcoveff)= (h <= (1<<cptcoveff)?(((h-1) >> (k-1)) & 1) +1 : -1)*/ | /*#define decodtabm(h,k,cptcoveff)= (h <= (1<<cptcoveff)?(((h-1) >> (k-1)) & 1) +1 : -1)*/ |
| #define decodtabm(h,k,cptcoveff) (((h-1) >> (k-1)) & 1) +1 | #define decodtabm(h,k,cptcoveff) (((h-1) >> (k-1)) & 1) +1 |
| #define MAXN 20000 | /*#define MAXN 20000 */ /* Should by replaced by nobs, real number of observations and unlimited */ |
| #define YEARM 12. /**< Number of months per year */ | #define YEARM 12. /**< Number of months per year */ |
| /* #define AGESUP 130 */ | /* #define AGESUP 130 */ |
| /* #define AGESUP 150 */ | /* #define AGESUP 150 */ |
| Line 1101 int nqfveff=0; /**< nqfveff Number of Qu | Line 1106 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 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; | int npar=NPARMAX; |
| int nlstate=2; /* Number of live states */ | int nlstate=2; /* Number of live states */ |
| Line 10729 int main(int argc, char *argv[]) | Line 10735 int main(int argc, char *argv[]) |
| double ssval; | double ssval; |
| #endif | #endif |
| int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); | int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); |
| int i,j, k, n=MAXN,iter=0,m,size=100, cptcod; | int i,j, k, iter=0,m,size=100, cptcod; /* Suppressing because nobs */ |
| /* int i,j, k, n=MAXN,iter=0,m,size=100, cptcod; */ | |
| int ncvyear=0; /* Number of years needed for the period prevalence to converge */ | int ncvyear=0; /* Number of years needed for the period prevalence to converge */ |
| int jj, ll, li, lj, lk; | int jj, ll, li, lj, lk; |
| int numlinepar=0; /* Current linenumber of parameter file */ | int numlinepar=0; /* Current linenumber of parameter file */ |
| Line 10764 int main(int argc, char *argv[]) | Line 10771 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; | 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 11131 int main(int argc, char *argv[]) | Line 11138 int main(int argc, char *argv[]) |
| ungetc(c,ficpar); | ungetc(c,ficpar); |
| covar=matrix(0,NCOVMAX,1,n); /**< used in readdata */ | covar=matrix(0,NCOVMAX,firstobs,lastobs); /**< used in readdata */ |
| if(nqv>=1)coqvar=matrix(1,nqv,1,n); /**< Fixed quantitative covariate */ | if(nqv>=1)coqvar=matrix(1,nqv,firstobs,lastobs); /**< Fixed quantitative covariate */ |
| if(nqtv>=1)cotqvar=ma3x(1,maxwav,1,nqtv,1,n); /**< Time varying quantitative covariate */ | if(nqtv>=1)cotqvar=ma3x(1,maxwav,1,nqtv,firstobs,lastobs); /**< Time varying quantitative covariate */ |
| if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,1,ntv+nqtv,1,n); /**< Time varying covariate (dummy and quantitative)*/ | if(ntv+nqtv>=1)cotvar=ma3x(1,maxwav,1,ntv+nqtv,firstobs,lastobs); /**< Time varying covariate (dummy and quantitative)*/ |
| cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ | cptcovn=0; /*Number of covariates, i.e. number of '+' in model statement plus one, indepently of n in Vn*/ |
| /* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 | /* v1+v2+v3+v2*v4+v5*age makes cptcovn = 5 |
| v1+v2*age+v2*v3 makes cptcovn = 3 | v1+v2*age+v2*v3 makes cptcovn = 3 |
| Line 11337 Please run with mle=-1 to get a correct | Line 11344 Please run with mle=-1 to get a correct |
| /* Main data | /* Main data |
| */ | */ |
| n= lastobs; | nobs=lastobs-firstobs+1; /* was = lastobs;*/ |
| num=lvector(1,n); | /* num=lvector(1,n); */ |
| moisnais=vector(1,n); | /* moisnais=vector(1,n); */ |
| annais=vector(1,n); | /* annais=vector(1,n); */ |
| moisdc=vector(1,n); | /* moisdc=vector(1,n); */ |
| andc=vector(1,n); | /* andc=vector(1,n); */ |
| weight=vector(1,n); | /* weight=vector(1,n); */ |
| agedc=vector(1,n); | /* agedc=vector(1,n); */ |
| cod=ivector(1,n); | /* cod=ivector(1,n); */ |
| for(i=1;i<=n;i++){ | /* for(i=1;i<=n;i++){ */ |
| num=lvector(firstobs,lastobs); | |
| moisnais=vector(firstobs,lastobs); | |
| annais=vector(firstobs,lastobs); | |
| moisdc=vector(firstobs,lastobs); | |
| andc=vector(firstobs,lastobs); | |
| weight=vector(firstobs,lastobs); | |
| agedc=vector(firstobs,lastobs); | |
| cod=ivector(firstobs,lastobs); | |
| for(i=firstobs;i<=lastobs;i++){ | |
| num[i]=0; | num[i]=0; |
| moisnais[i]=0; | moisnais[i]=0; |
| annais[i]=0; | annais[i]=0; |
| Line 11356 Please run with mle=-1 to get a correct | Line 11372 Please run with mle=-1 to get a correct |
| cod[i]=0; | cod[i]=0; |
| weight[i]=1.0; /* Equal weights, 1 by default */ | weight[i]=1.0; /* Equal weights, 1 by default */ |
| } | } |
| mint=matrix(1,maxwav,1,n); | mint=matrix(1,maxwav,firstobs,lastobs); |
| anint=matrix(1,maxwav,1,n); | anint=matrix(1,maxwav,firstobs,lastobs); |
| s=imatrix(1,maxwav+1,1,n); /* s[i][j] health state for wave i and individual j */ | s=imatrix(1,maxwav+1,firstobs,lastobs); /* s[i][j] health state for wave i and individual j */ |
| tab=ivector(1,NCOVMAX); | tab=ivector(1,NCOVMAX); |
| ncodemax=ivector(1,NCOVMAX); /* Number of code per covariate; if O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ | ncodemax=ivector(1,NCOVMAX); /* Number of code per covariate; if O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ |
| ncodemaxwundef=ivector(1,NCOVMAX); /* Number of code per covariate; if - 1 O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ | ncodemaxwundef=ivector(1,NCOVMAX); /* Number of code per covariate; if - 1 O and 1 only, 2**ncov; V1+V2+V3+V4=>16 */ |
| Line 11460 Please run with mle=-1 to get a correct | Line 11476 Please run with mle=-1 to get a correct |
| agegomp=(int)agemin; | agegomp=(int)agemin; |
| free_vector(moisnais,1,n); | free_vector(moisnais,firstobs,lastobs); |
| free_vector(annais,1,n); | free_vector(annais,firstobs,lastobs); |
| /* free_matrix(mint,1,maxwav,1,n); | /* free_matrix(mint,1,maxwav,1,n); |
| free_matrix(anint,1,maxwav,1,n);*/ | free_matrix(anint,1,maxwav,1,n);*/ |
| /* free_vector(moisdc,1,n); */ | /* free_vector(moisdc,1,n); */ |
| Line 11487 Please run with mle=-1 to get a correct | Line 11503 Please run with mle=-1 to get a correct |
| concatwav(wav, dh, bh, mw, s, agedc, agev, firstpass, lastpass, imx, nlstate, stepm); | concatwav(wav, dh, bh, mw, s, agedc, agev, firstpass, lastpass, imx, nlstate, stepm); |
| /* Concatenates waves */ | /* Concatenates waves */ |
| free_vector(moisdc,1,n); | free_vector(moisdc,firstobs,lastobs); |
| free_vector(andc,1,n); | free_vector(andc,firstobs,lastobs); |
| /* Routine tricode is to calculate cptcoveff (real number of unique covariates) and to associate covariable number and modality */ | /* Routine tricode is to calculate cptcoveff (real number of unique covariates) and to associate covariable number and modality */ |
| nbcode=imatrix(0,NCOVMAX,0,NCOVMAX); | nbcode=imatrix(0,NCOVMAX,0,NCOVMAX); |
| Line 11678 Title=%s <br>Datafile=%s Firstpass=%d La | Line 11694 Title=%s <br>Datafile=%s Firstpass=%d La |
| fprintf(fichtm,"\n<li> Number of fixed quantitative variables: nqv=%d ", nqv); | fprintf(fichtm,"\n<li> Number of fixed quantitative variables: nqv=%d ", nqv); |
| ncurrv=i; | ncurrv=i; |
| for(i=ncurrv; i <=ncurrv-1+nqv; i++) fprintf(fichtm,"V%d ", i); | for(i=ncurrv; i <=ncurrv-1+nqv; i++) fprintf(fichtm,"V%d ", i); |
| fprintf(fichtm,"\n<li> Number of time varying (wave varying) covariates: ntv=%d ", ntv); | fprintf(fichtm,"\n<li> Number of time varying (wave varying) dummy covariates: ntv=%d ", ntv); |
| ncurrv=i; | ncurrv=i; |
| for(i=ncurrv; i <=ncurrv-1+ntv; i++) fprintf(fichtm,"V%d ", i); | for(i=ncurrv; i <=ncurrv-1+ntv; i++) fprintf(fichtm,"V%d ", i); |
| fprintf(fichtm,"\n<li>Number of quantitative time varying covariates: nqtv=%d ", nqtv); | fprintf(fichtm,"\n<li>Number of time varying quantitative covariates: nqtv=%d ", nqtv); |
| ncurrv=i; | ncurrv=i; |
| for(i=ncurrv; i <=ncurrv-1+nqtv; i++) fprintf(fichtm,"V%d ", i); | for(i=ncurrv; i <=ncurrv-1+nqtv; i++) fprintf(fichtm,"V%d ", i); |
| fprintf(fichtm,"\n<li>Weights column \n<br>Number of alive states: nlstate=%d <br>Number of death states (not really implemented): ndeath=%d \n<li>Number of waves: maxwav=%d \n<li>Parameter for maximization (1), using parameter values (0), for design of parameters and variance-covariance matrix: mle=%d \n<li>Does the weight column be taken into account (1), or not (0): weight=%d</ul>\n", \ | fprintf(fichtm,"\n<li>Weights column \n<br>Number of alive states: nlstate=%d <br>Number of death states (not really implemented): ndeath=%d \n<li>Number of waves: maxwav=%d \n<li>Parameter for maximization (1), using parameter values (0), for design of parameters and variance-covariance matrix: mle=%d \n<li>Does the weight column be taken into account (1), or not (0): weight=%d</ul>\n", \ |
| Line 11713 Interval (in months) between two waves: | Line 11729 Interval (in months) between two waves: |
| for(j=1;j<=NDIM;j++) | for(j=1;j<=NDIM;j++) |
| ximort[i][j]=0.; | ximort[i][j]=0.; |
| /* ximort=gsl_matrix_alloc(1,NDIM,1,NDIM); */ | /* ximort=gsl_matrix_alloc(1,NDIM,1,NDIM); */ |
| cens=ivector(1,n); | cens=ivector(firstobs,lastobs); |
| ageexmed=vector(1,n); | ageexmed=vector(firstobs,lastobs); |
| agecens=vector(1,n); | agecens=vector(firstobs,lastobs); |
| dcwave=ivector(1,n); | dcwave=ivector(firstobs,lastobs); |
| for (i=1; i<=imx; i++){ | for (i=1; i<=imx; i++){ |
| dcwave[i]=-1; | dcwave[i]=-1; |
| Line 11930 Please run with mle=-1 to get a correct | Line 11946 Please run with mle=-1 to get a correct |
| free_vector(lpop,1,AGESUP); | free_vector(lpop,1,AGESUP); |
| free_vector(tpop,1,AGESUP); | free_vector(tpop,1,AGESUP); |
| free_matrix(ximort,1,NDIM,1,NDIM); | free_matrix(ximort,1,NDIM,1,NDIM); |
| free_ivector(cens,1,n); | free_ivector(dcwave,firstobs,lastobs); |
| free_vector(agecens,1,n); | free_vector(agecens,firstobs,lastobs); |
| free_ivector(dcwave,1,n); | free_vector(ageexmed,firstobs,lastobs); |
| free_ivector(cens,firstobs,lastobs); | |
| #ifdef GSL | #ifdef GSL |
| #endif | #endif |
| } /* Endof if mle==-3 mortality only */ | } /* Endof if mle==-3 mortality only */ |
| Line 12338 Please run with mle=-1 to get a correct | Line 12355 Please run with mle=-1 to get a correct |
| /* free_imatrix(dh,1,lastpass-firstpass+2,1,imx); */ | /* free_imatrix(dh,1,lastpass-firstpass+2,1,imx); */ |
| /* free_imatrix(bh,1,lastpass-firstpass+2,1,imx); */ | /* free_imatrix(bh,1,lastpass-firstpass+2,1,imx); */ |
| /* free_imatrix(mw,1,lastpass-firstpass+2,1,imx); */ | /* free_imatrix(mw,1,lastpass-firstpass+2,1,imx); */ |
| free_lvector(num,1,n); | free_lvector(num,firstobs,lastobs); |
| free_vector(agedc,1,n); | free_vector(agedc,firstobs,lastobs); |
| /*free_matrix(covar,0,NCOVMAX,1,n);*/ | /*free_matrix(covar,0,NCOVMAX,1,n);*/ |
| /*free_matrix(covar,1,NCOVMAX,1,n);*/ | /*free_matrix(covar,1,NCOVMAX,1,n);*/ |
| fclose(ficparo); | fclose(ficparo); |
| Line 12653 Please run with mle=-1 to get a correct | Line 12670 Please run with mle=-1 to get a correct |
| varprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, prlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); | varprlim(fileresu, nresult, mobaverage, mobilavproj, bage, fage, prlim, &ncvyear, ftolpl, p, matcov, delti, stepm, cptcoveff); |
| free_vector(weight,1,n); | free_vector(weight,firstobs,lastobs); |
| free_imatrix(Tvard,1,NCOVMAX,1,2); | free_imatrix(Tvard,1,NCOVMAX,1,2); |
| free_imatrix(s,1,maxwav+1,1,n); | free_imatrix(s,1,maxwav+1,firstobs,lastobs); |
| free_matrix(anint,1,maxwav,1,n); | free_matrix(anint,1,maxwav,firstobs,lastobs); |
| free_matrix(mint,1,maxwav,1,n); | free_matrix(mint,1,maxwav,firstobs,lastobs); |
| free_ivector(cod,1,n); | free_ivector(cod,firstobs,lastobs); |
| free_ivector(tab,1,NCOVMAX); | free_ivector(tab,1,NCOVMAX); |
| fclose(ficresstdeij); | fclose(ficresstdeij); |
| fclose(ficrescveij); | fclose(ficrescveij); |
| Line 12678 Please run with mle=-1 to get a correct | Line 12695 Please run with mle=-1 to get a correct |
| free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,1,n); | if(ntv+nqtv>=1)free_ma3x(cotvar,1,maxwav,1,ntv+nqtv,firstobs,lastobs); |
| if(nqtv>=1)free_ma3x(cotqvar,1,maxwav,1,nqtv,1,n); | if(nqtv>=1)free_ma3x(cotqvar,1,maxwav,1,nqtv,firstobs,lastobs); |
| if(nqv>=1)free_matrix(coqvar,1,nqv,1,n); | if(nqv>=1)free_matrix(coqvar,1,nqv,firstobs,lastobs); |
| free_matrix(covar,0,NCOVMAX,1,n); | free_matrix(covar,0,NCOVMAX,firstobs,lastobs); |
| free_matrix(matcov,1,npar,1,npar); | free_matrix(matcov,1,npar,1,npar); |
| free_matrix(hess,1,npar,1,npar); | free_matrix(hess,1,npar,1,npar); |
| /*free_vector(delti,1,npar);*/ | /*free_vector(delti,1,npar);*/ |