--- imach/src/imach.c 2002/02/20 17:02:08 1.13 +++ imach/src/imach.c 2006/04/04 15:20:31 1.125 @@ -1,37 +1,273 @@ - -/*********************** Imach ************************************** - This program computes Healthy Life Expectancies from cross-longitudinal - data. Cross-longitudinal consist in a first survey ("cross") where - individuals from different ages are interviewed on their health status - or degree of disability. At least a second wave of interviews - ("longitudinal") should measure each new individual health status. - Health expectancies are computed from the transistions observed between - waves and are computed for each degree of severity of disability (number - of life states). More degrees you consider, more time is necessary to - reach the Maximum Likelihood of the parameters involved in the model. - The simplest model is the multinomial logistic model where pij is - the probabibility to be observed in state j at the second wave conditional - to be observed in state i at the first wave. Therefore the model is: - log(pij/pii)= aij + bij*age+ cij*sex + etc , where 'age' is age and 'sex' - is a covariate. If you want to have a more complex model than "constant and - age", you should modify the program where the markup - *Covariates have to be included here again* invites you to do it. - More covariates you add, less is the speed of the convergence. - - The advantage that this computer programme claims, comes from that if the - delay between waves is not identical for each individual, or if some - individual missed an interview, the information is not rounded or lost, but - taken into account using an interpolation or extrapolation. - hPijx is the probability to be - observed in state i at age x+h conditional to the observed state i at age - x. The delay 'h' can be split into an exact number (nh*stepm) of - unobserved intermediate states. This elementary transition (by month or - quarter trimester, semester or year) is model as a multinomial logistic. - The hPx matrix is simply the matrix product of nh*stepm elementary matrices - and the contribution of each individual to the likelihood is simply hPijx. +/* $Id: imach.c,v 1.125 2006/04/04 15:20:31 lievre Exp $ + $State: Exp $ + $Log: imach.c,v $ + Revision 1.125 2006/04/04 15:20:31 lievre + Errors in calculation of health expectancies. Age was not initialized. + Forecasting file added. + + Revision 1.124 2006/03/22 17:13:53 lievre + Parameters are printed with %lf instead of %f (more numbers after the comma). + The log-likelihood is printed in the log file + + Revision 1.123 2006/03/20 10:52:43 brouard + * imach.c (Module):
"); - double fret; - double **xi,tmp,delta; + m=cptcoveff; + if (cptcovn < 1) {m=1;ncodemax[1]=1;} - double dum; /* Dummy variable */ - double ***p3mat; - int *indx; - char line[MAXLINE], linepar[MAXLINE]; - char title[MAXLINE]; - char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH], optionfilehtm[FILENAMELENGTH]; - char fileres[FILENAMELENGTH], filerespij[FILENAMELENGTH], filereso[FILENAMELENGTH], fileresf[FILENAMELENGTH]; - char filerest[FILENAMELENGTH]; - char fileregp[FILENAMELENGTH]; - char path[80],pathc[80],pathcd[80],pathtot[80],model[20]; - int firstobs=1, lastobs=10; - int sdeb, sfin; /* Status at beginning and end */ - int c, h , cpt,l; - int ju,jl, mi; - int i1,j1, k1,k2,k3,jk,aa,bb, stepsize, ij; - int jnais,jdc,jint4,jint1,jint2,jint3,**outcome,**adl,*tab; - - int hstepm, nhstepm; - double bage, fage, age, agelim, agebase; - double ftolpl=FTOL; - double **prlim; - double *severity; - double ***param; /* Matrix of parameters */ - double *p; - double **matcov; /* Matrix of covariance */ - double ***delti3; /* Scale */ - double *delti; /* Scale */ - double ***eij, ***vareij; - double **varpl; /* Variances of prevalence limits by age */ - double *epj, vepp; - double kk1; + jj1=0; + for(k1=1; k1<=m;k1++){ + for(i1=1; i1<=ncodemax[k1];i1++){ + jj1++; + if (cptcovn > 0) { + fprintf(fichtm,"
"); - char version[80]="Imach version 64b, May 2001, INED-EUROREVES "; - char *alph[]={"a","a","b","c","d","e"}, str[4]; + m=cptcoveff; + if (cptcovn < 1) {m=1;ncodemax[1]=1;} + jj1=0; + for(k1=1; k1<=m;k1++){ + for(i1=1; i1<=ncodemax[k1];i1++){ + jj1++; + if (cptcovn > 0) { + fprintf(fichtm,"
"); - m=cptcoveff; - if (cptcovn < 1) {m=1;ncodemax[1]=1;} - - j1=0; - for(k1=1; k1<=m;k1++){ - for(i1=1; i1<=ncodemax[k1];i1++){ - j1++; - if (cptcovn > 0) { - fprintf(fichtm,"