version 1.247, 2016/09/02 11:11:21
|
version 1.249, 2016/09/07 17:14:18
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.249 2016/09/07 17:14:18 brouard |
|
Summary: Starting values from frequencies |
|
|
|
Revision 1.248 2016/09/07 14:10:18 brouard |
|
*** empty log message *** |
|
|
Revision 1.247 2016/09/02 11:11:21 brouard |
Revision 1.247 2016/09/02 11:11:21 brouard |
*** empty log message *** |
*** empty log message *** |
|
|
Line 4246 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4252 Title=%s <br>Datafile=%s Firstpass=%d La
|
j=cptcoveff; /* Only dummy covariates of the model */ |
j=cptcoveff; /* Only dummy covariates of the model */ |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
|
|
first=1; |
|
|
|
/* Detects if a combination j1 is empty: for a multinomial variable like 3 education levels: |
/* Detects if a combination j1 is empty: for a multinomial variable like 3 education levels: |
reference=low_education V1=0,V2=0 |
reference=low_education V1=0,V2=0 |
Line 4254 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4259 Title=%s <br>Datafile=%s Firstpass=%d La
|
high_educ V1=0 V2=1 |
high_educ V1=0 V2=1 |
Then V1=1 and V2=1 is a noisy combination that we want to exclude for the list 2**cptcoveff |
Then V1=1 and V2=1 is a noisy combination that we want to exclude for the list 2**cptcoveff |
*/ |
*/ |
|
dateintsum=0; |
|
k2cpt=0; |
|
|
|
for (j = 0; j <= cptcoveff; j+=cptcoveff){ |
|
first=1; |
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */ |
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on covariates combination in order of model, excluding quantitatives V4=0, V3=0 for example, fixed or varying covariates */ |
posproptt=0.; |
posproptt=0.; |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
Line 4277 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4286 Title=%s <br>Datafile=%s Firstpass=%d La
|
/* } */ |
/* } */ |
/* } */ |
/* } */ |
|
|
dateintsum=0; |
/* dateintsum=0; */ |
k2cpt=0; |
/* k2cpt=0; */ |
|
|
/* For that combination of covariate j1, we count and print the frequencies in one pass */ |
/* For that combination of covariate j1, we count and print the frequencies in one pass */ |
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
for (iind=1; iind<=imx; iind++) { /* For each individual iind */ |
bool=1; |
bool=1; |
|
if(j !=0){ |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
if(anyvaryingduminmodel==0){ /* If All fixed covariates */ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
if (cptcoveff >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
/* for (z1=1; z1<= nqfveff; z1++) { */ |
Line 4304 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4315 Title=%s <br>Datafile=%s Firstpass=%d La
|
} /* end z1 */ |
} /* end z1 */ |
} /* cptcovn > 0 */ |
} /* cptcovn > 0 */ |
} /* end any */ |
} /* end any */ |
|
}/* end j==0 */ |
if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
if (bool==1){ /* We selected an individual iind satisfying combination j1 or all fixed */ |
/* for(m=firstpass; m<=lastpass; m++){ */ |
/* for(m=firstpass; m<=lastpass; m++){ */ |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
for(mi=1; mi<wav[iind];mi++){ /* For that wave */ |
m=mw[mi][iind]; |
m=mw[mi][iind]; |
|
if(j!=0){ |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
if(anyvaryingduminmodel==1){ /* Some are varying covariates */ |
for (z1=1; z1<=cptcoveff; z1++) { |
for (z1=1; z1<=cptcoveff; z1++) { |
if( Fixed[Tmodelind[z1]]==1){ |
if( Fixed[Tmodelind[z1]]==1){ |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
iv= Tvar[Tmodelind[z1]]-ncovcol-nqv; |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
bool=0; |
bool=0; /* not selected */ |
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
}else if( Fixed[Tmodelind[z1]]== 0) { /* fixed */ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
bool=0; |
bool=0; |
Line 4321 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4334 Title=%s <br>Datafile=%s Firstpass=%d La
|
} |
} |
} |
} |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
}/* Some are varying covariates, we tried to speed up if all fixed covariates in the model, avoiding waves loop */ |
|
} /* end j==0 */ |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
/* bool =0 we keep that guy which corresponds to the combination of dummy values */ |
if(bool==1){ |
if(bool==1){ |
/* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] |
/* dh[m][iind] or dh[mw[mi][iind]][iind] is the delay between two effective (mi) waves m=mw[mi][iind] |
Line 4344 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4358 Title=%s <br>Datafile=%s Firstpass=%d La
|
freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */ |
freq[s[m][iind]][s[m+1][iind]][iagemax+3] += weight[iind]; /* Total is in iagemax+3 *//* At age of beginning of transition, where status is known */ |
} |
} |
} /* end if between passes */ |
} /* end if between passes */ |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99)) { |
if ((agev[m][iind]>1) && (agev[m][iind]< (iagemax+3)) && (anint[m][iind]!=9999) && (mint[m][iind]!=99) && (j==0)) { |
dateintsum=dateintsum+k2; |
dateintsum=dateintsum+k2; /* on all covariates ?*/ |
k2cpt++; |
k2cpt++; |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
/* printf("iind=%ld dateintmean = %lf dateintsum=%lf k2cpt=%lf k2=%lf\n",iind, dateintsum/k2cpt, dateintsum,k2cpt, k2); */ |
} |
} |
Line 4359 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4373 Title=%s <br>Datafile=%s Firstpass=%d La
|
|
|
/* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
/* fprintf(ficresp, "#Count between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/ |
pstamp(ficresp); |
pstamp(ficresp); |
if (cptcoveff>0){ |
if (cptcoveff>0 && j!=0){ |
fprintf(ficresp, "\n#********** Variable "); |
fprintf(ficresp, "\n#********** Variable "); |
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtm, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
fprintf(ficresphtmfr, "\n<br/><br/><h3>********** Variable "); |
Line 4525 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4539 Title=%s <br>Datafile=%s Firstpass=%d La
|
} |
} |
fprintf(ficresphtmfr,"</table>\n"); |
fprintf(ficresphtmfr,"</table>\n"); |
} /* end selected combination of covariate j1 */ |
} /* end selected combination of covariate j1 */ |
|
if(j==0){ /* We can estimate starting values from the occurences in each case */ |
|
for(jk=-1; jk <=nlstate+ndeath; jk++){ |
|
for(m=-1; m <=nlstate+ndeath; m++){ |
|
/* param[i]|j][k]= freq[jk][m][iagemax+3] */ |
|
if(freq[jk][m][iage] !=0 ) { /* minimizing output */ |
|
if(first==1){ |
|
printf(" %d%d=%.0f",jk,m,freq[jk][m][iage]); |
|
} |
|
fprintf(ficlog," %d%d=%.0f",jk,m,freq[jk][m][iage]); |
|
} |
|
} |
|
} /* end loop jk */ |
|
} |
|
} /* end j */ |
dateintmean=dateintsum/k2cpt; |
dateintmean=dateintsum/k2cpt; |
|
|
fclose(ficresp); |
fclose(ficresp); |
Line 8843 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 8871 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
} |
} |
|
|
int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
{ |
{/* Check ages at death */ |
int i, m; |
int i, m; |
int firstone=0; |
int firstone=0; |
|
|
Line 9901 int main(int argc, char *argv[])
|
Line 9929 int main(int argc, char *argv[])
|
fclose (ficlog); |
fclose (ficlog); |
goto end; |
goto end; |
exit(0); |
exit(0); |
|
} else if(mle==-2) { /* Guessing from means */ |
|
prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
|
printf(" You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso); |
|
fprintf(ficlog," You chose mle=-2, look at file %s for a template of covariance matrix \n",filereso); |
|
|
} else if(mle==-5) { /* Main Wizard */ |
} else if(mle==-5) { /* Main Wizard */ |
prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
prwizard(ncovmodel, nlstate, ndeath, model, ficparo); |
printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso); |
printf(" You chose mle=-3, look at file %s for a template of covariance matrix \n",filereso); |
Line 10224 Please run with mle=-1 to get a correct
|
Line 10257 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 */ |
|
|
free_vector(moisdc,1,n); |
free_vector(moisdc,1,n); |
free_vector(andc,1,n); |
free_vector(andc,1,n); |
Line 10427 Interval (in months) between two waves:
|
Line 10460 Interval (in months) between two waves:
|
/* For mortality only */ |
/* For mortality only */ |
if (mle==-3){ |
if (mle==-3){ |
ximort=matrix(1,NDIM,1,NDIM); |
ximort=matrix(1,NDIM,1,NDIM); |
for(i=1;i<=NDIM;i++) |
for(i=1;i<=NDIM;i++) |
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(1,n); |
ageexmed=vector(1,n); |
ageexmed=vector(1,n); |