version 1.316, 2022/05/11 15:11:31
|
version 1.334, 2022/08/25 09:08:41
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.334 2022/08/25 09:08:41 brouard |
|
Summary: In progress for quantitative |
|
|
|
Revision 1.333 2022/08/21 09:10:30 brouard |
|
* src/imach.c (Module): Version 0.99r33 A lot of changes in |
|
reassigning covariates: my first idea was that people will always |
|
use the first covariate V1 into the model but in fact they are |
|
producing data with many covariates and can use an equation model |
|
with some of the covariate; it means that in a model V2+V3 instead |
|
of codtabm(k,Tvaraff[j]) which calculates for combination k, for |
|
three covariates (V1, V2, V3) the value of Tvaraff[j], but in fact |
|
the equation model is restricted to two variables only (V2, V3) |
|
and the combination for V2 should be codtabm(k,1) instead of |
|
(codtabm(k,2), and the code should be |
|
codtabm(k,TnsdVar[Tvaraff[j]]. Many many changes have been |
|
made. All of these should be simplified once a day like we did in |
|
hpxij() for example by using precov[nres] which is computed in |
|
decoderesult for each nres of each resultline. Loop should be done |
|
on the equation model globally by distinguishing only product with |
|
age (which are changing with age) and no more on type of |
|
covariates, single dummies, single covariates. |
|
|
|
Revision 1.332 2022/08/21 09:06:25 brouard |
|
Summary: Version 0.99r33 |
|
|
|
* src/imach.c (Module): Version 0.99r33 A lot of changes in |
|
reassigning covariates: my first idea was that people will always |
|
use the first covariate V1 into the model but in fact they are |
|
producing data with many covariates and can use an equation model |
|
with some of the covariate; it means that in a model V2+V3 instead |
|
of codtabm(k,Tvaraff[j]) which calculates for combination k, for |
|
three covariates (V1, V2, V3) the value of Tvaraff[j], but in fact |
|
the equation model is restricted to two variables only (V2, V3) |
|
and the combination for V2 should be codtabm(k,1) instead of |
|
(codtabm(k,2), and the code should be |
|
codtabm(k,TnsdVar[Tvaraff[j]]. Many many changes have been |
|
made. All of these should be simplified once a day like we did in |
|
hpxij() for example by using precov[nres] which is computed in |
|
decoderesult for each nres of each resultline. Loop should be done |
|
on the equation model globally by distinguishing only product with |
|
age (which are changing with age) and no more on type of |
|
covariates, single dummies, single covariates. |
|
|
|
Revision 1.331 2022/08/07 05:40:09 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.330 2022/08/06 07:18:25 brouard |
|
Summary: last 0.99r31 |
|
|
|
* imach.c (Module): Version of imach using partly decoderesult to rebuild xpxij function |
|
|
|
Revision 1.329 2022/08/03 17:29:54 brouard |
|
* imach.c (Module): Many errors in graphs fixed with Vn*age covariates. |
|
|
|
Revision 1.328 2022/07/27 17:40:48 brouard |
|
Summary: valgrind bug fixed by initializing to zero DummyV as well as Tage |
|
|
|
Revision 1.327 2022/07/27 14:47:35 brouard |
|
Summary: Still a problem for one-step probabilities in case of quantitative variables |
|
|
|
Revision 1.326 2022/07/26 17:33:55 brouard |
|
Summary: some test with nres=1 |
|
|
|
Revision 1.325 2022/07/25 14:27:23 brouard |
|
Summary: r30 |
|
|
|
* imach.c (Module): Error cptcovn instead of nsd in bmij (was |
|
coredumped, revealed by Feiuno, thank you. |
|
|
|
Revision 1.324 2022/07/23 17:44:26 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.323 2022/07/22 12:30:08 brouard |
|
* imach.c (Module): Output of Wald test in the htm file and not only in the log. |
|
|
|
Revision 1.322 2022/07/22 12:27:48 brouard |
|
* imach.c (Module): Output of Wald test in the htm file and not only in the log. |
|
|
|
Revision 1.321 2022/07/22 12:04:24 brouard |
|
Summary: r28 |
|
|
|
* imach.c (Module): Output of Wald test in the htm file and not only in the log. |
|
|
|
Revision 1.320 2022/06/02 05:10:11 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.319 2022/06/02 04:45:11 brouard |
|
* imach.c (Module): Adding the Wald tests from the log to the main |
|
htm for better display of the maximum likelihood estimators. |
|
|
|
Revision 1.318 2022/05/24 08:10:59 brouard |
|
* imach.c (Module): Some attempts to find a bug of wrong estimates |
|
of confidencce intervals with product in the equation modelC |
|
|
|
Revision 1.317 2022/05/15 15:06:23 brouard |
|
* imach.c (Module): Some minor improvements |
|
|
Revision 1.316 2022/05/11 15:11:31 brouard |
Revision 1.316 2022/05/11 15:11:31 brouard |
Summary: r27 |
Summary: r27 |
|
|
Line 844
|
Line 941
|
|
|
The same imach parameter file can be used but the option for mle should be -3. |
The same imach parameter file can be used but the option for mle should be -3. |
|
|
Agnès, who wrote this part of the code, tried to keep most of the |
Agnès, who wrote this part of the code, tried to keep most of the |
former routines in order to include the new code within the former code. |
former routines in order to include the new code within the former code. |
|
|
The output is very simple: only an estimate of the intercept and of |
The output is very simple: only an estimate of the intercept and of |
Line 1023 Important routines
|
Line 1120 Important routines
|
- Tricode which tests the modality of dummy variables (in order to warn with wrong or empty modalities) |
- Tricode which tests the modality of dummy variables (in order to warn with wrong or empty modalities) |
and returns the number of efficient covariates cptcoveff and modalities nbcode[Tvar[k]][1]= 0 and nbcode[Tvar[k]][2]= 1 usually. |
and returns the number of efficient covariates cptcoveff and modalities nbcode[Tvar[k]][1]= 0 and nbcode[Tvar[k]][2]= 1 usually. |
- printinghtml which outputs results like life expectancy in and from a state for a combination of modalities of dummy variables |
- printinghtml which outputs results like life expectancy in and from a state for a combination of modalities of dummy variables |
o There are 2*cptcoveff combinations of (0,1) for cptcoveff variables. Outputting only combinations with people, éliminating 1 1 if |
o There are 2**cptcoveff combinations of (0,1) for cptcoveff variables. Outputting only combinations with people, éliminating 1 1 if |
race White (0 0), Black vs White (1 0), Hispanic (0 1) and 1 1 being meaningless. |
race White (0 0), Black vs White (1 0), Hispanic (0 1) and 1 1 being meaningless. |
|
|
|
|
|
|
Authors: Nicolas Brouard (brouard@ined.fr) and Agnès Lièvre (lievre@ined.fr). |
Authors: Nicolas Brouard (brouard@ined.fr) and Agnès Lièvre (lievre@ined.fr). |
Institut national d'études démographiques, Paris. |
Institut national d'études démographiques, Paris. |
This software have been partly granted by Euro-REVES, a concerted action |
This software have been partly granted by Euro-REVES, a concerted action |
from the European Union. |
from the European Union. |
It is copyrighted identically to a GNU software product, ie programme and |
It is copyrighted identically to a GNU software product, ie programme and |
Line 1093 Important routines
|
Line 1190 Important routines
|
#define POWELLNOF3INFF1TEST /* Skip test */ |
#define POWELLNOF3INFF1TEST /* Skip test */ |
/* #define POWELLORIGINAL /\* Don't use Directest to decide new direction but original Powell test *\/ */ |
/* #define POWELLORIGINAL /\* Don't use Directest to decide new direction but original Powell test *\/ */ |
/* #define MNBRAKORIGINAL /\* Don't use mnbrak fix *\/ */ |
/* #define MNBRAKORIGINAL /\* Don't use mnbrak fix *\/ */ |
|
/* #define FLATSUP *//* Suppresses directions where likelihood is flat */ |
|
|
#include <math.h> |
#include <math.h> |
#include <stdio.h> |
#include <stdio.h> |
Line 1148 typedef struct {
|
Line 1246 typedef struct {
|
|
|
#define GNUPLOTPROGRAM "gnuplot" |
#define GNUPLOTPROGRAM "gnuplot" |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
/*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
#define FILENAMELENGTH 132 |
#define FILENAMELENGTH 256 |
|
|
#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 */ |
Line 1159 typedef struct {
|
Line 1257 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 30 /**< Maximum number of covariates used in the model, including generated covariates V1*V2 or V1*age */ |
#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 |
Line 1187 typedef struct {
|
Line 1285 typedef struct {
|
/* $State$ */ |
/* $State$ */ |
#include "version.h" |
#include "version.h" |
char version[]=__IMACH_VERSION__; |
char version[]=__IMACH_VERSION__; |
char copyright[]="May 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022"; |
char copyright[]="August 2022,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021-202, INED 2000-2022"; |
char fullversion[]="$Revision$ $Date$"; |
char fullversion[]="$Revision$ $Date$"; |
char strstart[80]; |
char strstart[80]; |
char optionfilext[10], optionfilefiname[FILENAMELENGTH]; |
char optionfilext[10], optionfilefiname[FILENAMELENGTH]; |
int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int erreur=0, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
int nagesqr=0, nforce=0; /* nagesqr=1 if model is including age*age, number of forces */ |
int nagesqr=0, nforce=0; /* nagesqr=1 if model is including age*age, number of forces */ |
/* Number of covariates model=V2+V1+ V3*age+V2*V4 */ |
/* Number of covariates model (1)=V2+V1+ V3*age+V2*V4 */ |
int cptcovn=0; /**< cptcovn number of covariates added in the model (excepting constant and age and age*product) */ |
/* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
int cptcovt=0; /**< cptcovt number of covariates added in the model (excepting constant and age) */ |
int cptcovn=0; /**< cptcovn decodemodel: number of covariates k of the models excluding age*products =6 and age*age */ |
int cptcovs=0; /**< cptcovs number of simple covariates in the model V2+V1 =2 */ |
int cptcovt=0; /**< cptcovt: total number of covariates of the model (2) nbocc(+)+1 = 8 excepting constant and age and age*age */ |
|
int cptcovs=0; /**< cptcovs number of simple covariates in the model V2+V1 =2 (dummy or quantit or time varying) */ |
int cptcovsnq=0; /**< cptcovsnq number of simple covariates in the model but non quantitative V2+V1 =2 */ |
int cptcovsnq=0; /**< cptcovsnq number of simple covariates in the model but non quantitative V2+V1 =2 */ |
int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ |
int cptcovage=0; /**< Number of covariates with age: V3*age only =1 */ |
int cptcovprodnoage=0; /**< Number of covariate products without age */ |
int cptcovprodnoage=0; /**< Number of covariate products without age */ |
int cptcoveff=0; /* Total number of covariates to vary for printing results */ |
int cptcoveff=0; /* Total number of single dummy covariates to vary for printing results (2**cptcoveff combinations of dummies)(computed in tricode as cptcov) */ |
int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ |
int ncovf=0; /* Total number of effective fixed covariates (dummy or quantitative) in the model */ |
int ncovv=0; /* Total number of effective (wave) varying covariates (dummy or quantitative) in the model */ |
int ncovv=0; /* Total number of effective (wave) varying covariates (dummy or quantitative) in the model */ |
int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
int ncova=0; /* Total number of effective (wave and stepm) varying with age covariates (dummy of quantitative) in the model */ |
Line 1211 int nqfveff=0; /**< nqfveff Number of Qu
|
Line 1310 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 firstobs=1, lastobs=10; /* nobs = lastobs-firstobs+1 declared globally ;*/ |
int nobs=10; /* Number of observations in the data lastobs-firstobs */ |
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; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ |
int npar=NPARMAX; /* Number of parameters (nlstate+ndeath-1)*nlstate*ncovmodel; */ |
Line 1350 int *ncodemaxwundef; /* ncodemax[j]= Nu
|
Line 1450 int *ncodemaxwundef; /* ncodemax[j]= Nu
|
double **agev,*moisnais, *annais, *moisdc, *andc,**mint, **anint; |
double **agev,*moisnais, *annais, *moisdc, *andc,**mint, **anint; |
double **pmmij, ***probs; /* Global pointer */ |
double **pmmij, ***probs; /* Global pointer */ |
double ***mobaverage, ***mobaverages; /* New global variable */ |
double ***mobaverage, ***mobaverages; /* New global variable */ |
|
double **precov; /* New global variable to store for each resultline, values of model covariates given by the resultlines (in order to speed up) */ |
double *ageexmed,*agecens; |
double *ageexmed,*agecens; |
double dateintmean=0; |
double dateintmean=0; |
double anprojd, mprojd, jprojd; /* For eventual projections */ |
double anprojd, mprojd, jprojd; /* For eventual projections */ |
Line 1369 double ***cotvar; /* Time varying covari
|
Line 1470 double ***cotvar; /* Time varying covari
|
double ***cotqvar; /* Time varying quantitative covariate itqv */ |
double ***cotqvar; /* Time varying quantitative covariate itqv */ |
double idx; |
double idx; |
int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ |
int **nbcode, *Tvar; /**< model=V2 => Tvar[1]= 2 */ |
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
/* Some documentation */ |
/*k 1 2 3 4 5 6 7 8 9 */ |
/* Design original data |
/*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ |
* V1 V2 V3 V4 V5 V6 V7 V8 Weight ddb ddth d1st s1 V9 V10 V11 V12 s2 V9 V10 V11 V12 |
/* Tndvar[k] 1 2 3 4 5 */ |
* < ncovcol=6 > nqv=2 (V7 V8) dv dv dv qtv dv dv dvv qtv |
/*TDvar 4 3 6 7 1 */ /* For outputs only; combination of dummies fixed or varying */ |
* ntv=3 nqtv=1 |
/* Tns[k] 1 2 2 4 5 */ /* Number of single cova */ |
* cptcovn number of covariates (not including constant and age or age*age) = number of plus sign + 1 = 10+1=11 |
/* TvarsD[k] 1 2 3 */ /* Number of single dummy cova */ |
* For time varying covariate, quanti or dummies |
/* TvarsDind 2 3 9 */ /* position K of single dummy cova */ |
* cotqvar[wav][iv(1 to nqtv)][i]= [1][12][i]=(V12) quanti |
/* TvarsQ[k] 1 2 */ /* Number of single quantitative cova */ |
* cotvar[wav][ntv+iv][i]= [3+(1 to nqtv)][i]=(V12) quanti |
/* TvarsQind 1 6 */ /* position K of single quantitative cova */ |
* cotvar[wav][iv(1 to ntv)][i]= [1][1][i]=(V9) dummies at wav 1 |
/* Tprod[i]=k 4 7 */ |
* cotvar[wav][iv(1 to ntv)][i]= [1][2][i]=(V10) dummies at wav 1 |
/* Tage[i]=k 5 8 */ |
* covar[Vk,i], value of the Vkth fixed covariate dummy or quanti for individual i: |
/* */ |
* covar[1][i]= (V1), covar[4][i]=(V4), covar[8][i]=(V8) |
|
* Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 + V9 + V9*age + V10 |
|
* k= 1 2 3 4 5 6 7 8 9 10 11 |
|
*/ |
|
/* According to the model, more columns can be added to covar by the product of covariates */ |
|
/* ncovcol=1(Males=0 Females=1) nqv=1(raedyrs) ntv=2(withoutiadl=0 withiadl=1, witoutadl=0 withoutadl=1) nqtv=1(bmi) nlstate=3 ndeath=1 |
|
# States 1=Coresidence, 2 Living alone, 3 Institution |
|
# V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi |
|
*/ |
|
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
/* k 1 2 3 4 5 6 7 8 9 */ |
|
/*Typevar[k]= 0 0 0 2 1 0 2 1 0 *//*0 for simple covariate (dummy, quantitative,*/ |
|
/* fixed or varying), 1 for age product, 2 for*/ |
|
/* product */ |
|
/*Dummy[k]= 1 0 0 1 3 1 1 2 0 *//*Dummy[k] 0=dummy (0 1), 1 quantitative */ |
|
/*(single or product without age), 2 dummy*/ |
|
/* with age product, 3 quant with age product*/ |
|
/*Tvar[k]= 5 4 3 6 5 2 7 1 1 */ |
|
/* nsd 1 2 3 */ /* Counting single dummies covar fixed or tv */ |
|
/*TnsdVar[Tvar] 1 2 3 */ |
|
/*TvarsD[nsd] 4 3 1 */ /* ID of single dummy cova fixed or timevary*/ |
|
/*TvarsDind[k] 2 3 9 */ /* position K of single dummy cova */ |
|
/* nsq 1 2 */ /* Counting single quantit tv */ |
|
/* TvarsQ[k] 5 2 */ /* Number of single quantitative cova */ |
|
/* TvarsQind 1 6 */ /* position K of single quantitative cova */ |
|
/* Tprod[i]=k 1 2 */ /* Position in model of the ith prod without age */ |
|
/* cptcovage 1 2 */ /* Counting cov*age in the model equation */ |
|
/* Tage[cptcovage]=k 5 8 */ /* Position in the model of ith cov*age */ |
|
/* Tvard[1][1]@4={4,3,1,2} V4*V3 V1*V2 */ /* Position in model of the ith prod without age */ |
|
/* Tvardk[4][1]=4;Tvardk[4][2]=3;Tvardk[7][1]=1;Tvardk[7][2]=2 */ /* Variables of a prod at position in the model equation*/ |
|
/* TvarF TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 ID of fixed covariates or product V2, V1*V2, V1 */ |
|
/* TvarFind; TvarFind[1]=6, TvarFind[2]=7, TvarFind[3]=9 *//* Inverse V2(6) is first fixed (single or prod) */ |
/* Type */ |
/* Type */ |
/* V 1 2 3 4 5 */ |
/* V 1 2 3 4 5 */ |
/* F F V V V */ |
/* F F V V V */ |
/* D Q D D Q */ |
/* D Q D D Q */ |
/* */ |
/* */ |
int *TvarsD; |
int *TvarsD; |
|
int *TnsdVar; |
int *TvarsDind; |
int *TvarsDind; |
int *TvarsQ; |
int *TvarsQ; |
int *TvarsQind; |
int *TvarsQind; |
|
|
#define MAXRESULTLINES 10 |
#define MAXRESULTLINESPONE 10+1 |
int nresult=0; |
int nresult=0; |
int parameterline=0; /* # of the parameter (type) line */ |
int parameterline=0; /* # of the parameter (type) line */ |
int TKresult[MAXRESULTLINES]; |
int TKresult[MAXRESULTLINESPONE]; /* TKresult[nres]=k for each resultline nres give the corresponding combination of dummies */ |
int Tresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
int resultmodel[MAXRESULTLINESPONE][NCOVMAX];/* resultmodel[k1]=k3: k1th position in the model corresponds to the k3 position in the resultline */ |
int Tinvresult[MAXRESULTLINES][NCOVMAX];/* For dummy variable , value (output) */ |
int modelresult[MAXRESULTLINESPONE][NCOVMAX];/* modelresult[k3]=k1: k1th position in the model corresponds to the k3 position in the resultline */ |
int Tvresult[MAXRESULTLINES][NCOVMAX]; /* For dummy variable , variable # (output) */ |
int Tresult[MAXRESULTLINESPONE][NCOVMAX];/* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ |
double Tqresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , value (output) */ |
int Tinvresult[MAXRESULTLINESPONE][NCOVMAX];/* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
double Tqinvresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , value (output) */ |
double TinvDoQresult[MAXRESULTLINESPONE][NCOVMAX];/* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
int Tvqresult[MAXRESULTLINES][NCOVMAX]; /* For quantitative variable , variable # (output) */ |
int Tvresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
|
double Tqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ |
|
double Tqinvresult[MAXRESULTLINESPONE][NCOVMAX]; /* For quantitative variable , value (output) */ |
|
int Tvqresult[MAXRESULTLINESPONE][NCOVMAX]; /* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ |
|
|
|
/* ncovcol=1(Males=0 Females=1) nqv=1(raedyrs) ntv=2(withoutiadl=0 withiadl=1, witoutadl=0 withoutadl=1) nqtv=1(bmi) nlstate=3 ndeath=1 |
|
# States 1=Coresidence, 2 Living alone, 3 Institution |
|
# V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi |
|
*/ |
/* int *TDvar; /\**< TDvar[1]=4, TDvarF[2]=3, TDvar[3]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
/* int *TDvar; /\**< TDvar[1]=4, TDvarF[2]=3, TDvar[3]=6 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
int *TvarF; /**< TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarF; /**< TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFind; /**< TvarFind[1]=6, TvarFind[2]=7, Tvarind[3]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
int *TvarFind; /**< TvarFind[1]=6, TvarFind[2]=7, Tvarind[3]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
Line 1434 int *TmodelInvQind; /** Tmodelqind[1]=1
|
Line 1574 int *TmodelInvQind; /** Tmodelqind[1]=1
|
int *Ndum; /** Freq of modality (tricode */ |
int *Ndum; /** Freq of modality (tricode */ |
/* int **codtab;*/ /**< codtab=imatrix(1,100,1,10); */ |
/* int **codtab;*/ /**< codtab=imatrix(1,100,1,10); */ |
int **Tvard; |
int **Tvard; |
|
int **Tvardk; |
int *Tprod;/**< Gives the k position of the k1 product */ |
int *Tprod;/**< Gives the k position of the k1 product */ |
/* Tprod[k1=1]=3(=V1*V4) for V2+V1+V1*V4+age*V3 */ |
/* Tprod[k1=1]=3(=V1*V4) for V2+V1+V1*V4+age*V3 */ |
int *Tposprod; /**< Gives the k1 product from the k position */ |
int *Tposprod; /**< Gives the k1 product from the k position */ |
Line 2259 void linmin(double p[], double xi[], int
|
Line 2400 void linmin(double p[], double xi[], int
|
#endif |
#endif |
#ifdef LINMINORIGINAL |
#ifdef LINMINORIGINAL |
#else |
#else |
if(fb == fx){ /* Flat function in the direction */ |
if(fb == fx){ /* Flat function in the direction */ |
xmin=xx; |
xmin=xx; |
*flat=1; |
*flat=1; |
}else{ |
}else{ |
*flat=0; |
*flat=0; |
#endif |
#endif |
/*Flat mnbrak2 shift (*ax=0.000000000000, *fa=51626.272983130431), (*bx=-1.618034000000, *fb=51590.149499362531), (*cx=-4.236068025156, *fc=51590.149499362531) */ |
/*Flat mnbrak2 shift (*ax=0.000000000000, *fa=51626.272983130431), (*bx=-1.618034000000, *fb=51590.149499362531), (*cx=-4.236068025156, *fc=51590.149499362531) */ |
Line 2320 void linmin(double p[], double xi[], int
|
Line 2461 void linmin(double p[], double xi[], int
|
|
|
/*************** powell ************************/ |
/*************** powell ************************/ |
/* |
/* |
Minimization of a function func of n variables. Input consists of an initial starting point |
Minimization of a function func of n variables. Input consists in an initial starting point |
p[1..n] ; an initial matrix xi[1..n][1..n] , whose columns contain the initial set of di- |
p[1..n] ; an initial matrix xi[1..n][1..n] whose columns contain the initial set of di- |
rections (usually the n unit vectors); and ftol , the fractional tolerance in the function value |
rections (usually the n unit vectors); and ftol, the fractional tolerance in the function value |
such that failure to decrease by more than this amount on one iteration signals doneness. On |
such that failure to decrease by more than this amount in one iteration signals doneness. On |
output, p is set to the best point found, xi is the then-current direction set, fret is the returned |
output, p is set to the best point found, xi is the then-current direction set, fret is the returned |
function value at p , and iter is the number of iterations taken. The routine linmin is used. |
function value at p , and iter is the number of iterations taken. The routine linmin is used. |
*/ |
*/ |
Line 2348 void powell(double p[], double **xi, int
|
Line 2489 void powell(double p[], double **xi, int
|
double fp,fptt; |
double fp,fptt; |
double *xits; |
double *xits; |
int niterf, itmp; |
int niterf, itmp; |
#ifdef LINMINORIGINAL |
|
#else |
|
|
|
flatdir=ivector(1,n); |
|
for (j=1;j<=n;j++) flatdir[j]=0; |
|
#endif |
|
|
|
pt=vector(1,n); |
pt=vector(1,n); |
ptt=vector(1,n); |
ptt=vector(1,n); |
Line 2363 void powell(double p[], double **xi, int
|
Line 2498 void powell(double p[], double **xi, int
|
for (j=1;j<=n;j++) pt[j]=p[j]; |
for (j=1;j<=n;j++) pt[j]=p[j]; |
rcurr_time = time(NULL); |
rcurr_time = time(NULL); |
for (*iter=1;;++(*iter)) { |
for (*iter=1;;++(*iter)) { |
fp=(*fret); /* From former iteration or initial value */ |
|
ibig=0; |
ibig=0; |
del=0.0; |
del=0.0; |
rlast_time=rcurr_time; |
rlast_time=rcurr_time; |
/* (void) gettimeofday(&curr_time,&tzp); */ |
/* (void) gettimeofday(&curr_time,&tzp); */ |
rcurr_time = time(NULL); |
rcurr_time = time(NULL); |
curr_time = *localtime(&rcurr_time); |
curr_time = *localtime(&rcurr_time); |
printf("\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret, rcurr_time-rlast_time, rcurr_time-rstart_time);fflush(stdout); |
printf("\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret, rcurr_time-rlast_time, rcurr_time-rstart_time);fflush(stdout); |
fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f %ld sec. %ld sec.",*iter,*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); |
fprintf(ficlog,"\nPowell iter=%d -2*LL=%.12f gain=%.12f=%.3g %ld sec. %ld sec.",*iter,*fret, fp-*fret,fp-*fret,rcurr_time-rlast_time, rcurr_time-rstart_time); fflush(ficlog); |
/* fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tm_sec-start_time.tm_sec); */ |
/* fprintf(ficrespow,"%d %.12f %ld",*iter,*fret,curr_time.tm_sec-start_time.tm_sec); */ |
|
fp=(*fret); /* From former iteration or initial value */ |
for (i=1;i<=n;i++) { |
for (i=1;i<=n;i++) { |
fprintf(ficrespow," %.12lf", p[i]); |
fprintf(ficrespow," %.12lf", p[i]); |
} |
} |
Line 2477 void powell(double p[], double **xi, int
|
Line 2612 void powell(double p[], double **xi, int
|
/* Convergence test will use last linmin estimation (fret) and compare former iteration (fp) */ |
/* Convergence test will use last linmin estimation (fret) and compare former iteration (fp) */ |
/* But p and xit have been updated at the end of linmin, *fret corresponds to new p, xit */ |
/* But p and xit have been updated at the end of linmin, *fret corresponds to new p, xit */ |
/* New value of last point Pn is not computed, P(n-1) */ |
/* New value of last point Pn is not computed, P(n-1) */ |
for(j=1;j<=n;j++) { |
for(j=1;j<=n;j++) { |
if(flatdir[j] >0){ |
if(flatdir[j] >0){ |
printf(" p(%d)=%lf flat=%d ",j,p[j],flatdir[j]); |
printf(" p(%d)=%lf flat=%d ",j,p[j],flatdir[j]); |
fprintf(ficlog," p(%d)=%lf flat=%d ",j,p[j],flatdir[j]); |
fprintf(ficlog," p(%d)=%lf flat=%d ",j,p[j],flatdir[j]); |
} |
|
/* printf("\n"); */ |
|
/* fprintf(ficlog,"\n"); */ |
|
} |
} |
|
/* printf("\n"); */ |
|
/* fprintf(ficlog,"\n"); */ |
|
} |
/* if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { /\* Did we reach enough precision? *\/ */ |
/* if (2.0*fabs(fp-(*fret)) <= ftol*(fabs(fp)+fabs(*fret))) { /\* Did we reach enough precision? *\/ */ |
if (2.0*fabs(fp-(*fret)) <= ftol) { /* Did we reach enough precision? */ |
if (2.0*fabs(fp-(*fret)) <= ftol) { /* Did we reach enough precision? */ |
/* We could compare with a chi^2. chisquare(0.95,ddl=1)=3.84 */ |
/* We could compare with a chi^2. chisquare(0.95,ddl=1)=3.84 */ |
Line 2522 void powell(double p[], double **xi, int
|
Line 2657 void powell(double p[], double **xi, int
|
} |
} |
#endif |
#endif |
|
|
#ifdef LINMINORIGINAL |
|
#else |
|
free_ivector(flatdir,1,n); |
|
#endif |
|
free_vector(xit,1,n); |
free_vector(xit,1,n); |
free_vector(xits,1,n); |
free_vector(xits,1,n); |
free_vector(ptt,1,n); |
free_vector(ptt,1,n); |
Line 2639 void powell(double p[], double **xi, int
|
Line 2770 void powell(double p[], double **xi, int
|
} |
} |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
|
#ifdef FLATSUP |
|
free_vector(xit,1,n); |
|
free_vector(xits,1,n); |
|
free_vector(ptt,1,n); |
|
free_vector(pt,1,n); |
|
return; |
|
#endif |
} |
} |
#endif |
#endif |
printf("Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
printf("Gaining to use new average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
Line 2695 void powell(double p[], double **xi, int
|
Line 2833 void powell(double p[], double **xi, int
|
/* 0.51326036147820708, 0.48673963852179264} */ |
/* 0.51326036147820708, 0.48673963852179264} */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
|
|
int i, ii,j,k; |
int i, ii,j,k, k1; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
/* double **matprod2(); */ /* test */ |
/* double **matprod2(); */ /* test */ |
double **out, cov[NCOVMAX+1], **pmij(); /* **pmmij is a global variable feeded with oldms etc */ |
double **out, cov[NCOVMAX+1], **pmij(); /* **pmmij is a global variable feeded with oldms etc */ |
Line 2723 void powell(double p[], double **xi, int
|
Line 2861 void powell(double p[], double **xi, int
|
newm=savm; |
newm=savm; |
/* Covariates have to be included here again */ |
/* Covariates have to be included here again */ |
cov[2]=agefin; |
cov[2]=agefin; |
if(nagesqr==1) |
if(nagesqr==1){ |
cov[3]= agefin*agefin;; |
cov[3]= agefin*agefin; |
for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ |
} |
/* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ |
/* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
/* total number of covariates of the model nbocc(+)+1 = 8 excepting constant and age and age*age */ |
/* printf("prevalim Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
} |
if(Typevar[k1]==1){ /* A product with age */ |
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
}else{ |
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
cov[2+nagesqr+k1]=precov[nres][k1]; |
/* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
} |
} |
}/* End of loop on model equation */ |
for (k=1; k<=cptcovage;k++){ /* For product with age */ |
|
if(Dummy[Tvar[Tage[k]]]){ |
/* Start of old code (replaced by a loop on position in the model equation */ |
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
/* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only of the model *\/ */ |
} else{ |
/* /\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\/ */ |
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
/* /\* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])]; *\/ */ |
} |
/* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TnsdVar[TvarsD[k]])]; */ |
/* printf("prevalim Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
/* /\* model = 1 +age + V1*V3 + age*V1 + V2 + V1 + age*V2 + V3 + V3*age + V1*V2 */ |
} |
/* * k 1 2 3 4 5 6 7 8 */ |
for (k=1; k<=cptcovprod;k++){ /* For product without age */ |
/* *cov[] 1 2 3 4 5 6 7 8 9 10 */ |
/* printf("prevalim Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); */ |
/* *TypeVar[k] 2 1 0 0 1 0 1 2 */ |
if(Dummy[Tvard[k][1]==0]){ |
/* *Dummy[k] 0 2 0 0 2 0 2 0 */ |
if(Dummy[Tvard[k][2]==0]){ |
/* *Tvar[k] 4 1 2 1 2 3 3 5 */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
/* *nsd=3 (1) (2) (3) */ |
}else{ |
/* *TvarsD[nsd] [1]=2 1 3 */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; |
/* *TnsdVar [2]=2 [1]=1 [3]=3 */ |
} |
/* *TvarsDind[nsd](=k) [1]=3 [2]=4 [3]=6 */ |
}else{ |
/* *Tage[] [1]=1 [2]=2 [3]=3 */ |
if(Dummy[Tvard[k][2]==0]){ |
/* *Tvard[] [1][1]=1 [2][1]=1 */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; |
/* * [1][2]=3 [2][2]=2 */ |
}else{ |
/* *Tprod[](=k) [1]=1 [2]=8 */ |
cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; |
/* *TvarsDp(=Tvar) [1]=1 [2]=2 [3]=3 [4]=5 */ |
} |
/* *TvarD (=k) [1]=1 [2]=3 [3]=4 [3]=6 [4]=6 */ |
} |
/* *TvarsDpType */ |
} |
/* *si model= 1 + age + V3 + V2*age + V2 + V3*age */ |
|
/* * nsd=1 (1) (2) */ |
|
/* *TvarsD[nsd] 3 2 */ |
|
/* *TnsdVar (3)=1 (2)=2 */ |
|
/* *TvarsDind[nsd](=k) [1]=1 [2]=3 */ |
|
/* *Tage[] [1]=2 [2]= 3 */ |
|
/* *\/ */ |
|
/* /\* cov[++k1]=nbcode[TvarsD[k]][codtabm(ij,k)]; *\/ */ |
|
/* /\* printf("prevalim Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=nsq;k++) { /\* For single quantitative varying covariates only of the model *\/ */ |
|
/* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ |
|
/* /\* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline *\/ */ |
|
/* /\* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; *\/ */ |
|
/* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][resultmodel[nres][k1]] */ |
|
/* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ |
|
/* /\* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ |
|
/* if(Dummy[Tage[k]]==2){ /\* dummy with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ |
|
/* /\* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ |
|
/* } else if(Dummy[Tage[k]]==3){ /\* quantitative with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; */ |
|
/* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ |
|
/* } */ |
|
/* /\* printf("prevalim Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=cptcovprod;k++){ /\* For product without age *\/ */ |
|
/* /\* printf("prevalim Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); *\/ */ |
|
/* if(Dummy[Tvard[k][1]]==0){ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; *\/ */ |
|
/* } */ |
|
/* }else{ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; *\/ */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ |
|
/* /\* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ |
|
/* } */ |
|
/* } */ |
|
/* } /\* End product without age *\/ */ |
|
/* ENd of old code */ |
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/ |
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/ |
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/ |
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/ |
/*printf("ij=%d cov[3]=%lf \n",ij, cov[3]);*/ |
/*printf("ij=%d cov[3]=%lf \n",ij, cov[3]);*/ |
/* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
/* savm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
/* out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); /\* Bug Valgrind *\/ */ |
/* out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); /\* Bug Valgrind *\/ */ |
/* age and covariate values of ij are in 'cov' */ |
/* age and covariate values of ij are in 'cov' */ |
out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); /* Bug Valgrind */ |
out=matprod2(newm, pmij(pmmij,cov,ncovmodel,x,nlstate),1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); /* Bug Valgrind */ |
|
|
savm=oldm; |
savm=oldm; |
Line 2804 void powell(double p[], double **xi, int
|
Line 2990 void powell(double p[], double **xi, int
|
if(!first){ |
if(!first){ |
first=1; |
first=1; |
printf("Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d). Others in log file only...\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
printf("Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d). Others in log file only...\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
|
fprintf(ficlog, "Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d).\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
|
}else if (first >=1 && first <10){ |
|
fprintf(ficlog, "Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d).\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
|
first++; |
|
}else if (first ==10){ |
|
fprintf(ficlog, "Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d).\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
|
printf("Warning: the stable prevalence dit not converge. This warning came too often, IMaCh will stop notifying, even in its log file. Look at the graphs to appreciate the non convergence.\n"); |
|
fprintf(ficlog,"Warning: the stable prevalence no convergence; too many cases, giving up noticing, even in log file\n"); |
|
first++; |
} |
} |
fprintf(ficlog, "Warning: the stable prevalence at age %d did not converge with the required precision (%g > ftolpl=%g) within %.d years and %d loops. Try to lower 'ftolpl'. Youngest age to start was %d=(%d-%d).\n", (int)age, maxmax, ftolpl, *ncvyear, ncvloop, (int)(agefin+stepm/YEARM), (int)(age-stepm/YEARM), (int)delaymax); |
|
|
|
/* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */ |
/* Try to lower 'ftol', for example from 1.e-8 to 6.e-9.\n", ftolpl, (int)age, (int)delaymax, (int)agefin, ncvloop, (int)age-(int)agefin); */ |
free_vector(min,1,nlstate); |
free_vector(min,1,nlstate); |
Line 2842 void powell(double p[], double **xi, int
|
Line 3036 void powell(double p[], double **xi, int
|
/* 0.51326036147820708, 0.48673963852179264} */ |
/* 0.51326036147820708, 0.48673963852179264} */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
/* If we start from prlim again, prlim tends to a constant matrix */ |
|
|
int i, ii,j,k; |
int i, ii,j,k, k1; |
int first=0; |
int first=0; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
double *min, *max, *meandiff, maxmax,sumnew=0.; |
/* double **matprod2(); */ /* test */ |
/* double **matprod2(); */ /* test */ |
Line 2879 void powell(double p[], double **xi, int
|
Line 3073 void powell(double p[], double **xi, int
|
/* newm points to the allocated table savm passed by the function it can be written, savm could be reallocated */ |
/* newm points to the allocated table savm passed by the function it can be written, savm could be reallocated */ |
/* Covariates have to be included here again */ |
/* Covariates have to be included here again */ |
cov[2]=agefin; |
cov[2]=agefin; |
if(nagesqr==1) |
if(nagesqr==1){ |
cov[3]= agefin*agefin;; |
cov[3]= agefin*agefin;; |
for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ |
} |
/* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ |
for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
if(Typevar[k1]==1){ /* A product with age */ |
/* printf("bprevalim Dummy agefin=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agefin,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
} |
|
/* for (k=1; k<=cptcovn;k++) { */ |
|
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ |
|
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
|
/* /\* printf("prevalim ij=%d k=%d Tvar[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, Tvar[k],nbcode[Tvar[k]][codtabm(ij,Tvar[k])],cov[2+k], ij, k, codtabm(ij,Tvar[k])]); *\/ */ |
|
/* } */ |
|
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
|
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
|
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
|
/* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
/* for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,k)]*cov[2]; */ |
|
/* for (k=1; k<=cptcovprod;k++) /\* Useless *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; *\/ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; */ |
|
for (k=1; k<=cptcovage;k++){ /* For product with age */ |
|
if(Dummy[Tvar[Tage[k]]]){ |
|
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
|
} else{ |
|
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
|
} |
|
/* printf("prevalim Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovprod;k++){ /* For product without age */ |
|
/* printf("prevalim Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); */ |
|
if(Dummy[Tvard[k][1]==0]){ |
|
if(Dummy[Tvard[k][2]==0]){ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
|
}else{ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; |
|
} |
|
}else{ |
}else{ |
if(Dummy[Tvard[k][2]==0]){ |
cov[2+nagesqr+k1]=precov[nres][k1]; |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; |
|
}else{ |
|
cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; |
|
} |
|
} |
} |
} |
}/* End of loop on model equation */ |
|
|
|
/* Old code */ |
|
|
|
/* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ |
|
/* /\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\/ */ |
|
/* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])]; */ |
|
/* /\* printf("bprevalim Dummy agefin=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agefin,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); *\/ */ |
|
/* } */ |
|
/* /\* for (k=1; k<=cptcovn;k++) { *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; *\/ */ |
|
/* /\* /\\* printf("prevalim ij=%d k=%d Tvar[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, Tvar[k],nbcode[Tvar[k]][codtabm(ij,Tvar[k])],cov[2+k], ij, k, codtabm(ij,Tvar[k])]); *\\/ *\/ */ |
|
/* /\* } *\/ */ |
|
/* for (k=1; k<=nsq;k++) { /\* For single varying covariates only *\/ */ |
|
/* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ |
|
/* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; */ |
|
/* /\* printf("prevalim Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* } */ |
|
/* /\* for (k=1; k<=cptcovage;k++) cov[2+nagesqr+Tage[k]]=nbcode[Tvar[k]][codtabm(ij,k)]*cov[2]; *\/ */ |
|
/* /\* for (k=1; k<=cptcovprod;k++) /\\* Useless *\\/ *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ |
|
/* /\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\* dummy with age *\\/ ERROR ???*\/ */ |
|
/* if(Dummy[Tage[k]]== 2){ /\* dummy with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ |
|
/* } else if(Dummy[Tage[k]]== 3){ /\* quantitative with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; */ |
|
/* } */ |
|
/* /\* printf("prevalim Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=cptcovprod;k++){ /\* For product without age *\/ */ |
|
/* /\* printf("prevalim Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); *\/ */ |
|
/* if(Dummy[Tvard[k][1]]==0){ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; */ |
|
/* } */ |
|
/* }else{ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ |
|
/* } */ |
|
/* } */ |
|
/* } */ |
|
|
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/ |
/*printf("ij=%d cptcovprod=%d tvar=%d ", ij, cptcovprod, Tvar[1]);*/ |
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/ |
/*printf("ij=%d cov[3]=%lf cov[4]=%lf \n",ij, cov[3],cov[4]);*/ |
Line 2974 void powell(double p[], double **xi, int
|
Line 3180 void powell(double p[], double **xi, int
|
|
|
maxmax=0.; |
maxmax=0.; |
for(i=1; i<=nlstate; i++){ |
for(i=1; i<=nlstate; i++){ |
meandiff[i]=(max[i]-min[i])/(max[i]+min[i])*2.; /* mean difference for each column */ |
meandiff[i]=(max[i]-min[i])/(max[i]+min[i])*2.; /* mean difference for each column, could be nan! */ |
maxmax=FMAX(maxmax,meandiff[i]); |
maxmax=FMAX(maxmax,meandiff[i]); |
/* printf("Back age= %d meandiff[%d]=%f, agefin=%d max[%d]=%f min[%d]=%f maxmax=%f\n", (int)age, i, meandiff[i],(int)agefin, i, max[i], i, min[i],maxmax); */ |
/* printf("Back age= %d meandiff[%d]=%f, agefin=%d max[%d]=%f min[%d]=%f maxmax=%f\n", (int)age, i, meandiff[i],(int)agefin, i, max[i], i, min[i],maxmax); */ |
} /* i loop */ |
} /* i loop */ |
Line 3034 double **pmij(double **ps, double *cov,
|
Line 3240 double **pmij(double **ps, double *cov,
|
/* printf("Int j<i s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
/* printf("Int j<i s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
} |
} |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
/* printf("s1=%.17e, lnpijopii=%.17e\n",s1,lnpijopii); */ |
/* printf("Debug pmij() i=%d j=%d nc=%d s1=%.17f, lnpijopii=%.17f\n",i,j,nc, s1,lnpijopii); */ |
} |
} |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for(j=i+1; j<=nlstate+ndeath;j++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
for (nc=1, lnpijopii=0.;nc <=ncovmodel; nc++){ |
Line 3043 double **pmij(double **ps, double *cov,
|
Line 3249 double **pmij(double **ps, double *cov,
|
/* printf("Int j>i s1=%.17e, lnpijopii=%.17e %lx %lx\n",s1,lnpijopii,s1,lnpijopii); */ |
/* printf("Int j>i s1=%.17e, lnpijopii=%.17e %lx %lx\n",s1,lnpijopii,s1,lnpijopii); */ |
} |
} |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
ps[i][j]=lnpijopii; /* In fact ln(pij/pii) */ |
|
/* printf("Debug pmij() i=%d j=%d nc=%d s1=%.17f, lnpijopii=%.17f\n",i,j,nc, s1,lnpijopii); */ |
} |
} |
} |
} |
|
|
Line 3050 double **pmij(double **ps, double *cov,
|
Line 3257 double **pmij(double **ps, double *cov,
|
s1=0; |
s1=0; |
for(j=1; j<i; j++){ |
for(j=1; j<i; j++){ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
/*printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
/* printf("debug1 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
} |
} |
for(j=i+1; j<=nlstate+ndeath; j++){ |
for(j=i+1; j<=nlstate+ndeath; j++){ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
s1+=exp(ps[i][j]); /* In fact sums pij/pii */ |
/*printf("debug2 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
/* printf("debug2 %d %d ps=%lf exp(ps)=%lf s1+=%lf\n",i,j,ps[i][j],exp(ps[i][j]),s1); */ |
} |
} |
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
/* s1= sum_{j<>i} pij/pii=(1-pii)/pii and thus pii is known from s1 */ |
ps[i][i]=1./(s1+1.); |
ps[i][i]=1./(s1+1.); |
/* Computing other pijs */ |
/* Computing other pijs */ |
for(j=1; j<i; j++) |
for(j=1; j<i; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i];/* Bug valgrind */ |
for(j=i+1; j<=nlstate+ndeath; j++) |
for(j=i+1; j<=nlstate+ndeath; j++) |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
ps[i][j]= exp(ps[i][j])*ps[i][i]; |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
/* ps[i][nlstate+1]=1.-s1- ps[i][i];*/ /* Sum should be 1 */ |
Line 3108 double **pmij(double **ps, double *cov,
|
Line 3315 double **pmij(double **ps, double *cov,
|
doldm=ddoldms; /* global pointers */ |
doldm=ddoldms; /* global pointers */ |
dnewm=ddnewms; |
dnewm=ddnewms; |
dsavm=ddsavms; |
dsavm=ddsavms; |
|
|
|
/* Debug */ |
|
/* printf("Bmij ij=%d, cov[2}=%f\n", ij, cov[2]); */ |
agefin=cov[2]; |
agefin=cov[2]; |
/* Bx = Diag(w_x) P_x Diag(Sum_i w^i_x p^ij_x */ |
/* Bx = Diag(w_x) P_x Diag(Sum_i w^i_x p^ij_x */ |
/* bmij *//* age is cov[2], ij is included in cov, but we need for |
/* bmij *//* age is cov[2], ij is included in cov, but we need for |
Line 3116 double **pmij(double **ps, double *cov,
|
Line 3325 double **pmij(double **ps, double *cov,
|
/* dsavm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
/* dsavm=pmij(pmmij,cov,ncovmodel,x,nlstate); */ |
|
|
/* P_x */ |
/* P_x */ |
pmmij=pmij(pmmij,cov,ncovmodel,x,nlstate); /*This is forward probability from agefin to agefin + stepm */ |
pmmij=pmij(pmmij,cov,ncovmodel,x,nlstate); /*This is forward probability from agefin to agefin + stepm *//* Bug valgrind */ |
/* outputs pmmij which is a stochastic matrix in row */ |
/* outputs pmmij which is a stochastic matrix in row */ |
|
|
/* Diag(w_x) */ |
/* Diag(w_x) */ |
Line 3296 double **matprod2(double **out, double *
|
Line 3505 double **matprod2(double **out, double *
|
|
|
double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij, int nres ) |
double ***hpxij(double ***po, int nhstepm, double age, int hstepm, double *x, int nlstate, int stepm, double **oldm, double **savm, int ij, int nres ) |
{ |
{ |
/* Computes the transition matrix starting at age 'age' and combination of covariate values corresponding to ij over |
/* Computes the transition matrix starting at age 'age' and dummies values in each resultline (loop on ij to find the corresponding combination) to over |
'nhstepm*hstepm*stepm' months (i.e. until |
'nhstepm*hstepm*stepm' months (i.e. until |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
nhstepm*hstepm matrices. |
nhstepm*hstepm matrices. |
Line 3308 double ***hpxij(double ***po, int nhstep
|
Line 3517 double ***hpxij(double ***po, int nhstep
|
|
|
*/ |
*/ |
|
|
int i, j, d, h, k; |
int i, j, d, h, k, k1; |
double **out, cov[NCOVMAX+1]; |
double **out, cov[NCOVMAX+1]; |
double **newm; |
double **newm; |
double agexact; |
double agexact; |
Line 3328 double ***hpxij(double ***po, int nhstep
|
Line 3537 double ***hpxij(double ***po, int nhstep
|
cov[1]=1.; |
cov[1]=1.; |
agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /* age just before transition */ |
agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /* age just before transition */ |
cov[2]=agexact; |
cov[2]=agexact; |
if(nagesqr==1) |
if(nagesqr==1){ |
cov[3]= agexact*agexact; |
cov[3]= agexact*agexact; |
for (k=1; k<=nsd;k++) { /* For single dummy covariates only */ |
|
/* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates */ |
|
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
|
/* printf("hpxij Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,Tvar[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
|
} |
|
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
|
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
|
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
|
/* printf("hPxij Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovage;k++){ |
|
if(Dummy[Tvar[Tage[k]]]){ |
|
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
|
} else{ |
|
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
|
} |
|
/* printf("hPxij Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
|
} |
|
for (k=1; k<=cptcovprod;k++){ /* */ |
|
/* printf("hPxij Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2]); */ |
|
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; |
|
} |
} |
|
/* Model(2) V1 + V2 + V3 + V8 + V7*V8 + V5*V6 + V8*age + V3*age + age*age */ |
|
/* total number of covariates of the model nbocc(+)+1 = 8 excepting constant and age and age*age */ |
|
for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
|
if(Typevar[k1]==1){ /* A product with age */ |
|
cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
|
}else{ |
|
cov[2+nagesqr+k1]=precov[nres][k1]; |
|
} |
|
}/* End of loop on model equation */ |
|
/* Old code */ |
|
/* if( Dummy[k1]==0 && Typevar[k1]==0 ){ /\* Single dummy *\/ */ |
|
/* /\* V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) *\/ */ |
|
/* /\* for (k=1; k<=nsd;k++) { /\\* For single dummy covariates only *\\/ *\/ */ |
|
/* /\* /\\* Here comes the value of the covariate 'ij' after renumbering k with single dummy covariates *\\/ *\/ */ |
|
/* /\* codtabm(ij,k) (1 & (ij-1) >> (k-1))+1 *\/ */ |
|
/* /\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
|
/* /\* k 1 2 3 4 5 6 7 8 9 *\/ */ |
|
/* /\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\/ */ |
|
/* /\* nsd 1 2 3 *\/ /\* Counting single dummies covar fixed or tv *\/ */ |
|
/* /\*TvarsD[nsd] 4 3 1 *\/ /\* ID of single dummy cova fixed or timevary*\/ */ |
|
/* /\*TvarsDind[k] 2 3 9 *\/ /\* position K of single dummy cova *\/ */ |
|
/* /\* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)];or [codtabm(ij,TnsdVar[TvarsD[k]] *\/ */ |
|
/* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; */ |
|
/* /\* printf("hpxij Dummy combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov=%lf codtabm(%d,TnsdVar[TvarsD[%d])=%d \n",ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,TnsdVar[TvarsD[k]])],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,TnsdVar[TvarsD[k]])); *\/ */ |
|
/* printf("hpxij Dummy combi=%d k1=%d Tvar[%d]=V%d cov[2+%d+%d]=%lf resultmodel[nres][%d]=%d nres/nresult=%d/%d \n",ij,k1,k1, Tvar[k1],nagesqr,k1,cov[2+nagesqr+k1],k1,resultmodel[nres][k1],nres,nresult); */ |
|
/* printf("hpxij new Dummy precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
|
/* }else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /\* Single quantitative variables *\/ */ |
|
/* /\* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline *\/ */ |
|
/* cov[2+nagesqr+k1]=Tqresult[nres][resultmodel[nres][k1]]; */ |
|
/* /\* for (k=1; k<=nsq;k++) { /\\* For single varying covariates only *\\/ *\/ */ |
|
/* /\* /\\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; *\/ */ |
|
/* printf("hPxij Quantitative k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); */ |
|
/* printf("hpxij new Quanti precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
|
/* }else if( Dummy[k1]==2 ){ /\* For dummy with age product *\/ */ |
|
/* /\* Tvar[k1] Variable in the age product age*V1 is 1 *\/ */ |
|
/* /\* [Tinvresult[nres][V1] is its value in the resultline nres *\/ */ |
|
/* cov[2+nagesqr+k1]=TinvDoQresult[nres][Tvar[k1]]*cov[2]; */ |
|
/* printf("DhPxij Dummy with age k1=%d Tvar[%d]=%d TinvDoQresult[nres=%d][%d]=%.f age=%.2f,cov[2+%d+%d]=%.3f\n",k1,k1,Tvar[k1],nres,TinvDoQresult[nres][Tvar[k1]],cov[2],nagesqr,k1,cov[2+nagesqr+k1]); */ |
|
/* printf("hpxij new Dummy with age product precov[nres=%d][k1=%d]=%.4f * age=%.2f\n", nres, k1, precov[nres][k1], cov[2]); */ |
|
|
|
/* /\* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; *\/ */ |
|
/* /\* for (k=1; k<=cptcovage;k++){ /\\* For product with age V1+V1*age +V4 +age*V3 *\\/ *\/ */ |
|
/* /\* 1+2 Tage[1]=2 TVar[2]=1 Dummy[2]=2, Tage[2]=4 TVar[4]=3 Dummy[4]=3 quant*\/ */ |
|
/* /\* *\/ */ |
|
/* /\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\/ */ |
|
/* /\* k 1 2 3 4 5 6 7 8 9 *\/ */ |
|
/* /\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\/ */ |
|
/* /\*cptcovage=2 1 2 *\/ */ |
|
/* /\*Tage[k]= 5 8 *\/ */ |
|
/* }else if( Dummy[k1]==3 ){ /\* For quant with age product *\/ */ |
|
/* cov[2+nagesqr+k1]=Tresult[nres][resultmodel[nres][k1]]; */ |
|
/* printf("QhPxij Quant with age k1=%d resultmodel[nres][%d]=%d,Tqresult[%d][%d]=%f\n",k1,k1,resultmodel[nres][k1],nres,resultmodel[nres][k1],Tqresult[nres][resultmodel[nres][k1]]); */ |
|
/* printf("hpxij new Quanti with age product precov[nres=%d][k1=%d] * age=%.2f\n", nres, k1, precov[nres][k1], cov[2]); */ |
|
/* /\* if(Dummy[Tage[k]]== 2){ /\\* dummy with age *\\/ *\/ */ |
|
/* /\* /\\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\\* dummy with age *\\\/ *\\/ *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\\/ *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[TvarsD[Tvar[Tage[k]]]])]*cov[2]; *\/ */ |
|
/* /\* printf("hPxij Age combi=%d k=%d cptcovage=%d Tage[%d]=%d Tvar[Tage[%d]]=V%d nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]]])]=%d nres=%d\n",ij,k,cptcovage,k,Tage[k],k,Tvar[Tage[k]], nbcode[Tvar[Tage[k]]][codtabm(ij,TnsdVar[Tvar[Tage[k]]])],nres); *\/ */ |
|
/* /\* } else if(Dummy[Tage[k]]== 3){ /\\* quantitative with age *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; *\/ */ |
|
/* /\* } *\/ */ |
|
/* /\* printf("hPxij Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* }else if(Typevar[k1]==2 ){ /\* For product (not with age) *\/ */ |
|
/* /\* for (k=1; k<=cptcovprod;k++){ /\\* For product without age *\\/ *\/ */ |
|
/* /\* /\\* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 *\\/ *\/ */ |
|
/* /\* /\\* k 1 2 3 4 5 6 7 8 9 *\\/ *\/ */ |
|
/* /\* /\\*Tvar[k]= 5 4 3 6 5 2 7 1 1 *\\/ *\/ */ |
|
/* /\* /\\*cptcovprod=1 1 2 *\\/ *\/ */ |
|
/* /\* /\\*Tprod[]= 4 7 *\\/ *\/ */ |
|
/* /\* /\\*Tvard[][1] 4 1 *\\/ *\/ */ |
|
/* /\* /\\*Tvard[][2] 3 2 *\\/ *\/ */ |
|
|
|
/* /\* printf("hPxij Prod ij=%d k=%d Tprod[%d]=%d Tvard[%d][1]=V%d, Tvard[%d][2]=V%d nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]=%d nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]=%d\n",ij,k,k,Tprod[k], k,Tvard[k][1], k,Tvard[k][2],nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])],nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]); *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* cov[2+nagesqr+k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; */ |
|
/* printf("hPxij Prod ij=%d k1=%d cov[2+%d+%d]=%.5f Tvard[%d][1]=V%d * Tvard[%d][2]=V%d ; TinvDoQresult[nres][Tvardk[k1][1]]=%.4f * TinvDoQresult[nres][Tvardk[k1][1]]=%.4f\n",ij,k1,nagesqr,k1,cov[2+nagesqr+k1],k1,Tvardk[k1][1], k1,Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][1]], TinvDoQresult[nres][Tvardk[k1][2]]); */ |
|
/* printf("hpxij new Product no age product precov[nres=%d][k1=%d]=%.4f\n", nres, k1, precov[nres][k1]); */ |
|
|
|
/* /\* if(Dummy[Tvardk[k1][1]]==0){ *\/ */ |
|
/* /\* if(Dummy[Tvardk[k1][2]]==0){ /\\* Product of dummies *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* /\* cov[2+nagesqr+k1]=Tinvresult[nres][Tvardk[k1][1]] * Tinvresult[nres][Tvardk[k1][2]]; *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])]; *\/ */ |
|
/* /\* }else{ /\\* Product of dummy by quantitative *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,TnsdVar[Tvard[k][1]])] * Tqresult[nres][k]; *\/ */ |
|
/* /\* cov[2+nagesqr+k1]=Tresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]]; *\/ */ |
|
/* /\* } *\/ */ |
|
/* /\* }else{ /\\* Product of quantitative by...*\\/ *\/ */ |
|
/* /\* if(Dummy[Tvard[k][2]]==0){ /\\* quant by dummy *\\/ *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][Tvard[k][1]]; *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; *\/ */ |
|
/* /\* }else{ /\\* Product of two quant *\\/ *\/ */ |
|
/* /\* /\\* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\\/ *\/ */ |
|
/* /\* cov[2+nagesqr+k1]=Tqresult[nres][Tinvresult[nres][Tvardk[k1][1]]] * Tqresult[nres][Tinvresult[nres][Tvardk[k1][2]]] ; *\/ */ |
|
/* /\* } *\/ */ |
|
/* /\* }/\\*end of products quantitative *\\/ *\/ */ |
|
/* }/\*end of products *\/ */ |
|
/* } /\* End of loop on model equation *\/ */ |
/* for (k=1; k<=cptcovn;k++) */ |
/* for (k=1; k<=cptcovn;k++) */ |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
/* for (k=1; k<=cptcovage;k++) /\* Should start at cptcovn+1 *\/ */ |
/* for (k=1; k<=cptcovage;k++) /\* Should start at cptcovn+1 *\/ */ |
Line 3362 double ***hpxij(double ***po, int nhstep
|
Line 3650 double ***hpxij(double ***po, int nhstep
|
|
|
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ |
/*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ |
/* right multiplication of oldm by the current matrix */ |
/* right multiplication of oldm by the current matrix */ |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, |
pmij(pmmij,cov,ncovmodel,x,nlstate)); |
pmij(pmmij,cov,ncovmodel,x,nlstate)); |
/* if((int)age == 70){ */ |
/* if((int)age == 70){ */ |
Line 3397 double ***hpxij(double ***po, int nhstep
|
Line 3685 double ***hpxij(double ***po, int nhstep
|
/* double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, int ij ) */ |
/* double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, double **oldm, double **savm, double **dnewm, double **doldm, double **dsavm, int ij ) */ |
double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, int ij, int nres ) |
double ***hbxij(double ***po, int nhstepm, double age, int hstepm, double *x, double ***prevacurrent, int nlstate, int stepm, int ij, int nres ) |
{ |
{ |
/* For a combination of dummy covariate ij, computes the transition matrix starting at age 'age' over |
/* For dummy covariates given in each resultline (for historical, computes the corresponding combination ij), |
|
computes the transition matrix starting at age 'age' over |
'nhstepm*hstepm*stepm' months (i.e. until |
'nhstepm*hstepm*stepm' months (i.e. until |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
age (in years) age+nhstepm*hstepm*stepm/12) by multiplying |
nhstepm*hstepm matrices. |
nhstepm*hstepm matrices. |
Line 3409 double ***hbxij(double ***po, int nhstep
|
Line 3698 double ***hbxij(double ***po, int nhstep
|
The addresss of po (p3mat allocated to the dimension of nhstepm) should be stored for output |
The addresss of po (p3mat allocated to the dimension of nhstepm) should be stored for output |
*/ |
*/ |
|
|
int i, j, d, h, k; |
int i, j, d, h, k, k1; |
double **out, cov[NCOVMAX+1], **bmij(); |
double **out, cov[NCOVMAX+1], **bmij(); |
double **newm, ***newmm; |
double **newm, ***newmm; |
double agexact; |
double agexact; |
Line 3432 double ***hbxij(double ***po, int nhstep
|
Line 3721 double ***hbxij(double ***po, int nhstep
|
cov[1]=1.; |
cov[1]=1.; |
agexact=age-( (h-1)*hstepm + (d) )*stepm/YEARM; /* age just before transition, d or d-1? */ |
agexact=age-( (h-1)*hstepm + (d) )*stepm/YEARM; /* age just before transition, d or d-1? */ |
/* agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /\* age just before transition *\/ */ |
/* agexact=age+((h-1)*hstepm + (d-1))*stepm/YEARM; /\* age just before transition *\/ */ |
|
/* Debug */ |
|
/* printf("hBxij age=%lf, agexact=%lf\n", age, agexact); */ |
cov[2]=agexact; |
cov[2]=agexact; |
if(nagesqr==1) |
if(nagesqr==1){ |
cov[3]= agexact*agexact; |
cov[3]= agexact*agexact; |
for (k=1; k<=cptcovn;k++){ |
} |
/* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; */ |
/** New code */ |
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\/ */ |
for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,k)]; |
if(Typevar[k1]==1){ /* A product with age */ |
/* printf("hbxij Dummy agexact=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agexact,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); */ |
cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
} |
}else{ |
for (k=1; k<=nsq;k++) { /* For single varying covariates only */ |
cov[2+nagesqr+k1]=precov[nres][k1]; |
/* Here comes the value of quantitative after renumbering k with single quantitative covariates */ |
} |
cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; |
}/* End of loop on model equation */ |
/* printf("hPxij Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); */ |
/** End of new code */ |
} |
/** This was old code */ |
for (k=1; k<=cptcovage;k++){ /* Should start at cptcovn+1 */ |
/* for (k=1; k<=nsd;k++){ /\* For single dummy covariates only *\//\* cptcovn error *\/ */ |
if(Dummy[Tvar[Tage[k]]]){ |
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,k)]; *\/ */ |
cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
/* /\* /\\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(ij,Tvar[k])]; *\\/ *\/ */ |
} else{ |
/* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(ij,TvarsD[k])];/\* Bug valgrind *\/ */ |
cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; |
/* /\* printf("hbxij Dummy agexact=%.0f combi=%d k=%d TvarsD[%d]=V%d TvarsDind[%d]=%d nbcode=%d cov[%d]=%lf codtabm(%d,Tvar[%d])=%d \n",agexact,ij,k, k, TvarsD[k],k,TvarsDind[k],nbcode[TvarsD[k]][codtabm(ij,k)],2+nagesqr+TvarsDind[k],cov[2+nagesqr+TvarsDind[k]], ij, k, codtabm(ij,k)); *\/ */ |
} |
/* } */ |
/* printf("hBxij Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); */ |
/* for (k=1; k<=nsq;k++) { /\* For single varying covariates only *\/ */ |
} |
/* /\* Here comes the value of quantitative after renumbering k with single quantitative covariates *\/ */ |
for (k=1; k<=cptcovprod;k++){ /* Useless because included in cptcovn */ |
/* cov[2+nagesqr+TvarsQind[k]]=Tqresult[nres][k]; */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; |
/* /\* printf("hPxij Quantitative k=%d TvarsQind[%d]=%d, TvarsQ[%d]=V%d,Tqresult[%d][%d]=%f\n",k,k,TvarsQind[k],k,TvarsQ[k],nres,k,Tqresult[nres][k]); *\/ */ |
} |
/* } */ |
/*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*/ |
/* for (k=1; k<=cptcovage;k++){ /\* Should start at cptcovn+1 *\//\* For product with age *\/ */ |
/*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*/ |
/* /\* if(Dummy[Tvar[Tage[k]]]== 2){ /\\* dummy with age error!!!*\\/ *\/ */ |
|
/* if(Dummy[Tage[k]]== 2){ /\* dummy with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,Tvar[Tage[k]])]*cov[2]; */ |
|
/* } else if(Dummy[Tage[k]]== 3){ /\* quantitative with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=Tqresult[nres][k]; */ |
|
/* } */ |
|
/* /\* printf("hBxij Age combi=%d k=%d Tage[%d]=V%d Tqresult[%d][%d]=%f\n",ij,k,k,Tage[k],nres,k,Tqresult[nres][k]); *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=cptcovprod;k++){ /\* Useless because included in cptcovn *\/ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])]*nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])]; */ |
|
/* if(Dummy[Tvard[k][1]]==0){ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][1])]; */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,Tvard[k][1])] * Tqresult[nres][k]; */ |
|
/* } */ |
|
/* }else{ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(ij,Tvard[k][2])] * Tqinvresult[nres][Tvard[k][1]]; */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; */ |
|
/* } */ |
|
/* } */ |
|
/* } */ |
|
/* /\*printf("hxi cptcov=%d cptcode=%d\n",cptcov,cptcode);*\/ */ |
|
/* /\*printf("h=%d d=%d age=%f cov=%f\n",h,d,age,cov[2]);*\/ */ |
|
/** End of old code */ |
|
|
/* Careful transposed matrix */ |
/* Careful transposed matrix */ |
/* age is in cov[2], prevacurrent at beginning of transition. */ |
/* age is in cov[2], prevacurrent at beginning of transition. */ |
/* out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij),\ */ |
/* out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent, dnewm, doldm, dsavm,ij),\ */ |
/* 1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); */ |
/* 1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); */ |
out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij),\ |
out=matprod2(newm, bmij(pmmij,cov,ncovmodel,x,nlstate,prevacurrent,ij),\ |
1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm); |
1,nlstate+ndeath,1,nlstate+ndeath,1,nlstate+ndeath, oldm);/* Bug valgrind */ |
/* if((int)age == 70){ */ |
/* if((int)age == 70){ */ |
/* printf(" Backward hbxij age=%d agexact=%f d=%d nhstepm=%d hstepm=%d\n", (int) age, agexact, d, nhstepm, hstepm); */ |
/* printf(" Backward hbxij age=%d agexact=%f d=%d nhstepm=%d hstepm=%d\n", (int) age, agexact, d, nhstepm, hstepm); */ |
/* for(i=1; i<=nlstate+ndeath; i++) { */ |
/* for(i=1; i<=nlstate+ndeath; i++) { */ |
Line 3551 double func( double *x)
|
Line 3868 double func( double *x)
|
*/ |
*/ |
ioffset=2+nagesqr ; |
ioffset=2+nagesqr ; |
/* Fixed */ |
/* Fixed */ |
for (k=1; k<=ncovf;k++){ /* Simple and product fixed covariates without age* products */ |
for (k=1; k<=ncovf;k++){ /* For each fixed covariate dummu or quant or prod */ |
cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (k=6)*/ |
/* # V1=sex, V2=raedyrs Quant Fixed, State=livarnb4..livarnb11, V3=iadl4..iald11, V4=adlw4..adlw11, V5=r4bmi..r11bmi */ |
|
/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
|
/* TvarF[1]=Tvar[6]=2, TvarF[2]=Tvar[7]=7, TvarF[3]=Tvar[9]=1 ID of fixed covariates or product V2, V1*V2, V1 */ |
|
/* TvarFind; TvarFind[1]=6, TvarFind[2]=7, TvarFind[3]=9 *//* Inverse V2(6) is first fixed (single or prod) */ |
|
cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i];/* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, only V1 is fixed (TvarFind[1]=6)*/ |
|
/* V1*V2 (7) TvarFind[2]=7, TvarFind[3]=9 */ |
} |
} |
/* In model V2+V1*V4+age*V3+V3*V2 Tvar[1] is V2, Tvar[2=V1*V4] |
/* In model V2+V1*V4+age*V3+V3*V2 Tvar[1] is V2, Tvar[2=V1*V4] |
is 6, Tvar[3=age*V3] should not be computed because of age Tvar[4=V3*V2] |
is 5, Tvar[3=age*V3] should not be computed because of age Tvar[4=V3*V2]=6 |
has been calculated etc */ |
has been calculated etc */ |
/* For an individual i, wav[i] gives the number of effective waves */ |
/* For an individual i, wav[i] gives the number of effective waves */ |
/* We compute the contribution to Likelihood of each effective transition |
/* We compute the contribution to Likelihood of each effective transition |
Line 3567 double func( double *x)
|
Line 3889 double func( double *x)
|
meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] |
meaning that decodemodel should be used cotvar[mw[mi+1][i]][TTvar[iv]][i] |
*/ |
*/ |
for(mi=1; mi<= wav[i]-1; mi++){ |
for(mi=1; mi<= wav[i]-1; mi++){ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates (single and product but no age )*/ |
for(k=1; k <= ncovv ; k++){ /* Varying covariates in the model (single and product but no age )"V5+V4+V3+V4*V3+V5*age+V1*age+V1" +TvarVind 1,2,3,4(V4*V3) Tvar[1]@7{5, 4, 3, 6, 5, 1, 1 ; 6 because the created covar is after V5 and is 6, minus 1+1, 3,2,1,4 positions in cotvar*/ |
/* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; */ |
/* cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]][i]; but where is the crossproduct? */ |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
} |
} |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (ii=1;ii<=nlstate+ndeath;ii++) |
Line 3583 double func( double *x)
|
Line 3905 double func( double *x)
|
if(nagesqr==1) |
if(nagesqr==1) |
cov[3]= agexact*agexact; /* Should be changed here */ |
cov[3]= agexact*agexact; /* Should be changed here */ |
for (kk=1; kk<=cptcovage;kk++) { |
for (kk=1; kk<=cptcovage;kk++) { |
if(!FixedV[Tvar[Tage[kk]]]) |
if(!FixedV[Tvar[Tage[kk]]]) |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
cov[Tage[kk]+2+nagesqr]=covar[Tvar[Tage[kk]]][i]*agexact; /* Tage[kk] gives the data-covariate associated with age */ |
else |
else |
cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; |
cov[Tage[kk]+2+nagesqr]=cotvar[mw[mi][i]][Tvar[Tage[kk]]-ncovcol-nqv][i]*agexact; |
} |
} |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
out=matprod2(newm,oldm,1,nlstate+ndeath,1,nlstate+ndeath, |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
1,nlstate+ndeath,pmij(pmmij,cov,ncovmodel,x,nlstate)); |
Line 3694 double func( double *x)
|
Line 4016 double func( double *x)
|
} /* end of individual */ |
} /* end of individual */ |
} else if(mle==2){ |
} else if(mle==2){ |
for (i=1,ipmx=0, sw=0.; i<=imx; i++){ |
for (i=1,ipmx=0, sw=0.; i<=imx; i++){ |
for (k=1; k<=cptcovn;k++) cov[2+nagesqr+k]=covar[Tvar[k]][i]; |
ioffset=2+nagesqr ; |
|
for (k=1; k<=ncovf;k++) |
|
cov[ioffset+TvarFind[k]]=covar[Tvar[TvarFind[k]]][i]; |
for(mi=1; mi<= wav[i]-1; mi++){ |
for(mi=1; mi<= wav[i]-1; mi++){ |
|
for(k=1; k <= ncovv ; k++){ |
|
cov[ioffset+TvarVind[k]]=cotvar[mw[mi][i]][Tvar[TvarVind[k]]-ncovcol-nqv][i]; |
|
} |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
Line 4052 void likelione(FILE *ficres,double p[],
|
Line 4379 void likelione(FILE *ficres,double p[],
|
|
|
void mlikeli(FILE *ficres,double p[], int npar, int ncovmodel, int nlstate, double ftol, double (*func)(double [])) |
void mlikeli(FILE *ficres,double p[], int npar, int ncovmodel, int nlstate, double ftol, double (*func)(double [])) |
{ |
{ |
int i,j, iter=0; |
int i,j,k, jk, jkk=0, iter=0; |
double **xi; |
double **xi; |
double fret; |
double fret; |
double fretone; /* Only one call to likelihood */ |
double fretone; /* Only one call to likelihood */ |
Line 4086 void mlikeli(FILE *ficres,double p[], in
|
Line 4413 void mlikeli(FILE *ficres,double p[], in
|
if(j!=i)fprintf(ficrespow," p%1d%1d",i,j); |
if(j!=i)fprintf(ficrespow," p%1d%1d",i,j); |
fprintf(ficrespow,"\n"); |
fprintf(ficrespow,"\n"); |
#ifdef POWELL |
#ifdef POWELL |
|
#ifdef LINMINORIGINAL |
|
#else /* LINMINORIGINAL */ |
|
|
|
flatdir=ivector(1,npar); |
|
for (j=1;j<=npar;j++) flatdir[j]=0; |
|
#endif /*LINMINORIGINAL */ |
|
|
|
#ifdef FLATSUP |
|
powell(p,xi,npar,ftol,&iter,&fret,flatdir,func); |
|
/* reorganizing p by suppressing flat directions */ |
|
for(i=1, jk=1; i <=nlstate; i++){ |
|
for(k=1; k <=(nlstate+ndeath); k++){ |
|
if (k != i) { |
|
printf("%d%d flatdir[%d]=%d",i,k,jk, flatdir[jk]); |
|
if(flatdir[jk]==1){ |
|
printf(" To be skipped %d%d flatdir[%d]=%d ",i,k,jk, flatdir[jk]); |
|
} |
|
for(j=1; j <=ncovmodel; j++){ |
|
printf("%12.7f ",p[jk]); |
|
jk++; |
|
} |
|
printf("\n"); |
|
} |
|
} |
|
} |
|
/* skipping */ |
|
/* for(i=1, jk=1, jkk=1;(flatdir[jk]==0)&& (i <=nlstate); i++){ */ |
|
for(i=1, jk=1, jkk=1;i <=nlstate; i++){ |
|
for(k=1; k <=(nlstate+ndeath); k++){ |
|
if (k != i) { |
|
printf("%d%d flatdir[%d]=%d",i,k,jk, flatdir[jk]); |
|
if(flatdir[jk]==1){ |
|
printf(" To be skipped %d%d flatdir[%d]=%d jk=%d p[%d] ",i,k,jk, flatdir[jk],jk, jk); |
|
for(j=1; j <=ncovmodel; jk++,j++){ |
|
printf(" p[%d]=%12.7f",jk, p[jk]); |
|
/*q[jjk]=p[jk];*/ |
|
} |
|
}else{ |
|
printf(" To be kept %d%d flatdir[%d]=%d jk=%d q[%d]=p[%d] ",i,k,jk, flatdir[jk],jk, jkk, jk); |
|
for(j=1; j <=ncovmodel; jk++,jkk++,j++){ |
|
printf(" p[%d]=%12.7f=q[%d]",jk, p[jk],jkk); |
|
/*q[jjk]=p[jk];*/ |
|
} |
|
} |
|
printf("\n"); |
|
} |
|
fflush(stdout); |
|
} |
|
} |
|
powell(p,xi,npar,ftol,&iter,&fret,flatdir,func); |
|
#else /* FLATSUP */ |
powell(p,xi,npar,ftol,&iter,&fret,func); |
powell(p,xi,npar,ftol,&iter,&fret,func); |
#endif |
#endif /* FLATSUP */ |
|
|
|
#ifdef LINMINORIGINAL |
|
#else |
|
free_ivector(flatdir,1,npar); |
|
#endif /* LINMINORIGINAL*/ |
|
#endif /* POWELL */ |
|
|
#ifdef NLOPT |
#ifdef NLOPT |
#ifdef NEWUOA |
#ifdef NEWUOA |
Line 4115 void mlikeli(FILE *ficres,double p[], in
|
Line 4499 void mlikeli(FILE *ficres,double p[], in
|
} |
} |
nlopt_destroy(opt); |
nlopt_destroy(opt); |
#endif |
#endif |
|
#ifdef FLATSUP |
|
/* npared = npar -flatd/ncovmodel; */ |
|
/* xired= matrix(1,npared,1,npared); */ |
|
/* paramred= ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel); */ |
|
/* powell(pred,xired,npared,ftol,&iter,&fret,flatdir,func); */ |
|
/* free_matrix(xire,1,npared,1,npared); */ |
|
#else /* FLATSUP */ |
|
#endif /* FLATSUP */ |
free_matrix(xi,1,npar,1,npar); |
free_matrix(xi,1,npar,1,npar); |
fclose(ficrespow); |
fclose(ficrespow); |
printf("\n#Number of iterations & function calls = %d & %d, -2 Log likelihood = %.12f\n",iter, countcallfunc,func(p)); |
printf("\n#Number of iterations & function calls = %d & %d, -2 Log likelihood = %.12f\n",iter, countcallfunc,func(p)); |
Line 4520 void freqsummary(char fileres[], double
|
Line 4912 void freqsummary(char fileres[], double
|
int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ |
int *Tvaraff, int *invalidvarcomb, int **nbcode, int *ncodemax,double **mint,double **anint, char strstart[], \ |
int firstpass, int lastpass, int stepm, int weightopt, char model[]) |
int firstpass, int lastpass, int stepm, int weightopt, char model[]) |
{ /* Some frequencies as well as proposing some starting values */ |
{ /* Some frequencies as well as proposing some starting values */ |
|
/* Frequencies of any combination of dummy covariate used in the model equation */ |
int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0, s1=1, s2=1; |
int i, m, jk, j1, bool, z1,j, nj, nl, k, iv, jj=0, s1=1, s2=1; |
int iind=0, iage=0; |
int iind=0, iage=0; |
int mi; /* Effective wave */ |
int mi; /* Effective wave */ |
Line 4566 void freqsummary(char fileres[], double
|
Line 4958 void freqsummary(char fileres[], double
|
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
fileresphtm,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
fileresphtm,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
} |
} |
fprintf(ficresphtm,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies and prevalence by age at begin of transition and dummy covariate value at beginning of transition</h4>\n",fileresphtm, fileresphtm); |
fprintf(ficresphtm,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies (weight=%d) and prevalence by age at begin of transition and dummy covariate value at beginning of transition</h4>\n",fileresphtm, fileresphtm, weightopt); |
|
|
strcpy(fileresphtmfr,subdirfext(optionfilefiname,"PHTMFR_",".htm")); |
strcpy(fileresphtmfr,subdirfext(optionfilefiname,"PHTMFR_",".htm")); |
if((ficresphtmfr=fopen(fileresphtmfr,"w"))==NULL) { |
if((ficresphtmfr=fopen(fileresphtmfr,"w"))==NULL) { |
Line 4576 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4968 Title=%s <br>Datafile=%s Firstpass=%d La
|
exit(70); |
exit(70); |
} else{ |
} else{ |
fprintf(ficresphtmfr,"<html><head>\n<title>IMaCh PHTM_Frequency table %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
fprintf(ficresphtmfr,"<html><head>\n<title>IMaCh PHTM_Frequency table %s</title></head>\n <body><font size=\"2\">%s <br> %s</font> \ |
<hr size=\"2\" color=\"#EC5E5E\"> \n \ |
,<hr size=\"2\" color=\"#EC5E5E\"> \n \ |
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=1+age+%s<br>\n",\ |
fileresphtmfr,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
fileresphtmfr,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
} |
} |
fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>Frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr); |
fprintf(ficresphtmfr,"Current page is file <a href=\"%s\">%s</a><br>\n\n<h4>(weight=%d) frequencies of all effective transitions of the model, by age at begin of transition, and covariate value at the begin of transition (if the covariate is a varying covariate) </h4>Unknown status is -1<br/>\n",fileresphtmfr, fileresphtmfr,weightopt); |
|
|
y= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
y= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
x= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
x= vector(iagemin-AGEMARGE,iagemax+4+AGEMARGE); |
Line 4588 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4980 Title=%s <br>Datafile=%s Firstpass=%d La
|
j1=0; |
j1=0; |
|
|
/* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
/* j=ncoveff; /\* Only fixed dummy covariates *\/ */ |
j=cptcoveff; /* Only dummy covariates of the model */ |
j=cptcoveff; /* Only dummy covariates used in the model */ |
|
/* j=cptcovn; /\* Only dummy covariates of the model *\/ */ |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
if (cptcovn<1) {j=1;ncodemax[1]=1;} |
|
|
|
|
Line 4596 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 4989 Title=%s <br>Datafile=%s Firstpass=%d La
|
reference=low_education V1=0,V2=0 |
reference=low_education V1=0,V2=0 |
med_educ V1=1 V2=0, |
med_educ V1=1 V2=0, |
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**cptcovn |
*/ |
*/ |
dateintsum=0; |
dateintsum=0; |
k2cpt=0; |
k2cpt=0; |
Line 4608 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5001 Title=%s <br>Datafile=%s Firstpass=%d La
|
|
|
/* if a constant only model, one pass to compute frequency tables and to write it on ficresp */ |
/* if a constant only model, one pass to compute frequency tables and to write it on ficresp */ |
/* Loop on nj=1 or 2 if dummy covariates j!=0 |
/* Loop on nj=1 or 2 if dummy covariates j!=0 |
* Loop on j1(1 to 2**cptcoveff) covariate combination |
* Loop on j1(1 to 2**cptcovn) covariate combination |
* freq[s1][s2][iage] =0. |
* freq[s1][s2][iage] =0. |
* Loop on iind |
* Loop on iind |
* ++freq[s1][s2][iage] weighted |
* ++freq[s1][s2][iage] weighted |
Line 4633 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5026 Title=%s <br>Datafile=%s Firstpass=%d La
|
if(nj==1) |
if(nj==1) |
j=0; /* First pass for the constant */ |
j=0; /* First pass for the constant */ |
else{ |
else{ |
j=cptcoveff; /* Other passes for the covariate values */ |
j=cptcovs; /* Other passes for the covariate values */ |
} |
} |
first=1; |
first=1; |
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on all covariates combination of the model, excluding quantitatives, V4=0, V3=0 for example, fixed or varying covariates */ |
for (j1 = 1; j1 <= (int) pow(2,j); j1++){ /* Loop on all dummy covariates combination of the model, ie 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("cptcovn=%d Tvaraff=%d", cptcovn,Tvaraff[1]); |
scanf("%d", i);*/ |
scanf("%d", i);*/ |
for (i=-5; i<=nlstate+ndeath; i++) |
for (i=-5; i<=nlstate+ndeath; i++) |
for (s2=-5; s2<=nlstate+ndeath; s2++) |
for (s2=-5; s2<=nlstate+ndeath; s2++) |
Line 4669 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5062 Title=%s <br>Datafile=%s Firstpass=%d La
|
bool=1; |
bool=1; |
if(j !=0){ |
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 (cptcovn >0) { /* Filter is here: Must be looked at for model=V1+V2+V3+V4 */ |
for (z1=1; z1<=cptcoveff; z1++) { /* loops on covariates in the model */ |
for (z1=1; z1<=cptcovn; z1++) { /* loops on covariates in the model */ |
/* if(Tvaraff[z1] ==-20){ */ |
/* if(Tvaraff[z1] ==-20){ */ |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
/* /\* sumnew+=cotvar[mw[mi][iind]][z1][iind]; *\/ */ |
/* }else if(Tvaraff[z1] ==-10){ */ |
/* }else if(Tvaraff[z1] ==-10){ */ |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
/* /\* sumnew+=coqvar[z1][iind]; *\/ */ |
/* }else */ |
/* }else */ /* TODO TODO codtabm(j1,z1) or codtabm(j1,Tvaraff[z1]]z1)*/ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]){ /* for combination j1 of covariates */ |
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]){ /* for combination j1 of covariates */ |
/* Tests if the value of the covariate z1 for this individual iind responded to combination j1 (V4=1 V3=0) */ |
/* Tests if the value of the covariate z1 for this individual iind responded to combination j1 (V4=1 V3=0) */ |
bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ |
bool=0; /* bool should be equal to 1 to be selected, one covariate value failed */ |
/* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", |
/* printf("bool=%d i=%d, z1=%d, Tvaraff[%d]=%d, covar[Tvarff][%d]=%2f, codtabm(%d,%d)=%d, nbcode[Tvaraff][codtabm(%d,%d)=%d, j1=%d\n", */ |
bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1), |
/* bool,i,z1, z1, Tvaraff[z1],i,covar[Tvaraff[z1]][i],j1,z1,codtabm(j1,z1),*/ |
j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ |
/* j1,z1,nbcode[Tvaraff[z1]][codtabm(j1,z1)],j1);*/ |
/* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
/* For j1=7 in V1+V2+V3+V4 = 0 1 1 0 and codtabm(7,3)=1 and nbcde[3][?]=1*/ |
} /* Onlyf fixed */ |
} /* Onlyf fixed */ |
} /* end z1 */ |
} /* end z1 */ |
Line 4694 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5087 Title=%s <br>Datafile=%s Firstpass=%d La
|
m=mw[mi][iind]; |
m=mw[mi][iind]; |
if(j!=0){ |
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<=cptcovn; 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 covariate's |
if (cotvar[m][iv][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) /* iv=1 to ntv, right modality. If covariate's |
value is -1, we don't select. It differs from the |
value is -1, we don't select. It differs from the |
constant and age model which counts them. */ |
constant and age model which counts them. */ |
bool=0; /* not selected */ |
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)]) { |
/* i1=Tvaraff[z1]; */ |
|
/* i2=TnsdVar[i1]; */ |
|
/* i3=nbcode[i1][i2]; */ |
|
/* i4=covar[i1][iind]; */ |
|
/* if(i4 != i3){ */ |
|
if (covar[Tvaraff[z1]][iind]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { /* Bug valgrind */ |
bool=0; |
bool=0; |
} |
} |
} |
} |
Line 4730 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5128 Title=%s <br>Datafile=%s Firstpass=%d La
|
freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
freq[s[m][iind]][s[m+1][iind]][(int)agev[m][iind]] += weight[iind]; /* At age of beginning of transition, where status is known */ |
for (z1=1; z1<= nqfveff; z1++) { /* Quantitative variables, calculating mean on known values only */ |
for (z1=1; z1<= nqfveff; z1++) { /* Quantitative variables, calculating mean on known values only */ |
if(!isnan(covar[ncovcol+z1][iind])){ |
if(!isnan(covar[ncovcol+z1][iind])){ |
idq[z1]=idq[z1]+weight[iind]; |
idq[z1]=idq[z1]+weight[iind]; |
meanq[z1]+=covar[ncovcol+z1][iind]*weight[iind]; /* Computes mean of quantitative with selected filter */ |
meanq[z1]+=covar[ncovcol+z1][iind]*weight[iind]; /* Computes mean of quantitative with selected filter */ |
/* stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]*weight[iind]; *//*error*/ |
/* stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]*weight[iind]; *//*error*/ |
stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]; /* *weight[iind];*/ /* Computes mean of quantitative with selected filter */ |
stdq[z1]+=covar[ncovcol+z1][iind]*covar[ncovcol+z1][iind]*weight[iind]; /* *weight[iind];*/ /* Computes mean of quantitative with selected filter */ |
} |
} |
} |
} |
/* if((int)agev[m][iind] == 55) */ |
/* if((int)agev[m][iind] == 55) */ |
Line 4758 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5156 Title=%s <br>Datafile=%s Firstpass=%d La
|
/* } */ |
/* } */ |
} /* end bool */ |
} /* end bool */ |
} /* end iind = 1 to imx */ |
} /* end iind = 1 to imx */ |
/* prop[s][age] is feeded for any initial and valid live state as well as |
/* prop[s][age] is fed for any initial and valid live state as well as |
freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ |
freq[s1][s2][age] at single age of beginning the transition, for a combination j1 */ |
|
|
|
|
/* 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);*/ |
if(cptcoveff==0 && nj==1) /* no covariate and first pass */ |
if(cptcovn==0 && nj==1) /* no covariate and first pass */ |
pstamp(ficresp); |
pstamp(ficresp); |
if (cptcoveff>0 && j!=0){ |
if (cptcovn>0 && j!=0){ |
pstamp(ficresp); |
pstamp(ficresp); |
printf( "\n#********** Variable "); |
printf( "\n#********** Variable "); |
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 "); |
fprintf(ficlog, "\n#********** Variable "); |
fprintf(ficlog, "\n#********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++){ |
for (z1=1; z1<=cptcovs; z1++){ |
if(!FixedV[Tvaraff[z1]]){ |
if(!FixedV[Tvaraff[z1]]){ |
printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
printf( "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresp, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtm, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtmfr, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficlog, "V%d(fixed)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
}else{ |
}else{ |
printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
printf( "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresp, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtm, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficresphtmfr, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficlog, "V%d(varying)=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
} |
} |
} |
} |
printf( "**********\n#"); |
printf( "**********\n#"); |
Line 4818 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5216 Title=%s <br>Datafile=%s Firstpass=%d La
|
/* } */ |
/* } */ |
|
|
fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
fprintf(ficresphtm,"<table style=\"text-align:center; border: 1px solid\">"); |
if((cptcoveff==0 && nj==1)|| nj==2 ) /* no covariate and first pass */ |
if((cptcovn==0 && nj==1)|| nj==2 ) /* no covariate and first pass */ |
fprintf(ficresp, " Age"); |
fprintf(ficresp, " Age"); |
if(nj==2) for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, " V%d=%d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
if(nj==2) for (z1=1; z1<=cptcovn; z1++) fprintf(ficresp, " V%d=%d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
for(i=1; i<=nlstate;i++) { |
for(i=1; i<=nlstate;i++) { |
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp," Prev(%d) N(%d) N ",i,i); |
if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp," Prev(%d) N(%d) N ",i,i); |
fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
fprintf(ficresphtm, "<th>Age</th><th>Prev(%d)</th><th>N(%d)</th><th>N</th>",i,i); |
} |
} |
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp, "\n"); |
if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp, "\n"); |
fprintf(ficresphtm, "\n"); |
fprintf(ficresphtm, "\n"); |
|
|
/* Header of frequency table by age */ |
/* Header of frequency table by age */ |
Line 4893 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5291 Title=%s <br>Datafile=%s Firstpass=%d La
|
} |
} |
|
|
/* Writing ficresp */ |
/* Writing ficresp */ |
if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
if(cptcovn==0 && nj==1){ /* no covariate and first pass */ |
if( iage <= iagemax){ |
if( iage <= iagemax){ |
fprintf(ficresp," %d",iage); |
fprintf(ficresp," %d",iage); |
} |
} |
}else if( nj==2){ |
}else if( nj==2){ |
if( iage <= iagemax){ |
if( iage <= iagemax){ |
fprintf(ficresp," %d",iage); |
fprintf(ficresp," %d",iage); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresp, " %d %d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
for (z1=1; z1<=cptcovn; z1++) fprintf(ficresp, " %d %d",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); |
} |
} |
} |
} |
for(s1=1; s1 <=nlstate ; s1++){ |
for(s1=1; s1 <=nlstate ; s1++){ |
Line 4915 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5313 Title=%s <br>Datafile=%s Firstpass=%d La
|
} |
} |
if( iage <= iagemax){ |
if( iage <= iagemax){ |
if(pos>=1.e-5){ |
if(pos>=1.e-5){ |
if(cptcoveff==0 && nj==1){ /* no covariate and first pass */ |
if(cptcovn==0 && nj==1){ /* no covariate and first pass */ |
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
}else if( nj==2){ |
}else if( nj==2){ |
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
fprintf(ficresp," %.5f %.0f %.0f",prop[s1][iage]/pospropta, prop[s1][iage],pospropta); |
Line 4924 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5322 Title=%s <br>Datafile=%s Firstpass=%d La
|
/*probs[iage][s1][j1]= pp[s1]/pos;*/ |
/*probs[iage][s1][j1]= pp[s1]/pos;*/ |
/*printf("\niage=%d s1=%d j1=%d %.5f %.0f %.0f %f",iage,s1,j1,pp[s1]/pos, pp[s1],pos,probs[iage][s1][j1]);*/ |
/*printf("\niage=%d s1=%d j1=%d %.5f %.0f %.0f %f",iage,s1,j1,pp[s1]/pos, pp[s1],pos,probs[iage][s1][j1]);*/ |
} else{ |
} else{ |
if((cptcoveff==0 && nj==1)|| nj==2 ) fprintf(ficresp," NaNq %.0f %.0f",prop[s1][iage],pospropta); |
if((cptcovn==0 && nj==1)|| nj==2 ) fprintf(ficresp," NaNq %.0f %.0f",prop[s1][iage],pospropta); |
fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[s1][iage],pospropta); |
fprintf(ficresphtm,"<th>%d</th><td>NaNq</td><td>%.0f</td><td>%.0f</td>",iage, prop[s1][iage],pospropta); |
} |
} |
} |
} |
Line 4950 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 5348 Title=%s <br>Datafile=%s Firstpass=%d La
|
} |
} |
fprintf(ficresphtmfr,"</tr>\n "); |
fprintf(ficresphtmfr,"</tr>\n "); |
fprintf(ficresphtm,"</tr>\n"); |
fprintf(ficresphtm,"</tr>\n"); |
if((cptcoveff==0 && nj==1)|| nj==2 ) { |
if((cptcovn==0 && nj==1)|| nj==2 ) { |
if(iage <= iagemax) |
if(iage <= iagemax) |
fprintf(ficresp,"\n"); |
fprintf(ficresp,"\n"); |
} |
} |
Line 5226 void prevalence(double ***probs, double
|
Line 5624 void prevalence(double ***probs, double
|
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][i]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) /* iv=1 to ntv, right modality */ |
if (cotvar[m][iv][i]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) /* iv=1 to ntv, right modality */ |
bool=0; |
bool=0; |
}else if( Fixed[Tmodelind[z1]]== 0) /* fixed */ |
}else if( Fixed[Tmodelind[z1]]== 0) /* fixed */ |
if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtabm(j1,z1)]) { |
if (covar[Tvaraff[z1]][i]!= nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]) { |
bool=0; |
bool=0; |
} |
} |
} |
} |
Line 5327 void concatwav(int wav[], int **dh, int
|
Line 5725 void concatwav(int wav[], int **dh, int
|
#ifdef UNKNOWNSTATUSNOTCONTRIBUTING |
#ifdef UNKNOWNSTATUSNOTCONTRIBUTING |
break; |
break; |
#else |
#else |
if(s[m][i]==-1 && (int) andc[i] == 9999 && (int)anint[m][i] != 9999){ /* case -2 (vital status unknown is warned later */ |
if(s[m][i]==-1 && (int) andc[i] == 9999 && (int)anint[m][i] != 9999){ /* no death date and known date of interview, case -2 (vital status unknown is warned later */ |
if(firsthree == 0){ |
if(firsthree == 0){ |
printf("Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p_{%d%d} .\nOthers in log file only\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
printf("Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p_{%d%d} .\nOthers in log file only\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
firsthree=1; |
firsthree=1; |
|
}else if(firsthree >=1 && firsthree < 10){ |
|
fprintf(ficlog,"Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p_{%d%d} .\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
|
firsthree++; |
|
}else if(firsthree == 10){ |
|
printf("Information, too many Information flags: no more reported to log either\n"); |
|
fprintf(ficlog,"Information, too many Information flags: no more reported to log either\n"); |
|
firsthree++; |
|
}else{ |
|
firsthree++; |
} |
} |
fprintf(ficlog,"Information! Unknown status for individual %ld line=%d occurred at last wave %d at known date %d/%d. Please, check if your unknown date of death %d/%d means a live state %d at wave %d. This case(%d)/wave(%d) contributes to the likelihood as 1-p_{%d%d} .\n",num[i],i,lastpass,(int)mint[m][i],(int)anint[m][i], (int) moisdc[i], (int) andc[i], s[m][i], m, i, m, s[m][i], nlstate+ndeath); |
|
mw[++mi][i]=m; /* Valid transition with unknown status */ |
mw[++mi][i]=m; /* Valid transition with unknown status */ |
mli=m; |
mli=m; |
} |
} |
Line 5405 void concatwav(int wav[], int **dh, int
|
Line 5811 void concatwav(int wav[], int **dh, int
|
} /* End individuals */ |
} /* End individuals */ |
/* wav and mw are no more changed */ |
/* wav and mw are no more changed */ |
|
|
|
printf("Information, you have to check %d informations which haven't been logged!\n",firsthree); |
|
fprintf(ficlog,"Information, you have to check %d informations which haven't been logged!\n",firsthree); |
|
|
|
|
for(i=1; i<=imx; i++){ |
for(i=1; i<=imx; i++){ |
for(mi=1; mi<wav[i];mi++){ |
for(mi=1; mi<wav[i];mi++){ |
if (stepm <=0) |
if (stepm <=0) |
Line 5619 void concatwav(int wav[], int **dh, int
|
Line 6028 void concatwav(int wav[], int **dh, int
|
break; |
break; |
} /* end switch */ |
} /* end switch */ |
} /* end dummy test */ |
} /* end dummy test */ |
if(Dummy[k]==1 && Typevar[k] !=1){ /* Dummy covariate and not age product */ |
if(Dummy[k]==1 && Typevar[k] !=1){ /* Quantitative covariate and not age product */ |
for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ |
for (i=1; i<=imx; i++) { /* Loop on individuals: reads the data file to get the maximum value of the modality of this covariate Vj*/ |
if(isnan(covar[Tvar[k]][i])){ |
if(isnan(covar[Tvar[k]][i])){ |
printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); |
printf("ERROR, IMaCh doesn't treat fixed quantitative covariate with missing values V%d=., individual %d will be skipped.\n",Tvar[k],i); |
Line 5664 void concatwav(int wav[], int **dh, int
|
Line 6073 void concatwav(int wav[], int **dh, int
|
} /* Tvaraff[1]@5 {3, 4, -20, 0, 0} Very strange */ |
} /* Tvaraff[1]@5 {3, 4, -20, 0, 0} Very strange */ |
/* ij--; */ |
/* ij--; */ |
/* cptcoveff=ij; /\*Number of total covariates*\/ */ |
/* cptcoveff=ij; /\*Number of total covariates*\/ */ |
*cptcov=ij; /*Number of total real effective covariates: effective |
*cptcov=ij; /* cptcov= Number of total real effective covariates: effective (used as cptcoveff in other functions) |
* because they can be excluded from the model and real |
* because they can be excluded from the model and real |
* if in the model but excluded because missing values, but how to get k from ij?*/ |
* if in the model but excluded because missing values, but how to get k from ij?*/ |
for(j=ij+1; j<= cptcovt; j++){ |
for(j=ij+1; j<= cptcovt; j++){ |
Line 5685 void concatwav(int wav[], int **dh, int
|
Line 6094 void concatwav(int wav[], int **dh, int
|
|
|
{ |
{ |
/* Health expectancies, no variances */ |
/* Health expectancies, no variances */ |
|
/* cij is the combination in the list of combination of dummy covariates */ |
|
/* strstart is a string of time at start of computing */ |
int i, j, nhstepm, hstepm, h, nstepm; |
int i, j, nhstepm, hstepm, h, nstepm; |
int nhstepma, nstepma; /* Decreasing with age */ |
int nhstepma, nstepma; /* Decreasing with age */ |
double age, agelim, hf; |
double age, agelim, hf; |
Line 5753 void concatwav(int wav[], int **dh, int
|
Line 6164 void concatwav(int wav[], int **dh, int
|
/* If stepm=6 months */ |
/* If stepm=6 months */ |
/* Computed by stepm unit matrices, product of hstepma matrices, stored |
/* Computed by stepm unit matrices, product of hstepma matrices, stored |
in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ |
in an array of nhstepma length: nhstepma=10, hstepm=4, stepm=6 months */ |
|
/* printf("HELLO evsij Entering hpxij age=%d cij=%d hstepm=%d x[1]=%f nres=%d\n",(int) age, cij, hstepm, x[1], nres); */ |
hpxij(p3mat,nhstepma,age,hstepm,x,nlstate,stepm,oldm, savm, cij, nres); |
hpxij(p3mat,nhstepma,age,hstepm,x,nlstate,stepm,oldm, savm, cij, nres); |
|
|
hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
hf=hstepm*stepm/YEARM; /* Duration of hstepm expressed in year unit. */ |
Line 5942 void concatwav(int wav[], int **dh, int
|
Line 6353 void concatwav(int wav[], int **dh, int
|
varhe[ij][ji][(int)age] += doldm[ij][ji]*hf*hf; |
varhe[ij][ji][(int)age] += doldm[ij][ji]*hf*hf; |
} |
} |
} |
} |
|
/* if((int)age ==50){ */ |
|
/* printf(" age=%d cij=%d nres=%d varhe[%d][%d]=%f ",(int)age, cij, nres, 1,2,varhe[1][2]); */ |
|
/* } */ |
/* Computing expectancies */ |
/* Computing expectancies */ |
hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij,nres); |
hpxij(p3matm,nhstepm,age,hstepm,x,nlstate,stepm,oldm, savm, cij,nres); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
Line 6061 void concatwav(int wav[], int **dh, int
|
Line 6474 void concatwav(int wav[], int **dh, int
|
pstamp(ficresprobmorprev); |
pstamp(ficresprobmorprev); |
fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); |
fprintf(ficresprobmorprev,"# probabilities of dying before estepm=%d months for people of exact age and weighted probabilities w1*p1j+w2*p2j+... stand dev in()\n",estepm); |
fprintf(ficresprobmorprev,"# Selected quantitative variables and dummies"); |
fprintf(ficresprobmorprev,"# Selected quantitative variables and dummies"); |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ /* To be done*/ |
fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresprobmorprev," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
} |
} |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresprobmorprev,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,j)]); |
fprintf(ficresprobmorprev," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(ij,TnsdVar[Tvaraff[j]])]); |
fprintf(ficresprobmorprev,"\n"); |
fprintf(ficresprobmorprev,"\n"); |
|
|
fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
fprintf(ficresprobmorprev,"# Age cov=%-d",ij); |
Line 6605 void varprob(char optionfilefiname[], do
|
Line 7018 void varprob(char optionfilefiname[], do
|
int k2, l2, j1, z1; |
int k2, l2, j1, z1; |
int k=0, l; |
int k=0, l; |
int first=1, first1, first2; |
int first=1, first1, first2; |
|
int nres=0; /* New */ |
double cv12, mu1, mu2, lc1, lc2, v12, v21, v11, v22,v1,v2, c12, tnalp; |
double cv12, mu1, mu2, lc1, lc2, v12, v21, v11, v22,v1,v2, c12, tnalp; |
double **dnewm,**doldm; |
double **dnewm,**doldm; |
double *xp; |
double *xp; |
Line 6692 To be simple, these graphs help to under
|
Line 7106 To be simple, these graphs help to under
|
tj = (int) pow(2,cptcoveff); |
tj = (int) pow(2,cptcoveff); |
if (cptcovn<1) {tj=1;ncodemax[1]=1;} |
if (cptcovn<1) {tj=1;ncodemax[1]=1;} |
j1=0; |
j1=0; |
for(j1=1; j1<=tj;j1++){ /* For each valid combination of covariates or only once*/ |
|
|
for(nres=1;nres <=nresult; nres++){ /* For each resultline */ |
|
for(j1=1; j1<=tj;j1++){ /* For any combination of dummy covariates, fixed and varying */ |
|
printf("Varprob TKresult[nres]=%d j1=%d, nres=%d, cptcovn=%d, cptcoveff=%d tj=%d cptcovs=%d\n", TKresult[nres], j1, nres, cptcovn, cptcoveff, tj, cptcovs); |
|
if(tj != 1 && TKresult[nres]!= j1) |
|
continue; |
|
|
|
/* for(j1=1; j1<=tj;j1++){ /\* For each valid combination of covariates or only once*\/ */ |
|
/* for(nres=1;nres <=1; nres++){ /\* For each resultline *\/ */ |
|
/* /\* for(nres=1;nres <=nresult; nres++){ /\\* For each resultline *\\/ *\/ */ |
if (cptcovn>0) { |
if (cptcovn>0) { |
fprintf(ficresprob, "\n#********** Variable "); |
fprintf(ficresprob, "\n#********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
|
fprintf(ficresprob, "**********\n#\n"); |
|
fprintf(ficresprobcov, "\n#********** Variable "); |
fprintf(ficresprobcov, "\n#********** Variable "); |
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcov, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
fprintf(ficgp, "\n#********** Variable "); |
|
fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); |
|
fprintf(ficresprobcor, "\n#********** Variable "); |
|
|
|
/* Including quantitative variables of the resultline to be done */ |
|
for (z1=1; z1<=cptcovs; z1++){ /* Loop on each variable of this resultline */ |
|
printf("Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); |
|
fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s \n",nres, z1, modelresult[nres][z1], model); |
|
/* fprintf(ficlog,"Varprob modelresult[%d][%d]=%d model=%s resultline[%d]=%s \n",nres, z1, modelresult[nres][z1], model, nres, resultline[nres]); */ |
|
if(Dummy[modelresult[nres][z1]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to z1 in resultline */ |
|
if(Fixed[modelresult[nres][z1]]==0){ /* Fixed referenced to model equation */ |
|
fprintf(ficresprob,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficresprobcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficgp,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(fichtmcov,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficresprobcor,"V%d=%d ",Tvresult[nres][z1],Tresult[nres][z1]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficresprob,"fixed "); |
|
fprintf(ficresprobcov,"fixed "); |
|
fprintf(ficgp,"fixed "); |
|
fprintf(fichtmcov,"fixed "); |
|
fprintf(ficresprobcor,"fixed "); |
|
}else{ |
|
fprintf(ficresprob,"varyi "); |
|
fprintf(ficresprobcov,"varyi "); |
|
fprintf(ficgp,"varyi "); |
|
fprintf(fichtmcov,"varyi "); |
|
fprintf(ficresprobcor,"varyi "); |
|
} |
|
}else if(Dummy[modelresult[nres][z1]]==1){ /* Quanti variable */ |
|
/* For each selected (single) quantitative value */ |
|
fprintf(ficresprob," V%d=%f ",Tvqresult[nres][z1],Tqresult[nres][z1]); |
|
if(Fixed[modelresult[nres][z1]]==0){ /* Fixed */ |
|
fprintf(ficresprob,"fixed "); |
|
fprintf(ficresprobcov,"fixed "); |
|
fprintf(ficgp,"fixed "); |
|
fprintf(fichtmcov,"fixed "); |
|
fprintf(ficresprobcor,"fixed "); |
|
}else{ |
|
fprintf(ficresprob,"varyi "); |
|
fprintf(ficresprobcov,"varyi "); |
|
fprintf(ficgp,"varyi "); |
|
fprintf(fichtmcov,"varyi "); |
|
fprintf(ficresprobcor,"varyi "); |
|
} |
|
}else{ |
|
printf("Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ |
|
fprintf(ficlog,"Error in varprob() Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=V%d cptcovs=%d, cptcoveff=%d \n", nres, z1, Dummy[modelresult[nres][z1]],nres,z1,modelresult[nres][z1],cptcovs, cptcoveff); /* end if dummy or quanti */ |
|
exit(1); |
|
} |
|
} /* End loop on variable of this resultline */ |
|
/* for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprob, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,TnsdVar[Tvaraff[z1]])]); */ |
|
fprintf(ficresprob, "**********\n#\n"); |
fprintf(ficresprobcov, "**********\n#\n"); |
fprintf(ficresprobcov, "**********\n#\n"); |
|
|
fprintf(ficgp, "\n#********** Variable "); |
|
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficgp, " V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
|
fprintf(ficgp, "**********\n#\n"); |
fprintf(ficgp, "**********\n#\n"); |
|
|
|
|
fprintf(fichtmcov, "\n<hr size=\"2\" color=\"#EC5E5E\">********** Variable "); |
|
for (z1=1; z1<=cptcoveff; z1++) fprintf(fichtm, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
|
fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtmcov, "**********\n<hr size=\"2\" color=\"#EC5E5E\">"); |
|
|
fprintf(ficresprobcor, "\n#********** Variable "); |
|
for (z1=1; z1<=cptcoveff; z1++) fprintf(ficresprobcor, "V%d=%d ",Tvaraff[z1],nbcode[Tvaraff[z1]][codtabm(j1,z1)]); |
|
fprintf(ficresprobcor, "**********\n#"); |
fprintf(ficresprobcor, "**********\n#"); |
if(invalidvarcomb[j1]){ |
if(invalidvarcomb[j1]){ |
fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); |
fprintf(ficgp,"\n#Combination (%d) ignored because no cases \n",j1); |
Line 6723 To be simple, these graphs help to under
|
Line 7185 To be simple, these graphs help to under
|
trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); |
trgradg=matrix(1,(nlstate)*(nlstate+ndeath),1,npar); |
gp=vector(1,(nlstate)*(nlstate+ndeath)); |
gp=vector(1,(nlstate)*(nlstate+ndeath)); |
gm=vector(1,(nlstate)*(nlstate+ndeath)); |
gm=vector(1,(nlstate)*(nlstate+ndeath)); |
for (age=bage; age<=fage; age ++){ |
for (age=bage; age<=fage; age ++){ /* Fo each age we feed the model equation with covariates, using precov as in hpxij() ? */ |
cov[2]=age; |
cov[2]=age; |
if(nagesqr==1) |
if(nagesqr==1) |
cov[3]= age*age; |
cov[3]= age*age; |
for (k=1; k<=cptcovn;k++) { |
/* New code end of combination but for each resultline */ |
cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; |
for(k1=1;k1<=cptcovt;k1++){ /* loop on model equation (including products) */ |
/*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*//* j1 1 2 3 4 |
if(Typevar[k1]==1){ /* A product with age */ |
* 1 1 1 1 1 |
cov[2+nagesqr+k1]=precov[nres][k1]*cov[2]; |
* 2 2 1 1 1 |
}else{ |
* 3 1 2 1 1 |
cov[2+nagesqr+k1]=precov[nres][k1]; |
*/ |
} |
/* nbcode[1][1]=0 nbcode[1][2]=1;*/ |
}/* End of loop on model equation */ |
} |
/* Old code */ |
/* for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; */ |
/* /\* for (k=1; k<=cptcovn;k++) { *\/ */ |
for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; |
/* /\* cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,k)]; *\/ */ |
for (k=1; k<=cptcovprod;k++) |
/* for (k=1; k<=nsd;k++) { /\* For single dummy covariates only *\/ */ |
cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; |
/* /\* Here comes the value of the covariate 'j1' after renumbering k with single dummy covariates *\/ */ |
|
/* cov[2+nagesqr+TvarsDind[k]]=nbcode[TvarsD[k]][codtabm(j1,TnsdVar[TvarsD[k]])]; */ |
|
/* /\*cov[2+nagesqr+k]=nbcode[Tvar[k]][codtabm(j1,Tvar[k])];*\//\* j1 1 2 3 4 */ |
|
/* * 1 1 1 1 1 */ |
|
/* * 2 2 1 1 1 */ |
|
/* * 3 1 2 1 1 */ |
|
/* *\/ */ |
|
/* /\* nbcode[1][1]=0 nbcode[1][2]=1;*\/ */ |
|
/* } */ |
|
/* /\* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 *\/ */ |
|
/* /\* ) p nbcode[Tvar[Tage[k]]][(1 & (ij-1) >> (k-1))+1] *\/ */ |
|
/* /\*for (k=1; k<=cptcovage;k++) cov[2+Tage[k]]=cov[2+Tage[k]]*cov[2]; *\/ */ |
|
/* for (k=1; k<=cptcovage;k++){ /\* For product with age *\/ */ |
|
/* if(Dummy[Tage[k]]==2){ /\* dummy with age *\/ */ |
|
/* cov[2+nagesqr+Tage[k]]=nbcode[Tvar[Tage[k]]][codtabm(j1,TnsdVar[Tvar[Tage[k]]])]*cov[2]; */ |
|
/* /\* cov[++k1]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ |
|
/* } else if(Dummy[Tage[k]]==3){ /\* quantitative with age *\/ */ |
|
/* printf("Internal IMaCh error, don't know which value for quantitative covariate with age, Tage[k]%d, k=%d, Tvar[Tage[k]]=V%d, age=%d\n",Tage[k],k ,Tvar[Tage[k]], (int)cov[2]); */ |
|
/* /\* cov[2+nagesqr+Tage[k]]=meanq[k]/idq[k]*cov[2];/\\* Using the mean of quantitative variable Tvar[Tage[k]] /\\* Tqresult[nres][k]; *\\/ *\/ */ |
|
/* /\* exit(1); *\/ */ |
|
/* /\* cov[++k1]=Tqresult[nres][k]; *\/ */ |
|
/* } */ |
|
/* /\* cov[2+Tage[k]+nagesqr]=nbcode[Tvar[Tage[k]]][codtabm(ij,k)]*cov[2]; *\/ */ |
|
/* } */ |
|
/* for (k=1; k<=cptcovprod;k++){/\* For product without age *\/ */ |
|
/* if(Dummy[Tvard[k][1]]==0){ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* }else{ /\* Should we use the mean of the quantitative variables? *\/ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(j1,TnsdVar[Tvard[k][1]])] * Tqresult[nres][resultmodel[nres][k]]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][1]][codtabm(ij,k)] * Tqresult[nres][k]; *\/ */ |
|
/* } */ |
|
/* }else{ */ |
|
/* if(Dummy[Tvard[k][2]]==0){ */ |
|
/* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][2]][codtabm(j1,TnsdVar[Tvard[k][2]])] * Tqinvresult[nres][TnsdVar[Tvard[k][1]]]; */ |
|
/* /\* cov[++k1]=nbcode[Tvard[k][2]][codtabm(ij,k)] * Tqinvresult[nres][Tvard[k][1]]; *\/ */ |
|
/* }else{ */ |
|
/* cov[2+nagesqr+Tprod[k]]=Tqinvresult[nres][TnsdVar[Tvard[k][1]]]* Tqinvresult[nres][TnsdVar[Tvard[k][2]]]; */ |
|
/* /\* cov[++k1]=Tqinvresult[nres][Tvard[k][1]]* Tqinvresult[nres][Tvard[k][2]]; *\/ */ |
|
/* } */ |
|
/* } */ |
|
/* /\* cov[2+nagesqr+Tprod[k]]=nbcode[Tvard[k][1]][codtabm(ij,k)]*nbcode[Tvard[k][2]][codtabm(ij,k)]; *\/ */ |
|
/* } */ |
|
/* For each age and combination of dummy covariates we slightly move the parameters of delti in order to get the gradient*/ |
for(theta=1; theta <=npar; theta++){ |
for(theta=1; theta <=npar; theta++){ |
for(i=1; i<=npar; i++) |
for(i=1; i<=npar; i++) |
xp[i] = x[i] + (i==theta ?delti[theta]:(double)0); |
xp[i] = x[i] + (i==theta ?delti[theta]:(double)0); |
Line 6927 To be simple, these graphs help to under
|
Line 7431 To be simple, these graphs help to under
|
} /*l1 */ |
} /*l1 */ |
}/* k1 */ |
}/* k1 */ |
} /* loop on combination of covariates j1 */ |
} /* loop on combination of covariates j1 */ |
|
} /* loop on nres */ |
free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); |
free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); |
free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); |
free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); |
free_matrix(doldm,1,(nlstate)*(nlstate+ndeath),1,(nlstate)*(nlstate+ndeath)); |
free_matrix(doldm,1,(nlstate)*(nlstate+ndeath),1,(nlstate)*(nlstate+ndeath)); |
Line 6948 void printinghtml(char fileresu[], char
|
Line 7453 void printinghtml(char fileresu[], char
|
double jprev1, double mprev1,double anprev1, double dateprev1, double dateprojd, double dateback1, \ |
double jprev1, double mprev1,double anprev1, double dateprev1, double dateprojd, double dateback1, \ |
double jprev2, double mprev2,double anprev2, double dateprev2, double dateprojf, double dateback2){ |
double jprev2, double mprev2,double anprev2, double dateprev2, double dateprojf, double dateback2){ |
int jj1, k1, i1, cpt, k4, nres; |
int jj1, k1, i1, cpt, k4, nres; |
|
/* In fact some results are already printed in fichtm which is open */ |
fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
<li><a href='#secondorder'>Result files (second order (variance)</a>\n \ |
<li><a href='#secondorder'>Result files (second order (variance)</a>\n \ |
</ul>"); |
</ul>"); |
fprintf(fichtm,"<ul><li> model=1+age+%s\n \ |
/* fprintf(fichtm,"<ul><li> model=1+age+%s\n \ */ |
</ul>", model); |
/* </ul>", model); */ |
fprintf(fichtm,"<ul><li><h4><a name='firstorder'>Result files (first order: no variance)</a></h4>\n"); |
fprintf(fichtm,"<ul><li><h4><a name='firstorder'>Result files (first order: no variance)</a></h4>\n"); |
fprintf(fichtm,"<li>- Observed frequency between two states (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file)<br/>\n", |
fprintf(fichtm,"<li>- Observed frequency between two states (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file)<br/>\n", |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTMFR_",".htm"),subdirfext3(optionfilefiname,"PHTMFR_",".htm")); |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTMFR_",".htm"),subdirfext3(optionfilefiname,"PHTMFR_",".htm")); |
fprintf(fichtm,"<li> - Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file) ", |
fprintf(fichtm,"<li> - Observed prevalence (cross-sectional prevalence) in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> (html file) ", |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTM_",".htm"),subdirfext3(optionfilefiname,"PHTM_",".htm")); |
jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirfext3(optionfilefiname,"PHTM_",".htm"),subdirfext3(optionfilefiname,"PHTM_",".htm")); |
fprintf(fichtm,", <a href=\"%s\">%s</a> (text file) <br>\n",subdirf2(fileresu,"P_"),subdirf2(fileresu,"P_")); |
fprintf(fichtm,", <a href=\"%s\">%s</a> (text file) <br>\n",subdirf2(fileresu,"P_"),subdirf2(fileresu,"P_")); |
fprintf(fichtm,"\ |
fprintf(fichtm,"\ |
Line 6986 void printinghtml(char fileresu[], char
|
Line 7491 void printinghtml(char fileresu[], char
|
m=pow(2,cptcoveff); |
m=pow(2,cptcoveff); |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
|
|
fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>"); |
fprintf(fichtm," \n<ul><li><b>Graphs (first order)</b></li><p>"); |
|
|
jj1=0; |
jj1=0; |
|
|
Line 7021 void printinghtml(char fileresu[], char
|
Line 7526 void printinghtml(char fileresu[], char
|
fprintf(fichtm,"</a></li>"); |
fprintf(fichtm,"</a></li>"); |
} /* cptcovn >0 */ |
} /* cptcovn >0 */ |
} |
} |
fprintf(fichtm," \n</ul>"); |
fprintf(fichtm," \n</ul>"); |
|
|
jj1=0; |
jj1=0; |
|
|
Line 7055 void printinghtml(char fileresu[], char
|
Line 7560 void printinghtml(char fileresu[], char
|
} |
} |
|
|
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtm," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(fichtm,"\n<h3>Combination (%d) ignored because no cases </h3>\n",k1); |
fprintf(fichtm,"\n<h3>Combination (%d) ignored because no cases </h3>\n",k1); |
printf("\nCombination (%d) ignored because no cases \n",k1); |
printf("\nCombination (%d) ignored because no cases \n",k1); |
Line 7076 divided by h: <sub>h</sub>P<sub>ij</sub>
|
Line 7581 divided by h: <sub>h</sub>P<sub>ij</sub>
|
<img src=\"%s_%d-3-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
<img src=\"%s_%d-3-%d.svg\">",stepm,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres,subdirf2(optionfilefiname,"PE_"),k1,nres); |
/* Survival functions (period) in state j */ |
/* Survival functions (period) in state j */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Survival functions in state %d. And probability to be observed in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Survival functions in state %d. And probability to be observed in state %d being in state (1 to %d) at different ages. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br>", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
<img src=\"%s_%d-%d-%d.svg\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"PIJ_"),subdirf2(optionfilefiname,"PIJ_")); |
|
fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">",subdirf2(optionfilefiname,"LIJ_"),cpt,k1,nres); |
} |
} |
/* State specific survival functions (period) */ |
/* State specific survival functions (period) */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Survival functions in state %d and in any other live state (total).\ |
fprintf(fichtm,"<br>\n- Survival functions in state %d and in any other live state (total).\ |
And probability to be observed in various states (up to %d) being in state %d at different ages. \ |
And probability to be observed in various states (up to %d) being in state %d at different ages. \ |
<a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> <img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
<a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> ", cpt, nlstate, cpt, subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres,subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
|
fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"PIJ_"),subdirf2(optionfilefiname,"PIJ_")); |
|
fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">",subdirf2(optionfilefiname,"LIJT_"),cpt,k1,nres); |
} |
} |
/* Period (forward stable) prevalence in each health state */ |
/* Period (forward stable) prevalence in each health state */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br> \ |
fprintf(fichtm,"<br>\n- Convergence to period (stable) prevalence in state %d. Or probability for a person being in state (1 to %d) at different ages, to be in state %d some years after. <a href=\"%s_%d-%d-%d.svg\">%s_%d-%d-%d.svg</a><br>", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
<img src=\"%s_%d-%d-%d.svg\">", cpt, nlstate, cpt, subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
fprintf(fichtm," (data from text file <a href=\"%s.txt\">%s.txt</a>)\n<br>",subdirf2(optionfilefiname,"P_"),subdirf2(optionfilefiname,"P_")); |
|
fprintf(fichtm,"<img src=\"%s_%d-%d-%d.svg\">" ,subdirf2(optionfilefiname,"P_"),cpt,k1,nres); |
} |
} |
if(prevbcast==1){ |
if(prevbcast==1){ |
/* Backward prevalence in each health state */ |
/* Backward prevalence in each health state */ |
Line 7173 See page 'Matrix of variance-covariance
|
Line 7682 See page 'Matrix of variance-covariance
|
/* else */ |
/* else */ |
/* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ |
/* fprintf(fichtm,"\n No population forecast: popforecast = %d (instead of 1) or stepm = %d (instead of 1) or model=%s (instead of .)<br><br></li>\n",popforecast, stepm, model); */ |
fflush(fichtm); |
fflush(fichtm); |
fprintf(fichtm," <ul><li><b>Graphs</b></li><p>"); |
|
|
|
m=pow(2,cptcoveff); |
m=pow(2,cptcoveff); |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
if (cptcovn < 1) {m=1;ncodemax[1]=1;} |
|
|
|
fprintf(fichtm," <ul><li><b>Graphs (second order)</b></li><p>"); |
|
|
|
jj1=0; |
|
|
|
fprintf(fichtm," \n<ul>"); |
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
|
for(k1=1; k1<=m;k1++){ /* For each combination of covariate */ |
|
if(m != 1 && TKresult[nres]!= k1) |
|
continue; |
|
jj1++; |
|
if (cptcovn > 0) { |
|
fprintf(fichtm,"\n<li><a size=\"1\" color=\"#EC5E5E\" href=\"#rescovsecond"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); |
|
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm,"_V%d=%f_",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
fprintf(fichtm,"\">"); |
|
|
|
/* if(nqfveff+nqtveff 0) */ /* Test to be done */ |
|
fprintf(fichtm,"************ Results for covariates"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); |
|
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
if(invalidvarcomb[k1]){ |
|
fprintf(fichtm," Warning Combination (%d) ignored because no cases ",k1); |
|
continue; |
|
} |
|
fprintf(fichtm,"</a></li>"); |
|
} /* cptcovn >0 */ |
|
} |
|
fprintf(fichtm," \n</ul>"); |
|
|
jj1=0; |
jj1=0; |
|
|
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
for(nres=1; nres <= nresult; nres++){ /* For each resultline */ |
Line 7187 See page 'Matrix of variance-covariance
|
Line 7732 See page 'Matrix of variance-covariance
|
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ |
jj1++; |
jj1++; |
if (cptcovn > 0) { |
if (cptcovn > 0) { |
|
fprintf(fichtm,"\n<p><a name=\"rescovsecond"); |
|
for (cpt=1; cpt<=cptcoveff;cpt++){ |
|
fprintf(fichtm,"_V%d=%d_",Tvresult[nres][cpt],(int)Tresult[nres][cpt]); |
|
} |
|
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
|
fprintf(fichtm,"_V%d=%f_",Tvqresult[nres][k4],Tqresult[nres][k4]); |
|
} |
|
fprintf(fichtm,"\"</a>"); |
|
|
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
fprintf(fichtm,"<hr size=\"2\" color=\"#EC5E5E\">************ Results for covariates"); |
for (cpt=1; cpt<=cptcoveff;cpt++) /**< cptcoveff number of variables */ |
for (cpt=1; cpt<=cptcoveff;cpt++){ /**< cptcoveff number of variables */ |
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]); |
fprintf(fichtm," V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]); |
|
printf(" V%d=%d ",Tvresult[nres][cpt],Tresult[nres][cpt]);fflush(stdout); |
/* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); */ |
/* fprintf(fichtm," V%d=%d ",Tvaraff[cpt],nbcode[Tvaraff[cpt]][codtabm(jj1,cpt)]); */ |
|
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(fichtm," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
} |
} |
|
|
fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">"); |
fprintf(fichtm," (model=%s) ************\n<hr size=\"2\" color=\"#EC5E5E\">",model); |
|
|
if(invalidvarcomb[k1]){ |
if(invalidvarcomb[k1]){ |
fprintf(fichtm,"\n<h4>Combination (%d) ignored because no cases </h4>\n",k1); |
fprintf(fichtm,"\n<h4>Combination (%d) ignored because no cases </h4>\n",k1); |
Line 7304 void printinggnuplot(char fileresu[], ch
|
Line 7860 void printinggnuplot(char fileresu[], ch
|
fprintf(ficgp,"\n# 1st: Forward (stable period) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
fprintf(ficgp,"\n# 1st: Forward (stable period) prevalence with CI: 'VPL_' files and live state =%d ", cpt); |
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate k get corresponding value lv for combination k1 */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the value of the covariate corresponding to k1 combination */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the value of the covariate corresponding to k1 combination *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
Line 7331 void printinggnuplot(char fileresu[], ch
|
Line 7888 void printinggnuplot(char fileresu[], ch
|
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
fprintf(ficgp,"\nset out \"%s_%d-%d-%d.svg\" \n",subdirf2(optionfilefiname,"V_"),cpt,k1,nres); |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d-%d.svg\" \n",optionfilefiname,cpt,k1,nres); |
fprintf(ficgp,"\n#set out \"V_%s_%d-%d-%d.svg\" \n",optionfilefiname,cpt,k1,nres); |
/* fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); */ |
/* fprintf(ficgp,"set label \"Alive state %d %s\" at graph 0.98,0.5 center rotate font \"Helvetica,12\"\n",cpt,gplotlabel); */ |
fprintf(ficgp,"set title \"Alive state %d %s\" font \"Helvetica,12\"\n",cpt,gplotlabel); |
fprintf(ficgp,"set title \"Alive state %d %s model=%s\" font \"Helvetica,12\"\n",cpt,gplotlabel,model); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),nres-1,nres-1,nres); |
/* fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1,nres); */ |
/* fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter svg size 640, 480\nplot [%.f:%.f] \"%s\" every :::%d::%d u 1:($2==%d ? $3:1/0) \"%%lf %%lf",ageminpar,fage,subdirf2(fileresu,"VPL_"),k1-1,k1-1,nres); */ |
/* k1-1 error should be nres-1*/ |
/* k1-1 error should be nres-1*/ |
Line 7357 void printinggnuplot(char fileresu[], ch
|
Line 7914 void printinggnuplot(char fileresu[], ch
|
}else{ |
}else{ |
kl=0; |
kl=0; |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to k1 combination and kth covariate *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
Line 7385 void printinggnuplot(char fileresu[], ch
|
Line 7943 void printinggnuplot(char fileresu[], ch
|
}else{ |
}else{ |
kl=0; |
kl=0; |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
for (k=1; k<=cptcoveff; k++){ /* For each combination of covariate */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to k1 combination and kth covariate *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
kl++; |
kl++; |
/* kl=6+(cpt-1)*(nlstate+1)+1+(i-1); /\* 6+(1-1)*(2+1)+1+(1-1)=7, 6+(2-1)(2+1)+1+(1-1)=10 *\/ */ |
/* kl=6+(cpt-1)*(nlstate+1)+1+(i-1); /\* 6+(1-1)*(2+1)+1+(1-1)=7, 6+(2-1)(2+1)+1+(1-1)=10 *\/ */ |
/*6+(cpt-1)*(nlstate+1)+1+(i-1)+(nlstate+1)*nlstate; 6+(1-1)*(2+1)+1+(1-1) +(2+1)*2=13 */ |
/*6+(cpt-1)*(nlstate+1)+1+(i-1)+(nlstate+1)*nlstate; 6+(1-1)*(2+1)+1+(1-1) +(2+1)*2=13 */ |
Line 7399 void printinggnuplot(char fileresu[], ch
|
Line 7959 void printinggnuplot(char fileresu[], ch
|
fprintf(ficgp,"$%d==%d && $%d==%d)? $%d : 1/0) t 'Backward prevalence in state %d' w l lt 3",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv], \ |
fprintf(ficgp,"$%d==%d && $%d==%d)? $%d : 1/0) t 'Backward prevalence in state %d' w l lt 3",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv], \ |
2+cptcoveff*2+(cpt-1), cpt ); /* 4 or 6 ?*/ |
2+cptcoveff*2+(cpt-1), cpt ); /* 4 or 6 ?*/ |
}else{ |
}else{ |
fprintf(ficgp,"$%d==%d && $%d==%d && ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][lv]); |
fprintf(ficgp,"$%d==%d && $%d==%d && ",kl+1, Tvaraff[k],kl+1+1,nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]); |
kl++; |
kl++; |
} |
} |
} /* end covariate */ |
} /* end covariate */ |
Line 7439 void printinggnuplot(char fileresu[], ch
|
Line 7999 void printinggnuplot(char fileresu[], ch
|
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
fprintf(ficgp,"\n# 2nd: Total life expectancy with CI: 't' files "); |
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
Line 7502 void printinggnuplot(char fileresu[], ch
|
Line 8064 void printinggnuplot(char fileresu[], ch
|
if(m != 1 && TKresult[nres]!= k1) |
if(m != 1 && TKresult[nres]!= k1) |
continue; |
continue; |
|
|
for (cpt=1; cpt<= nlstate ; cpt ++) { |
for (cpt=1; cpt<= nlstate ; cpt ++) { /* Fragile no verification of covariate values */ |
fprintf(ficgp,"\n\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n\n# 3d: Life expectancy with EXP_ files: combination=%d state=%d",k1, cpt); |
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
|
lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7560 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 8124 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j : 'LIJ_' files, cov=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
|
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7611 set ter svg size 640, 480\nunset log y\n
|
Line 8177 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n# Survival functions in state j and all livestates from state i by final state j: 'lij' files, cov=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
|
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7670 set ter svg size 640, 480\nunset log y\n
|
Line 8238 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n#CV preval stable (forward): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#CV preval stable (forward): 'pij' files, covariatecombination#=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7721 set ter svg size 640, 480\nunset log y\n
|
Line 8291 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n#CV Backward stable prevalence: 'pijb' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#CV Backward stable prevalence: 'pijb' files, covariatecombination#=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate and each value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate number corresponding to k1 combination */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate number corresponding to k1 combination *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7752 set ter svg size 640, 480\nunset log y\n
|
Line 8324 set ter svg size 640, 480\nunset log y\n
|
fprintf(ficgp,", '' "); |
fprintf(ficgp,", '' "); |
/* l=(nlstate+ndeath)*(i-1)+1; */ |
/* l=(nlstate+ndeath)*(i-1)+1; */ |
l=(nlstate+ndeath)*(cpt-1)+1; /* fixed for i; cpt=1 1, cpt=2 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
l=(nlstate+ndeath)*(cpt-1)+1; /* fixed for i; cpt=1 1, cpt=2 1+ nlstate+ndeath, 1+2*(nlstate+ndeath) */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ |
/* fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d/($%d",k1,k+l+(cpt-1),k+l+(cpt-1)+i-1); /\* a vérifier *\/ */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+i-1); /* To be verified */ |
fprintf(ficgp," u ($1==%d ? ($3):1/0):($%d",k1,k+l+i-1); /* To be verified */ |
/* for (j=2; j<= nlstate ; j ++) */ |
/* for (j=2; j<= nlstate ; j ++) */ |
/* fprintf(ficgp,"+$%d",k+l+j-1); */ |
/* fprintf(ficgp,"+$%d",k+l+j-1); */ |
Line 7777 set ter svg size 640, 480\nunset log y\n
|
Line 8349 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n#Projection of prevalence to forward stable prevalence (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#Projection of prevalence to forward stable prevalence (period): 'PROJ_' files, covariatecombination#=%d state=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to k1 combination and kth covariate *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7843 set ter svg size 640, 480\nunset log y\n
|
Line 8417 set ter svg size 640, 480\nunset log y\n
|
kl=0; |
kl=0; |
strcpy(gplotcondition,"("); |
strcpy(gplotcondition,"("); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
|
lv=codtabm(k1,TnsdVar[Tvaraff[k]]); |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; /* Value of the modality of Tvaraff[k] */ |
/* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
kl++; |
kl++; |
sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
kl++; |
kl++; |
Line 7890 set ter svg size 640, 480\nunset log y\n
|
Line 8466 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
fprintf(ficgp,"\n#\n#\n#Back projection of prevalence to stable (mixed) back prevalence: 'BPROJ_' files, covariatecombination#=%d originstate=%d",k1, cpt); |
fprintf(ficgp,"\n#\n#\n#Back projection of prevalence to stable (mixed) back prevalence: 'BPROJ_' files, covariatecombination#=%d originstate=%d",k1, cpt); |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to k1 combination and kth covariate *\/ */ |
|
lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 7956 set ter svg size 640, 480\nunset log y\n
|
Line 8534 set ter svg size 640, 480\nunset log y\n
|
kl=0; |
kl=0; |
strcpy(gplotcondition,"("); |
strcpy(gplotcondition,"("); |
for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ |
for (k=1; k<=cptcoveff; k++){ /* For each covariate writing the chain of conditions */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to combination k1 and covariate k *\/ */ |
|
lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; /* Value of the modality of Tvaraff[k] */ |
/* vlv= nbcode[Tvaraff[k]][lv]; /\* Value of the modality of Tvaraff[k] *\/ */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
kl++; |
kl++; |
sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
sprintf(gplotcondition+strlen(gplotcondition),"$%d==%d && $%d==%d " ,kl,Tvaraff[k], kl+1, nbcode[Tvaraff[k]][lv]); |
kl++; |
kl++; |
Line 8041 set ter svg size 640, 480\nunset log y\n
|
Line 8621 set ter svg size 640, 480\nunset log y\n
|
strcpy(gplotlabel,"("); |
strcpy(gplotlabel,"("); |
/*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ |
/*sprintf(gplotlabel+strlen(gplotlabel)," Dummy combination %d ",k1);*/ |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
for (k=1; k<=cptcoveff; k++){ /* For each correspondig covariate value */ |
lv= decodtabm(k1,k,cptcoveff); /* Should be the covariate value corresponding to k1 combination and kth covariate */ |
/* lv= decodtabm(k1,k,cptcoveff); /\* Should be the covariate value corresponding to k1 combination and kth covariate *\/ */ |
|
lv= codtabm(k1,TnsdVar[Tvaraff[k]]); /* Should be the covariate value corresponding to combination k1 and covariate k */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,1,4) = 1 because h=1 k= (1) 1 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(1,2,4) = 1 because h=1 k= 1 (1) 1 1 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
/* decodtabm(13,3,4)= 2 because h=13 k= 1 1 (2) 2 */ |
vlv= nbcode[Tvaraff[k]][lv]; |
/* vlv= nbcode[Tvaraff[k]][lv]; */ |
|
vlv= nbcode[Tvaraff[k]][codtabm(k1,TnsdVar[Tvaraff[k]])]; |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
fprintf(ficgp," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%d ",Tvaraff[k],vlv); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficgp," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
sprintf(gplotlabel+strlen(gplotlabel)," V%d=%f ",Tvqresult[nres][resultmodel[nres][k4]],Tqresult[nres][resultmodel[nres][k4]]); |
} |
} |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
strcpy(gplotlabel+strlen(gplotlabel),")"); |
fprintf(ficgp,"\n#\n"); |
fprintf(ficgp,"\n#\n"); |
Line 8102 set ter svg size 640, 480\nunset log y\n
|
Line 8684 set ter svg size 640, 480\nunset log y\n
|
/* for(j=3; j <=ncovmodel-nagesqr; j++) { */ |
/* for(j=3; j <=ncovmodel-nagesqr; j++) { */ |
for(j=1; j <=cptcovt; j++) { /* For each covariate of the simplified model */ |
for(j=1; j <=cptcovt; j++) { /* For each covariate of the simplified model */ |
/* printf("Tage[%d]=%d, j=%d\n", ij, Tage[ij], j); */ |
/* printf("Tage[%d]=%d, j=%d\n", ij, Tage[ij], j); */ |
if(cptcovage >0){ /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
switch(Typevar[j]){ |
if(j==Tage[ij]) { /* Product by age To be looked at!!*/ |
case 1: |
if(ij <=cptcovage) { /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
if(cptcovage >0){ /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
if(DummyV[j]==0){ |
if(j==Tage[ij]) { /* Product by age To be looked at!!*//* Bug valgrind */ |
fprintf(ficgp,"+p%d*%d*x",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]);; |
if(ij <=cptcovage) { /* V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1, 2 V5 and V1 */ |
}else{ /* quantitative */ |
if(DummyV[j]==0){/* Bug valgrind */ |
fprintf(ficgp,"+p%d*%f*x",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* Tqinvresult in decoderesult */ |
fprintf(ficgp,"+p%d*%d*x",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]);; |
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
}else{ /* quantitative */ |
|
fprintf(ficgp,"+p%d*%f*x",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* Tqinvresult in decoderesult */ |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
|
} |
|
ij++; |
} |
} |
ij++; |
|
} |
} |
} |
} |
}else if(cptcovprod >0){ |
break; |
if(j==Tprod[ijp]) { /* */ |
case 2: |
/* printf("Tprod[%d]=%d, j=%d\n", ij, Tprod[ijp], j); */ |
if(cptcovprod >0){ |
if(ijp <=cptcovprod) { /* Product */ |
if(j==Tprod[ijp]) { /* */ |
if(DummyV[Tvard[ijp][1]]==0){/* Vn is dummy */ |
/* printf("Tprod[%d]=%d, j=%d\n", ij, Tprod[ijp], j); */ |
if(DummyV[Tvard[ijp][2]]==0){/* Vn and Vm are dummy */ |
if(ijp <=cptcovprod) { /* Product */ |
/* fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],nbcode[Tvard[ijp][2]][codtabm(k1,j)]); */ |
if(DummyV[Tvard[ijp][1]]==0){/* Vn is dummy */ |
fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tinvresult[nres][Tvard[ijp][2]]); |
if(DummyV[Tvard[ijp][2]]==0){/* Vn and Vm are dummy */ |
}else{ /* Vn is dummy and Vm is quanti */ |
/* fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],nbcode[Tvard[ijp][2]][codtabm(k1,j)]); */ |
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],Tqinvresult[nres][Tvard[ijp][2]]); */ |
fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tinvresult[nres][Tvard[ijp][2]]); |
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
}else{ /* Vn is dummy and Vm is quanti */ |
} |
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],Tqinvresult[nres][Tvard[ijp][2]]); */ |
}else{ /* Vn*Vm Vn is quanti */ |
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
if(DummyV[Tvard[ijp][2]]==0){ |
} |
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][2]],Tqinvresult[nres][Tvard[ijp][1]]); |
}else{ /* Vn*Vm Vn is quanti */ |
}else{ /* Both quanti */ |
if(DummyV[Tvard[ijp][2]]==0){ |
fprintf(ficgp,"+p%d*%f*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][2]],Tqinvresult[nres][Tvard[ijp][1]]); |
|
}else{ /* Both quanti */ |
|
fprintf(ficgp,"+p%d*%f*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
|
} |
} |
} |
|
ijp++; |
} |
} |
ijp++; |
} /* end Tprod */ |
} |
} |
} /* end Tprod */ |
break; |
} else{ /* simple covariate */ |
case 0: |
|
/* simple covariate */ |
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,nbcode[Tvar[j]][codtabm(k1,j)]); /\* Valgrind bug nbcode *\/ */ |
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,nbcode[Tvar[j]][codtabm(k1,j)]); /\* Valgrind bug nbcode *\/ */ |
if(Dummy[j]==0){ |
if(Dummy[j]==0){ |
fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]); /* */ |
fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]); /* */ |
Line 8144 set ter svg size 640, 480\nunset log y\n
|
Line 8734 set ter svg size 640, 480\nunset log y\n
|
fprintf(ficgp,"+p%d*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* */ |
fprintf(ficgp,"+p%d*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /* */ |
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
} |
} |
} /* end simple */ |
/* end simple */ |
|
break; |
|
default: |
|
break; |
|
} /* end switch */ |
} /* end j */ |
} /* end j */ |
}else{ |
}else{ /* k=k2 */ |
i=i-ncovmodel; |
if(ng !=1 ){ /* For logit formula of log p11 is more difficult to get */ |
if(ng !=1 ) /* For logit formula of log p11 is more difficult to get */ |
fprintf(ficgp," (1.");i=i-ncovmodel; |
fprintf(ficgp," (1."); |
}else |
|
i=i-ncovmodel; |
} |
} |
|
|
if(ng != 1){ |
if(ng != 1){ |
Line 8162 set ter svg size 640, 480\nunset log y\n
|
Line 8757 set ter svg size 640, 480\nunset log y\n
|
fprintf(ficgp,"+exp(p%d+p%d*x+p%d*x*x",k3+(cpt-1)*ncovmodel,k3+(cpt-1)*ncovmodel+1,k3+(cpt-1)*ncovmodel+1+nagesqr); |
fprintf(ficgp,"+exp(p%d+p%d*x+p%d*x*x",k3+(cpt-1)*ncovmodel,k3+(cpt-1)*ncovmodel+1,k3+(cpt-1)*ncovmodel+1+nagesqr); |
|
|
ij=1; |
ij=1; |
for(j=3; j <=ncovmodel-nagesqr; j++){ |
ijp=1; |
if(cptcovage >0){ |
/* for(j=3; j <=ncovmodel-nagesqr; j++){ */ |
if((j-2)==Tage[ij]) { /* Bug valgrind */ |
for(j=1; j <=cptcovt; j++) { /* For each covariate of the simplified model */ |
if(ij <=cptcovage) { /* Bug valgrind */ |
switch(Typevar[j]){ |
fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]); |
case 1: |
/* fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
if(cptcovage >0){ |
ij++; |
if(j==Tage[ij]) { /* Bug valgrind */ |
} |
if(ij <=cptcovage) { /* Bug valgrind */ |
} |
if(DummyV[j]==0){/* Bug valgrind */ |
}else |
/* fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]); */ |
fprintf(ficgp,"+p%d*%d",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]);/* Valgrind bug nbcode */ |
/* fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j+nagesqr,nbcode[Tvar[j]][codtabm(k1,j)]); */ |
|
fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tinvresult[nres][Tvar[j]]); |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]);; */ |
|
/* fprintf(ficgp,"+p%d*%d*x",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
|
}else{ /* quantitative */ |
|
/* fprintf(ficgp,"+p%d*%f*x",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /\* Tqinvresult in decoderesult *\/ */ |
|
fprintf(ficgp,"+p%d*%f*x",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tqinvresult[nres][Tvar[j]]); /* Tqinvresult in decoderesult */ |
|
/* fprintf(ficgp,"+p%d*%f*x",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /\* Tqinvresult in decoderesult *\/ */ |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
|
} |
|
ij++; |
|
} |
|
} |
|
} |
|
break; |
|
case 2: |
|
if(cptcovprod >0){ |
|
if(j==Tprod[ijp]) { /* */ |
|
/* printf("Tprod[%d]=%d, j=%d\n", ij, Tprod[ijp], j); */ |
|
if(ijp <=cptcovprod) { /* Product */ |
|
if(DummyV[Tvard[ijp][1]]==0){/* Vn is dummy */ |
|
if(DummyV[Tvard[ijp][2]]==0){/* Vn and Vm are dummy */ |
|
/* fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],nbcode[Tvard[ijp][2]][codtabm(k1,j)]); */ |
|
fprintf(ficgp,"+p%d*%d*%d",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tinvresult[nres][Tvard[ijp][1]],Tinvresult[nres][Tvard[ijp][2]]); |
|
/* fprintf(ficgp,"+p%d*%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tinvresult[nres][Tvard[ijp][2]]); */ |
|
}else{ /* Vn is dummy and Vm is quanti */ |
|
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,nbcode[Tvard[ijp][1]][codtabm(k1,j)],Tqinvresult[nres][Tvard[ijp][2]]); */ |
|
fprintf(ficgp,"+p%d*%d*%f",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
|
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); */ |
|
} |
|
}else{ /* Vn*Vm Vn is quanti */ |
|
if(DummyV[Tvard[ijp][2]]==0){ |
|
fprintf(ficgp,"+p%d*%d*%f",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tinvresult[nres][Tvard[ijp][2]],Tqinvresult[nres][Tvard[ijp][1]]); |
|
/* fprintf(ficgp,"+p%d*%d*%f",i+j+2+nagesqr-1,Tinvresult[nres][Tvard[ijp][2]],Tqinvresult[nres][Tvard[ijp][1]]); */ |
|
}else{ /* Both quanti */ |
|
fprintf(ficgp,"+p%d*%f*%f",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tqinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); |
|
/* fprintf(ficgp,"+p%d*%f*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvard[ijp][1]],Tqinvresult[nres][Tvard[ijp][2]]); */ |
|
} |
|
} |
|
ijp++; |
|
} |
|
} /* end Tprod */ |
|
} /* end if */ |
|
break; |
|
case 0: |
|
/* simple covariate */ |
|
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,nbcode[Tvar[j]][codtabm(k1,j)]); /\* Valgrind bug nbcode *\/ */ |
|
if(Dummy[j]==0){ |
|
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]); /\* *\/ */ |
|
fprintf(ficgp,"+p%d*%d",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tinvresult[nres][Tvar[j]]); /* */ |
|
/* fprintf(ficgp,"+p%d*%d",i+j+2+nagesqr-1,Tinvresult[nres][Tvar[j]]); /\* *\/ */ |
|
}else{ /* quantitative */ |
|
fprintf(ficgp,"+p%d*%f",k3+(cpt-1)*ncovmodel+1+j+nagesqr,Tqinvresult[nres][Tvar[j]]); /* */ |
|
/* fprintf(ficgp,"+p%d*%f",i+j+2+nagesqr-1,Tqinvresult[nres][Tvar[j]]); /\* *\/ */ |
|
/* fprintf(ficgp,"+p%d*%d*x",i+j+nagesqr-1,nbcode[Tvar[j-2]][codtabm(k1,Tvar[j-2])]); */ |
|
} |
|
/* end simple */ |
|
/* fprintf(ficgp,"+p%d*%d",k3+(cpt-1)*ncovmodel+1+j-2+nagesqr,nbcode[Tvar[j-2]][codtabm(k1,j-2)]);/\* Valgrind bug nbcode *\/ */ |
|
break; |
|
default: |
|
break; |
|
} /* end switch */ |
} |
} |
fprintf(ficgp,")"); |
fprintf(ficgp,")"); |
} |
} |
Line 8181 set ter svg size 640, 480\nunset log y\n
|
Line 8837 set ter svg size 640, 480\nunset log y\n
|
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"p%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"p%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
else /* ng= 3 */ |
else /* ng= 3 */ |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"i%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"i%d%d\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
}else{ /* end ng <> 1 */ |
}else{ /* end ng <> 1 */ |
if( k !=k2) /* logit p11 is hard to draw */ |
if( k !=k2) /* logit p11 is hard to draw */ |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"logit(p%d%d)\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
fprintf(ficgp," w l lw 2 lt (%d*%d+%d)%%%d+1 dt %d t \"logit(p%d%d)\" ", nlstate+ndeath, k2, k, nlstate+ndeath, k2, k2,k); |
} |
} |
Line 8517 void prevforecast(char fileres[], double
|
Line 9173 void prevforecast(char fileres[], double
|
|
|
/* if (h==(int)(YEARM*yearp)){ */ |
/* if (h==(int)(YEARM*yearp)){ */ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(k=1; k<=i1;k++){ |
for(k=1; k<=i1;k++){ /* We want to find the combination k corresponding to the values of the dummies given in this resut line (to be cleaned one day) */ |
if(i1 != 1 && TKresult[nres]!= k) |
if(i1 != 1 && TKresult[nres]!= k) |
continue; |
continue; |
if(invalidvarcomb[k]){ |
if(invalidvarcomb[k]){ |
Line 8526 void prevforecast(char fileres[], double
|
Line 9182 void prevforecast(char fileres[], double
|
} |
} |
fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); |
fprintf(ficresf,"\n#****** hpijx=probability over h years, hp.jx is weighted by observed prev \n#"); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); */ |
|
fprintf(ficresf," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
Line 8556 void prevforecast(char fileres[], double
|
Line 9213 void prevforecast(char fileres[], double
|
} |
} |
fprintf(ficresf,"\n"); |
fprintf(ficresf,"\n"); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Tvaraff not correct *\/ */ |
|
fprintf(ficresf,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* TnsdVar[Tvaraff] correct */ |
fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); |
fprintf(ficresf,"%.f %.f ",anprojd+yearp,agec+h*hstepm/YEARM*stepm); |
|
|
for(j=1; j<=nlstate+ndeath;j++) { |
for(j=1; j<=nlstate+ndeath;j++) { |
Line 8666 void prevforecast(char fileres[], double
|
Line 9324 void prevforecast(char fileres[], double
|
} |
} |
fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); |
fprintf(ficresfb,"\n#****** hbijx=probability over h years, hb.jx is weighted by observed prev \n#"); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresfb," V%d (=) %d",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficresf," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
Line 8702 void prevforecast(char fileres[], double
|
Line 9360 void prevforecast(char fileres[], double
|
} |
} |
fprintf(ficresfb,"\n"); |
fprintf(ficresfb,"\n"); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresfb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); |
fprintf(ficresfb,"%.f %.f ",anbackd+yearp,agec-h*hstepm/YEARM*stepm); |
for(i=1; i<=nlstate+ndeath;i++) { |
for(i=1; i<=nlstate+ndeath;i++) { |
ppij=0.;ppi=0.; |
ppij=0.;ppi=0.; |
Line 8762 void prevforecast(char fileres[], double
|
Line 9420 void prevforecast(char fileres[], double
|
if (cptcovn < 1){i1=1;} |
if (cptcovn < 1){i1=1;} |
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(k=1; k<=i1;k++){ |
for(k=1; k<=i1;k++){ /* We find the combination equivalent to result line values of dummies */ |
if(i1 != 1 && TKresult[nres]!= k) |
if(i1 != 1 && TKresult[nres]!= k) |
continue; |
continue; |
fprintf(ficresvpl,"\n#****** "); |
fprintf(ficresvpl,"\n#****** "); |
printf("\n#****** "); |
printf("\n#****** "); |
fprintf(ficlog,"\n#****** "); |
fprintf(ficlog,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresvpl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficresvpl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresvpl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
} |
} |
fprintf(ficresvpl,"******\n"); |
fprintf(ficresvpl,"******\n"); |
printf("******\n"); |
printf("******\n"); |
Line 8826 void prevforecast(char fileres[], double
|
Line 9484 void prevforecast(char fileres[], double
|
printf("\n#****** "); |
printf("\n#****** "); |
fprintf(ficlog,"\n#****** "); |
fprintf(ficlog,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresvbl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresvbl,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficresvbl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresvbl," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
} |
} |
fprintf(ficresvbl,"******\n"); |
fprintf(ficresvbl,"******\n"); |
printf("******\n"); |
printf("******\n"); |
Line 9295 int readdata(char datafile[], int firsto
|
Line 9953 int readdata(char datafile[], int firsto
|
|
|
DummyV=ivector(1,NCOVMAX); /* 1 to 3 */ |
DummyV=ivector(1,NCOVMAX); /* 1 to 3 */ |
FixedV=ivector(1,NCOVMAX); /* 1 to 3 */ |
FixedV=ivector(1,NCOVMAX); /* 1 to 3 */ |
|
for(v=1;v<NCOVMAX;v++){ |
|
DummyV[v]=0; |
|
FixedV[v]=0; |
|
} |
|
|
for(v=1; v <=ncovcol;v++){ |
for(v=1; v <=ncovcol;v++){ |
DummyV[v]=0; |
DummyV[v]=0; |
Line 9435 int readdata(char datafile[], int firsto
|
Line 10097 int readdata(char datafile[], int firsto
|
} |
} |
if(lval <-1 || lval >1){ |
if(lval <-1 || lval >1){ |
printf("Error reading data around '%ld' at line number %d for individual %d, '%s'\n \ |
printf("Error reading data around '%ld' at line number %d for individual %d, '%s'\n \ |
Should be a value of %d(nth) covariate (0 should be the value for the reference and 1\n \ |
Should be a value of %d(nth) covariate of wave %d (0 should be the value for the reference and 1\n \ |
for the alternative. IMaCh does not build design variables automatically, do it yourself.\n \ |
for the alternative. IMaCh does not build design variables automatically, do it yourself.\n \ |
For example, for multinomial values like 1, 2 and 3,\n \ |
For example, for multinomial values like 1, 2 and 3,\n \ |
build V1=0 V2=0 for the reference value (1),\n \ |
build V1=0 V2=0 for the reference value (1),\n \ |
V1=1 V2=0 for (2) \n \ |
V1=1 V2=0 for (2) \n \ |
and V1=0 V2=1 for (3). V1=1 V2=1 should not exist and the corresponding\n \ |
and V1=0 V2=1 for (3). V1=1 V2=1 should not exist and the corresponding\n \ |
output of IMaCh is often meaningless.\n \ |
output of IMaCh is often meaningless.\n \ |
Exiting.\n",lval,linei, i,line,j); |
Exiting.\n",lval,linei, i,line,iv,j); |
fprintf(ficlog,"Error reading data around '%ld' at line number %d for individual %d, '%s'\n \ |
fprintf(ficlog,"Error reading data around '%ld' at line number %d for individual %d, '%s'\n \ |
Should be a value of %d(nth) covariate (0 should be the value for the reference and 1\n \ |
Should be a value of %d(nth) covariate of wave %d (0 should be the value for the reference and 1\n \ |
for the alternative. IMaCh does not build design variables automatically, do it yourself.\n \ |
for the alternative. IMaCh does not build design variables automatically, do it yourself.\n \ |
For example, for multinomial values like 1, 2 and 3,\n \ |
For example, for multinomial values like 1, 2 and 3,\n \ |
build V1=0 V2=0 for the reference value (1),\n \ |
build V1=0 V2=0 for the reference value (1),\n \ |
V1=1 V2=0 for (2) \n \ |
V1=1 V2=0 for (2) \n \ |
and V1=0 V2=1 for (3). V1=1 V2=1 should not exist and the corresponding\n \ |
and V1=0 V2=1 for (3). V1=1 V2=1 should not exist and the corresponding\n \ |
output of IMaCh is often meaningless.\n \ |
output of IMaCh is often meaningless.\n \ |
Exiting.\n",lval,linei, i,line,j);fflush(ficlog); |
Exiting.\n",lval,linei, i,line,iv,j);fflush(ficlog); |
return 1; |
return 1; |
} |
} |
cotvar[j][iv][i]=(double)(lval); |
cotvar[j][iv][i]=(double)(lval); |
Line 9654 void removefirstspace(char **stri){/*, c
|
Line 10316 void removefirstspace(char **stri){/*, c
|
*stri=p2; |
*stri=p2; |
} |
} |
|
|
int decoderesult ( char resultline[], int nres) |
int decoderesult( char resultline[], int nres) |
/**< This routine decode one result line and returns the combination # of dummy covariates only **/ |
/**< This routine decode one result line and returns the combination # of dummy covariates only **/ |
{ |
{ |
int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=0; |
int j=0, k=0, k1=0, k2=0, k3=0, k4=0, match=0, k2q=0, k3q=0, k4q=0; |
char resultsav[MAXLINE]; |
char resultsav[MAXLINE]; |
int resultmodel[MAXLINE]; |
/* int resultmodel[MAXLINE]; */ |
int modelresult[MAXLINE]; |
/* int modelresult[MAXLINE]; */ |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
char stra[80], strb[80], strc[80], strd[80],stre[80]; |
|
|
removefirstspace(&resultline); |
removefirstspace(&resultline); |
|
printf("decoderesult:%s\n",resultline); |
|
|
if (strstr(resultline,"v") !=0){ |
strcpy(resultsav,resultline); |
printf("Error. 'v' must be in upper case 'V' result: %s ",resultline); |
printf("Decoderesult resultsav=\"%s\" resultline=\"%s\"\n", resultsav, resultline); |
fprintf(ficlog,"Error. 'v' must be in upper case result: %s ",resultline);fflush(ficlog); |
|
return 1; |
|
} |
|
trimbb(resultsav, resultline); |
|
if (strlen(resultsav) >1){ |
if (strlen(resultsav) >1){ |
j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' */ |
j=nbocc(resultsav,'='); /**< j=Number of covariate values'=' in this resultline */ |
} |
} |
if(j == 0){ /* Resultline but no = */ |
if(j == 0){ /* Resultline but no = */ |
TKresult[nres]=0; /* Combination for the nresult and the model */ |
TKresult[nres]=0; /* Combination for the nresult and the model */ |
return (0); |
return (0); |
} |
} |
if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */ |
printf("ERROR: the number of variables in the resultline, %d, differs from the number of variables used in the model line, %d.\n",j, cptcovs); |
printf("ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
fprintf(ficlog,"ERROR: the number of variables in the resultline, %d, differs from the number of variables used in the model line, %d.\n",j, cptcovs); |
fprintf(ficlog,"ERROR: the number of variables in the resultline which is %d, differs from the number %d of single variables used in the model line, %s.\n",j, cptcovs, model); |
|
/* return 1;*/ |
} |
} |
for(k=1; k<=j;k++){ /* Loop on any covariate of the result line */ |
for(k=1; k<=j;k++){ /* Loop on any covariate of the RESULT LINE */ |
if(nbocc(resultsav,'=') >1){ |
if(nbocc(resultsav,'=') >1){ |
cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' |
cutl(stra,strb,resultsav,' '); /* keeps in strb after the first ' ' (stra is the rest of the resultline to be analyzed in the next loop *//* resultsav= "V4=1 V5=25.1 V3=0" stra= "V5=25.1 V3=0" strb= "V4=1" */ |
resultsav= V4=1 V5=25.1 V3=0 stra= V5=25.1 V3=0 strb= V4=1 */ |
/* If resultsav= "V4= 1 V5=25.1 V3=0" with a blank then strb="V4=" and stra="1 V5=25.1 V3=0" */ |
cutl(strc,strd,strb,'='); /* strb:V4=1 strc=1 strd=V4 */ |
cutl(strc,strd,strb,'='); /* strb:"V4=1" strc="1" strd="V4" */ |
|
/* If a blank, then strc="V4=" and strd='\0' */ |
|
if(strc[0]=='\0'){ |
|
printf("Error in resultline, probably a blank after the \"%s\", \"result:%s\", stra=\"%s\" resultsav=\"%s\"\n",strb,resultline, stra, resultsav); |
|
fprintf(ficlog,"Error in resultline, probably a blank after the \"V%s=\", resultline=%s\n",strb,resultline); |
|
return 1; |
|
} |
}else |
}else |
cutl(strc,strd,resultsav,'='); |
cutl(strc,strd,resultsav,'='); |
Tvalsel[k]=atof(strc); /* 1 */ |
Tvalsel[k]=atof(strc); /* 1 */ /* Tvalsel of k is the float value of the kth covariate appearing in this result line */ |
|
|
cutl(strc,stre,strd,'V'); /* strd='V4' strc=4 stre='V' */; |
cutl(strc,stre,strd,'V'); /* strd='V4' strc=4 stre='V' */; |
Tvarsel[k]=atoi(strc); |
Tvarsel[k]=atoi(strc); /* 4 */ /* Tvarsel is the id of the kth covariate in the result line Tvarsel[1] in "V4=1.." is 4.*/ |
/* Typevarsel[k]=1; /\* 1 for age product *\/ */ |
/* Typevarsel[k]=1; /\* 1 for age product *\/ */ |
/* cptcovsel++; */ |
/* cptcovsel++; */ |
if (nbocc(stra,'=') >0) |
if (nbocc(stra,'=') >0) |
strcpy(resultsav,stra); /* and analyzes it */ |
strcpy(resultsav,stra); /* and analyzes it */ |
} |
} |
/* Checking for missing or useless values in comparison of current model needs */ |
/* Checking for missing or useless values in comparison of current model needs */ |
for(k1=1; k1<= cptcovt ;k1++){ /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
/* Feeds resultmodel[nres][k1]=k2 for k1th product covariate with age in the model equation fed by the index k2 of the resutline*/ |
|
for(k1=1; k1<= cptcovt ;k1++){ /* Loop on MODEL LINE V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
if(Typevar[k1]==0){ /* Single covariate in model */ |
if(Typevar[k1]==0){ /* Single covariate in model */ |
|
/* 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product */ |
match=0; |
match=0; |
for(k2=1; k2 <=j;k2++){/* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
if(Tvar[k1]==Tvarsel[k2]) {/* Tvar[1]=5 == Tvarsel[2]=5 */ |
if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
modelresult[k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
modelresult[nres][k2]=k1;/* modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
match=1; |
match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
break; |
break; |
} |
} |
} |
} |
if(match == 0){ |
if(match == 0){ |
printf("Error in result line: V%d is missing in result: %s according to model=%s\n",k1, resultline, model); |
printf("Error in result line (Dummy single): V%d is missing in result: %s according to model=%s. Tvar[k1=%d]=%d is different from Tvarsel[k2=%d]=%d.\n",Tvar[k1], resultline, model,k1, Tvar[k1], k2, Tvarsel[k2]); |
fprintf(ficlog,"Error in result line: V%d is missing in result: %s according to model=%s\n",k1, resultline, model); |
fprintf(ficlog,"Error in result line (Dummy single): V%d is missing in result: %s according to model=%s\n",Tvar[k1], resultline, model); |
return 1; |
return 1; |
} |
} |
} |
}else if(Typevar[k1]==1){ /* Product with age We want to get the position k2 in the resultline of the product k1 in the model line*/ |
} |
/* We feed resultmodel[k1]=k2; */ |
|
match=0; |
|
for(k2=1; k2 <=j;k2++){/* Loop on resultline. jth occurence of = signs in the result line. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
if(Tvar[k1]==Tvarsel[k2]) {/* Tvar is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
|
modelresult[nres][k2]=k1;/* we found a Vn=1 corrresponding to Vn*age in the model modelresult[2]=1 modelresult[1]=2 modelresult[3]=3 modelresult[6]=4 modelresult[9]=5 */ |
|
resultmodel[nres][k1]=k2; /* Added here */ |
|
printf("Decoderesult first modelresult[k2=%d]=%d (k1) V%d*AGE\n",k2,k1,Tvar[k1]); |
|
match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
|
break; |
|
} |
|
} |
|
if(match == 0){ |
|
printf("Error in result line (Product with age): V%d is missing in result: %s according to model=%s (Tvarsel[k2=%d]=%d)\n",Tvar[k1], resultline, model, k2, Tvarsel[k2]); |
|
fprintf(ficlog,"Error in result line (Product with age): V%d is missing in result: %s according to model=%s (Tvarsel[k2=%d]=%d)\n",Tvar[k1], resultline, model, k2, Tvarsel[k2]); |
|
return 1; |
|
} |
|
}else if(Typevar[k1]==2){ /* Product No age We want to get the position in the resultline of the product in the model line*/ |
|
/* resultmodel[nres][of such a Vn * Vm product k1] is not unique, so can't exist, we feed Tvard[k1][1] and [2] */ |
|
match=0; |
|
printf("Decoderesult very first Product Tvardk[k1=%d][1]=%d Tvardk[k1=%d][2]=%d V%d * V%d\n",k1,Tvardk[k1][1],k1,Tvardk[k1][2],Tvardk[k1][1],Tvardk[k1][2]); |
|
for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
if(Tvardk[k1][1]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
|
/* modelresult[k2]=k1; */ |
|
printf("Decoderesult first Product modelresult[k2=%d]=%d (k1) V%d * \n",k2,k1,Tvarsel[k2]); |
|
match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
|
} |
|
} |
|
if(match == 0){ |
|
printf("Error in result line (Product without age first variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][1], resultline, model); |
|
fprintf(ficlog,"Error in result line (Product without age first variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][1], resultline, model); |
|
return 1; |
|
} |
|
match=0; |
|
for(k2=1; k2 <=j;k2++){/* Loop on resultline. In result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
|
if(Tvardk[k1][2]==Tvarsel[k2]) {/* Tvardk is coming from the model, Tvarsel from the result. Tvar[1]=5 == Tvarsel[2]=5 */ |
|
/* modelresult[k2]=k1;*/ |
|
printf("Decoderesult second Product modelresult[k2=%d]=%d (k1) * V%d \n ",k2,k1,Tvarsel[k2]); |
|
match=1; /* modelresult of k2 variable of resultline is identical to k1 variable of the model good */ |
|
break; |
|
} |
|
} |
|
if(match == 0){ |
|
printf("Error in result line (Product without age second variable): V%d is missing in result: %s according to model=%s\n",Tvardk[k1][2], resultline, model); |
|
fprintf(ficlog,"Error in result line (Product without age second variable): V%d is missing in result : %s according to model=%s\n",Tvardk[k1][2], resultline, model); |
|
return 1; |
|
} |
|
}/* End of testing */ |
|
}/* End loop cptcovt */ |
/* Checking for missing or useless values in comparison of current model needs */ |
/* Checking for missing or useless values in comparison of current model needs */ |
for(k2=1; k2 <=j;k2++){ /* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
/* Feeds resultmodel[nres][k1]=k2 for single covariate (k1) in the model equation */ |
|
for(k2=1; k2 <=j;k2++){ /* j or cptcovs is the number of single covariates used either in the model line as well as in the result line (dummy or quantitative) |
|
* Loop on resultline variables: result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
match=0; |
match=0; |
for(k1=1; k1<= cptcovt ;k1++){ /* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
for(k1=1; k1<= cptcovt ;k1++){ /* loop on model: model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
if(Typevar[k1]==0){ /* Single */ |
if(Typevar[k1]==0){ /* Single only */ |
if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ |
if(Tvar[k1]==Tvarsel[k2]) { /* Tvar[2]=4 == Tvarsel[1]=4 */ |
resultmodel[k1]=k2; /* resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ |
resultmodel[nres][k1]=k2; /* k1th position in the model equation corresponds to k2th position in the result line. resultmodel[2]=1 resultmodel[1]=2 resultmodel[3]=3 resultmodel[6]=4 resultmodel[9]=5 */ |
|
modelresult[nres][k2]=k1; /* k1th position in the model equation corresponds to k2th position in the result line. modelresult[1]=2 modelresult[2]=1 modelresult[3]=3 remodelresult[4]=6 modelresult[5]=9 */ |
++match; |
++match; |
} |
} |
} |
} |
} |
} |
if(match == 0){ |
if(match == 0){ |
printf("Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); |
printf("Error in result line: variable V%d is missing in model; result: %s, model=%s\n",Tvarsel[k2], resultline, model); |
fprintf(ficlog,"Error in result line: %d value missing; result: %s, model=%s\n",k1, resultline, model); |
fprintf(ficlog,"Error in result line: variable V%d is missing in model; result: %s, model=%s\n",Tvarsel[k2], resultline, model); |
return 1; |
return 1; |
}else if(match > 1){ |
}else if(match > 1){ |
printf("Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); |
printf("Error in result line: %d doubled; result: %s, model=%s\n",k2, resultline, model); |
Line 9737 int decoderesult ( char resultline[], in
|
Line 10455 int decoderesult ( char resultline[], in
|
return 1; |
return 1; |
} |
} |
} |
} |
|
/* cptcovres=j /\* Number of variables in the resultline is equal to cptcovs and thus useless *\/ */ |
/* We need to deduce which combination number is chosen and save quantitative values */ |
/* We need to deduce which combination number is chosen and save quantitative values */ |
/* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
/* model line V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
/* result line V4=1 V5=25.1 V3=0 V2=8 V1=1 */ |
/* nres=1st result line: V4=1 V5=25.1 V3=0 V2=8 V1=1 */ |
/* should give a combination of dummy V4=1, V3=0, V1=1 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 5 + (1offset) = 6*/ |
/* should correspond to the combination 6 of dummy: V4=1, V3=0, V1=1 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 1*1 + 0*2 + 1*4 = 5 + (1offset) = 6*/ |
/* result line V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
/* nres=2nd result line: V4=1 V5=24.1 V3=1 V2=8 V1=0 */ |
/* should give a combination of dummy V4=1, V3=1, V1=0 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 3 + (1offset) = 4*/ |
/* should give a combination of dummy V4=1, V3=1, V1=0 => V4*2**(0) + V3*2**(1) + V1*2**(2) = 3 + (1offset) = 4*/ |
/* 1 0 0 0 */ |
/* 1 0 0 0 */ |
/* 2 1 0 0 */ |
/* 2 1 0 0 */ |
/* 3 0 1 0 */ |
/* 3 0 1 0 */ |
/* 4 1 1 0 */ /* V4=1, V3=1, V1=0 */ |
/* 4 1 1 0 */ /* V4=1, V3=1, V1=0 (nres=2)*/ |
/* 5 0 0 1 */ |
/* 5 0 0 1 */ |
/* 6 1 0 1 */ /* V4=1, V3=0, V1=1 */ |
/* 6 1 0 1 */ /* V4=1, V3=0, V1=1 (nres=1)*/ |
/* 7 0 1 1 */ |
/* 7 0 1 1 */ |
/* 8 1 1 1 */ |
/* 8 1 1 1 */ |
/* V(Tvresult)=Tresult V4=1 V3=0 V1=1 Tresult[nres=1][2]=0 */ |
/* V(Tvresult)=Tresult V4=1 V3=0 V1=1 Tresult[nres=1][2]=0 */ |
/* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ |
/* V(Tvqresult)=Tqresult V5=25.1 V2=8 Tqresult[nres=1][1]=25.1 */ |
/* V5*age V5 known which value for nres? */ |
/* V5*age V5 known which value for nres? */ |
/* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ |
/* Tqinvresult[2]=8 Tqinvresult[1]=25.1 */ |
for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* model line */ |
for(k1=1, k=0, k4=0, k4q=0; k1 <=cptcovt;k1++){ /* cptcovt number of covariates (excluding 1 and age or age*age) in the MODEL equation. |
if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Single dummy */ |
* loop on position k1 in the MODEL LINE */ |
k3= resultmodel[k1]; /* resultmodel[2(V4)] = 1=k3 */ |
/* k counting number of combination of single dummies in the equation model */ |
k2=(int)Tvarsel[k3]; /* Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 */ |
/* k4 counting single dummies in the equation model */ |
k+=Tvalsel[k3]*pow(2,k4); /* Tvalsel[1]=1 */ |
/* k4q counting single quantitatives in the equation model */ |
Tresult[nres][k4+1]=Tvalsel[k3];/* Tresult[nres][1]=1(V4=1) Tresult[nres][2]=0(V3=0) */ |
if( Dummy[k1]==0 && Typevar[k1]==0 ){ /* Dummy and Single, k1 is sorting according to MODEL, but k3 to resultline */ |
Tvresult[nres][k4+1]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ |
/* k4+1= (not always if quant in model) position in the resultline V(Tvarsel)=Tvalsel=Tresult[nres][pos](value); V(Tvresult[nres][pos] (variable): V(variable)=value) */ |
|
/* modelresult[k3]=k1: k3th position in the result line corresponds to the k1 position in the model line (doesn't work with products)*/ |
|
/* Value in the (current nres) resultline of the variable at the k1th position in the model equation resultmodel[nres][k1]= k3 */ |
|
/* resultmodel[nres][k1]=k3: k1th position in the model correspond to the k3 position in the resultline */ |
|
/* k3 is the position in the nres result line of the k1th variable of the model equation */ |
|
/* Tvarsel[k3]: Name of the variable at the k3th position in the result line. */ |
|
/* Tvalsel[k3]: Value of the variable at the k3th position in the result line. */ |
|
/* Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline */ |
|
/* Tvresult[nres][result_position]= name of the dummy variable at the result_position in the nres resultline */ |
|
/* Tinvresult[nres][Name of a dummy variable]= value of the variable in the result line */ |
|
/* TinvDoQresult[nres][Name of a Dummy or Q variable]= value of the variable in the result line */ |
|
k3= resultmodel[nres][k1]; /* From position k1 in model get position k3 in result line */ |
|
/* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ |
|
k2=(int)Tvarsel[k3]; /* from position k3 in resultline get name k2: nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ |
|
k+=Tvalsel[k3]*pow(2,k4); /* nres=1 k1=2 Tvalsel[1]=1 (V4=1); k1=3 k3=2 Tvalsel[2]=0 (V3=0) */ |
|
TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][Name]=Value; stores the value into the name of the variable. */ |
|
/* Tinvresult[nres][4]=1 */ |
|
/* Tresult[nres][k4+1]=Tvalsel[k3];/\* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) *\/ */ |
|
Tresult[nres][k3]=Tvalsel[k3];/* Tresult[nres=2][1]=1(V4=1) Tresult[nres=2][2]=0(V3=0) */ |
|
/* Tvresult[nres][k4+1]=(int)Tvarsel[k3];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ |
|
Tvresult[nres][k3]=(int)Tvarsel[k3];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ |
Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ |
Tinvresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* Tinvresult[nres][4]=1 */ |
printf("Decoderesult Dummy k=%d, V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k2, k3, (int)Tvalsel[k3], k4); |
precov[nres][k1]=Tvalsel[k3]; /* Value from resultline of the variable at the k1 position in the model */ |
|
printf("Decoderesult Dummy k=%d, k1=%d precov[nres=%d][k1=%d]=%.f V(k2=V%d)= Tvalsel[%d]=%d, 2**(%d)\n",k, k1, nres, k1,precov[nres][k1], k2, k3, (int)Tvalsel[k3], k4); |
k4++;; |
k4++;; |
} else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Single quantitative */ |
}else if( Dummy[k1]==1 && Typevar[k1]==0 ){ /* Quantitative and single */ |
k3q= resultmodel[k1]; /* resultmodel[2] = 1=k3 */ |
/* Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ |
k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 */ |
/* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline */ |
Tqresult[nres][k4q+1]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ |
/* Tqinvresult[nres][Name of a quantitative variable]= value of the variable in the result line */ |
Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ |
k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 5 =k3q */ |
|
k2q=(int)Tvarsel[k3q]; /* Name of variable at k3q th position in the resultline */ |
|
/* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ |
|
/* Tqresult[nres][k4q+1]=Tvalsel[k3q]; /\* Tqresult[nres][1]=25.1 *\/ */ |
|
/* Tvresult[nres][k4q+1]=(int)Tvarsel[k3q];/\* Tvresult[nres][1]=4 Tvresult[nres][3]=1 *\/ */ |
|
/* Tvqresult[nres][k4q+1]=(int)Tvarsel[k3q]; /\* Tvqresult[nres][1]=5 *\/ */ |
|
Tqresult[nres][k3q]=Tvalsel[k3q]; /* Tqresult[nres][1]=25.1 */ |
|
Tvresult[nres][k3q]=(int)Tvarsel[k3q];/* Tvresult[nres][1]=4 Tvresult[nres][3]=1 */ |
|
Tvqresult[nres][k3q]=(int)Tvarsel[k3q]; /* Tvqresult[nres][1]=5 */ |
Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
Tqinvresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
printf("Decoderesult Quantitative nres=%d, V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); |
TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* Tqinvresult[nres][5]=25.1 */ |
|
precov[nres][k1]=Tvalsel[k3q]; |
|
printf("Decoderesult Quantitative nres=%d,precov[nres=%d][k1=%d]=%.f V(k2q=V%d)= Tvalsel[%d]=%d, Tvarsel[%d]=%f\n",nres, nres, k1,precov[nres][k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); |
k4q++;; |
k4q++;; |
|
}else if( Dummy[k1]==2 ){ /* For dummy with age product */ |
|
/* Tvar[k1]; */ /* Age variable */ |
|
/* Wrong we want the value of variable name Tvar[k1] */ |
|
|
|
k3= resultmodel[nres][k1]; /* nres=1 k1=2 resultmodel[2(V4)] = 1=k3 ; k1=3 resultmodel[3(V3)] = 2=k3*/ |
|
k2=(int)Tvarsel[k3]; /* nres=1 k1=2=>k3=1 Tvarsel[resultmodel[2]]= Tvarsel[1] = 4=k2 (V4); k1=3=>k3=2 Tvarsel[2]=3 (V3)*/ |
|
TinvDoQresult[nres][(int)Tvarsel[k3]]=Tvalsel[k3]; /* TinvDoQresult[nres][4]=1 */ |
|
precov[nres][k1]=Tvalsel[k3]; |
|
printf("Decoderesult Dummy with age k=%d, k1=%d precov[nres=%d][k1=%d]=%.f Tvar[%d]=V%d k2=Tvarsel[%d]=%d Tvalsel[%d]=%d\n",k, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k3,(int)Tvarsel[k3], k3, (int)Tvalsel[k3]); |
|
}else if( Dummy[k1]==3 ){ /* For quant with age product */ |
|
k3q= resultmodel[nres][k1]; /* resultmodel[1(V5)] = 25.1=k3q */ |
|
k2q=(int)Tvarsel[k3q]; /* Tvarsel[resultmodel[1]]= Tvarsel[1] = 4=k2 */ |
|
TinvDoQresult[nres][(int)Tvarsel[k3q]]=Tvalsel[k3q]; /* TinvDoQresult[nres][5]=25.1 */ |
|
precov[nres][k1]=Tvalsel[k3q]; |
|
printf("Decoderesult Quantitative with age nres=%d, k1=%d, precov[nres=%d][k1=%d]=%f Tvar[%d]=V%d V(k2q=%d)= Tvarsel[%d]=%d, Tvalsel[%d]=%f\n",nres, k1, nres, k1,precov[nres][k1], k1, Tvar[k1], k2q, k3q, Tvarsel[k3q], k3q, Tvalsel[k3q]); |
|
}else if(Typevar[k1]==2 ){ /* For product quant or dummy (not with age) */ |
|
precov[nres][k1]=TinvDoQresult[nres][Tvardk[k1][1]] * TinvDoQresult[nres][Tvardk[k1][2]]; |
|
printf("Decoderesult Quantitative or Dummy (not with age) nres=%d k1=%d precov[nres=%d][k1=%d]=%.f V%d(=%.f) * V%d(=%.f) \n",nres, k1, nres, k1,precov[nres][k1], Tvardk[k1][1], TinvDoQresult[nres][Tvardk[k1][1]], Tvardk[k1][2], TinvDoQresult[nres][Tvardk[k1][2]]); |
|
}else{ |
|
printf("Error Decoderesult probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); |
|
fprintf(ficlog,"Error Decoderesult probably a product Dummy[%d]==%d && Typevar[%d]==%d\n", k1, Dummy[k1], k1, Typevar[k1]); |
} |
} |
} |
} |
|
|
TKresult[nres]=++k; /* Combination for the nresult and the model */ |
TKresult[nres]=++k; /* Number of combinations of dummies for the nresult and the model =Tvalsel[k3]*pow(2,k4) + 1*/ |
return (0); |
return (0); |
} |
} |
|
|
Line 9791 int decodemodel( char model[], int lasto
|
Line 10561 int decodemodel( char model[], int lasto
|
* - cptcovs number of simple covariates |
* - cptcovs number of simple covariates |
* - Tvar[k] is the id of the kth covariate Tvar[1]@12 {1, 2, 3, 8, 10, 11, 8, 3, 7, 8, 5, 6}, thus Tvar[5=V7*V8]=10 |
* - Tvar[k] is the id of the kth covariate Tvar[1]@12 {1, 2, 3, 8, 10, 11, 8, 3, 7, 8, 5, 6}, thus Tvar[5=V7*V8]=10 |
* which is a new column after the 9 (ncovcol) variables. |
* which is a new column after the 9 (ncovcol) variables. |
* - if k is a product Vn*Vm covar[k][i] is filled with correct values for each individual |
* - if k is a product Vn*Vm, covar[k][i] is filled with correct values for each individual |
* - Tprod[l] gives the kth covariates of the product Vn*Vm l=1 to cptcovprod-cptcovage |
* - Tprod[l] gives the kth covariates of the product Vn*Vm l=1 to cptcovprod-cptcovage |
* Tprod[1]@2 {5, 6}: position of first product V7*V8 is 5, and second V5*V6 is 6. |
* Tprod[1]@2 {5, 6}: position of first product V7*V8 is 5, and second V5*V6 is 6. |
* - Tvard[k] p Tvard[1][1]@4 {7, 8, 5, 6} for V7*V8 and V5*V6 . |
* - Tvard[k] p Tvard[1][1]@4 {7, 8, 5, 6} for V7*V8 and V5*V6 . |
*/ |
*/ |
|
/* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1, Tage[1]=2 */ |
{ |
{ |
int i, j, k, ks, v; |
int i, j, k, ks, v; |
int j1, k1, k2, k3, k4; |
int j1, k1, k2, k3, k4; |
Line 9873 int decodemodel( char model[], int lasto
|
Line 10644 int decodemodel( char model[], int lasto
|
* Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 d1 d1 d2 d2 |
* Model V2 + V1 + V3*age + V3 + V5*V6 + V7*V8 + V8*age + V8 d1 d1 d2 d2 |
* k= 1 2 3 4 5 6 7 8 9 10 11 12 |
* k= 1 2 3 4 5 6 7 8 9 10 11 12 |
* Tvar[k]= 2 1 3 3 10 11 8 8 5 6 7 8 |
* Tvar[k]= 2 1 3 3 10 11 8 8 5 6 7 8 |
* p Tvar[1]@12={2, 1, 3, 3, 11, 10, 8, 8, 7, 8, 5, 6} |
* p Tvar[1]@12={2, 1, 3, 3, 11, 10, 8, 8, 7, 8, 5, 6} |
* p Tprod[1]@2={ 6, 5} |
* p Tprod[1]@2={ 6, 5} |
*p Tvard[1][1]@4= {7, 8, 5, 6} |
*p Tvard[1][1]@4= {7, 8, 5, 6} |
* covar[k][i]= V2 V1 ? V3 V5*V6? V7*V8? ? V8 |
* covar[k][i]= V2 V1 ? V3 V5*V6? V7*V8? ? V8 |
* cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*cov[2]; |
* cov[Tage[kk]+2]=covar[Tvar[Tage[kk]]][i]*cov[2]; |
*How to reorganize? |
*How to reorganize? Tvars(orted) |
* Model V1 + V2 + V3 + V8 + V5*V6 + V7*V8 + V3*age + V8*age |
* Model V1 + V2 + V3 + V8 + V5*V6 + V7*V8 + V3*age + V8*age |
* Tvars {2, 1, 3, 3, 11, 10, 8, 8, 7, 8, 5, 6} |
* Tvars {2, 1, 3, 3, 11, 10, 8, 8, 7, 8, 5, 6} |
* {2, 1, 4, 8, 5, 6, 3, 7} |
* {2, 1, 4, 8, 5, 6, 3, 7} |
Line 9903 int decodemodel( char model[], int lasto
|
Line 10674 int decodemodel( char model[], int lasto
|
Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0; |
Tvar[k]=0; Tprod[k]=0; Tposprod[k]=0; |
} |
} |
cptcovage=0; |
cptcovage=0; |
for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model */ |
for(k=1; k<=cptcovt;k++){ /* Loop on total covariates of the model line */ |
cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' |
cutl(stra,strb,modelsav,'+'); /* keeps in strb after the first '+' cutl from left to right |
modelsav==V2+V1+V4+V3*age strb=V3*age stra=V2+V1+V4 */ |
modelsav==V2+V1+V5*age+V4+V3*age strb=V3*age stra=V2+V1V5*age+V4 */ /* <model> "V5+V4+V3+V4*V3+V5*age+V1*age+V1" strb="V5" stra="V4+V3+V4*V3+V5*age+V1*age+V1" */ |
if (nbocc(modelsav,'+')==0) strcpy(strb,modelsav); /* and analyzes it */ |
if (nbocc(modelsav,'+')==0) |
|
strcpy(strb,modelsav); /* and analyzes it */ |
/* printf("i=%d a=%s b=%s sav=%s\n",i, stra,strb,modelsav);*/ |
/* printf("i=%d a=%s b=%s sav=%s\n",i, stra,strb,modelsav);*/ |
/*scanf("%d",i);*/ |
/*scanf("%d",i);*/ |
if (strchr(strb,'*')) { /**< Model includes a product V2+V1+V4+V3*age strb=V3*age */ |
if (strchr(strb,'*')) { /**< Model includes a product V2+V1+V5*age+ V4+V3*age strb=V3*age */ |
cutl(strc,strd,strb,'*'); /**< strd*strc Vm*Vn: strb=V3*age(input) strc=age strd=V3 ; V3*V2 strc=V2, strd=V3 */ |
cutl(strc,strd,strb,'*'); /**< k=1 strd*strc Vm*Vn: strb=V3*age(input) strc=age strd=V3 ; V3*V2 strc=V2, strd=V3 */ |
if (strcmp(strc,"age")==0) { /**< Model includes age: Vn*age */ |
if (strcmp(strc,"age")==0) { /**< Model includes age: Vn*age */ |
/* covar is not filled and then is empty */ |
/* covar is not filled and then is empty */ |
cptcovprod--; |
cptcovprod--; |
cutl(stre,strb,strd,'V'); /* strd=V3(input): stre="3" */ |
cutl(stre,strb,strd,'V'); /* strd=V3(input): stre="3" */ |
Tvar[k]=atoi(stre); /* V2+V1+V4+V3*age Tvar[4]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1 */ |
Tvar[k]=atoi(stre); /* V2+V1+V5*age+V4+V3*age Tvar[5]=3 ; V1+V2*age Tvar[2]=2; V1+V1*age Tvar[2]=1 */ |
Typevar[k]=1; /* 1 for age product */ |
Typevar[k]=1; /* 1 for age product */ |
cptcovage++; /* Sums the number of covariates which include age as a product */ |
cptcovage++; /* Counts the number of covariates which include age as a product */ |
Tage[cptcovage]=k; /* Tvar[4]=3, Tage[1] = 4 or V1+V1*age Tvar[2]=1, Tage[1]=2 */ |
Tage[cptcovage]=k; /* V2+V1+V4+V3*age Tvar[4]=3, Tage[1] = 4 or V1+V1*age Tvar[2]=1, Tage[1]=2 */ |
/*printf("stre=%s ", stre);*/ |
/*printf("stre=%s ", stre);*/ |
} else if (strcmp(strd,"age")==0) { /* or age*Vn */ |
} else if (strcmp(strd,"age")==0) { /* or age*Vn */ |
cptcovprod--; |
cptcovprod--; |
Line 9935 int decodemodel( char model[], int lasto
|
Line 10707 int decodemodel( char model[], int lasto
|
Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* For model-covariate k tells which data-covariate to use but |
Tvar[k]=ncovcol+nqv+ntv+nqtv+k1; /* For model-covariate k tells which data-covariate to use but |
because this model-covariate is a construction we invent a new column |
because this model-covariate is a construction we invent a new column |
which is after existing variables ncovcol+nqv+ntv+nqtv + k1 |
which is after existing variables ncovcol+nqv+ntv+nqtv + k1 |
If already ncovcol=4 and model=V2+V1+V1*V4+age*V3+V3*V2 |
If already ncovcol=4 and model=V2 + V1 +V1*V4 +age*V3 +V3*V2 |
Tvar[3=V1*V4]=4+1 Tvar[5=V3*V2]=4 + 2= 6, etc */ |
thus after V4 we invent V5 and V6 because age*V3 will be computed in 4 |
|
Tvar[3=V1*V4]=4+1=5 Tvar[5=V3*V2]=4 + 2= 6, Tvar[4=age*V3]=4 etc */ |
Typevar[k]=2; /* 2 for double fixed dummy covariates */ |
Typevar[k]=2; /* 2 for double fixed dummy covariates */ |
cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ |
cutl(strc,strb,strd,'V'); /* strd was Vm, strc is m */ |
Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ |
Tprod[k1]=k; /* Tprod[1]=3(=V1*V4) for V2+V1+V1*V4+age*V3+V3*V2 */ |
Tposprod[k]=k1; /* Tpsprod[3]=1, Tposprod[2]=5 */ |
Tposprod[k]=k1; /* Tposprod[3]=1, Tposprod[2]=5 */ |
Tvard[k1][1] =atoi(strc); /* m 1 for V1*/ |
Tvard[k1][1] =atoi(strc); /* m 1 for V1*/ |
|
Tvardk[k][1] =atoi(strc); /* m 1 for V1*/ |
Tvard[k1][2] =atoi(stre); /* n 4 for V4*/ |
Tvard[k1][2] =atoi(stre); /* n 4 for V4*/ |
|
Tvardk[k][2] =atoi(stre); /* n 4 for V4*/ |
k2=k2+2; /* k2 is initialize to -1, We want to store the n and m in Vn*Vm at the end of Tvar */ |
k2=k2+2; /* k2 is initialize to -1, We want to store the n and m in Vn*Vm at the end of Tvar */ |
/* Tvar[cptcovt+k2]=Tvard[k1][1]; /\* Tvar[(cptcovt=4+k2=1)=5]= 1 (V1) *\/ */ |
/* Tvar[cptcovt+k2]=Tvard[k1][1]; /\* Tvar[(cptcovt=4+k2=1)=5]= 1 (V1) *\/ */ |
/* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ |
/* Tvar[cptcovt+k2+1]=Tvard[k1][2]; /\* Tvar[(cptcovt=4+(k2=1)+1)=6]= 4 (V4) *\/ */ |
Line 9955 int decodemodel( char model[], int lasto
|
Line 10730 int decodemodel( char model[], int lasto
|
} |
} |
} /* End age is not in the model */ |
} /* End age is not in the model */ |
} /* End if model includes a product */ |
} /* End if model includes a product */ |
else { /* no more sum */ |
else { /* not a product */ |
/*printf("d=%s c=%s b=%s\n", strd,strc,strb);*/ |
/*printf("d=%s c=%s b=%s\n", strd,strc,strb);*/ |
/* scanf("%d",i);*/ |
/* scanf("%d",i);*/ |
cutl(strd,strc,strb,'V'); |
cutl(strd,strc,strb,'V'); |
Line 9986 int decodemodel( char model[], int lasto
|
Line 10761 int decodemodel( char model[], int lasto
|
model= V5 + V4 +V3 + V4*V3 + V5*age + V2 + V1*V2 + V1*age + V5*age, V1 is not used saving its place |
model= V5 + V4 +V3 + V4*V3 + V5*age + V2 + V1*V2 + V1*age + V5*age, V1 is not used saving its place |
k = 1 2 3 4 5 6 7 8 9 |
k = 1 2 3 4 5 6 7 8 9 |
Tvar[k]= 5 4 3 1+1+2+1+1=6 5 2 7 1 5 |
Tvar[k]= 5 4 3 1+1+2+1+1=6 5 2 7 1 5 |
Typevar[k]= 0 0 0 2 1 0 2 1 1 |
Typevar[k]= 0 0 0 2 1 0 2 1 0 |
Fixed[k] 1 1 1 1 3 0 0 or 2 2 3 |
Fixed[k] 1 1 1 1 3 0 0 or 2 2 3 |
Dummy[k] 1 0 0 0 3 1 1 2 3 |
Dummy[k] 1 0 0 0 3 1 1 2 3 |
Tmodelind[combination of covar]=k; |
Tmodelind[combination of covar]=k; |
Line 9995 int decodemodel( char model[], int lasto
|
Line 10770 int decodemodel( char model[], int lasto
|
/* If Tvar[k] >ncovcol it is a product */ |
/* If Tvar[k] >ncovcol it is a product */ |
/* Tvar[k] is the value n of Vn with n varying for 1 to nvcol, or p Vp=Vn*Vm for product */ |
/* Tvar[k] is the value n of Vn with n varying for 1 to nvcol, or p Vp=Vn*Vm for product */ |
/* Computing effective variables, ie used by the model, that is from the cptcovt variables */ |
/* Computing effective variables, ie used by the model, that is from the cptcovt variables */ |
printf("Model=%s\n\ |
printf("Model=1+age+%s\n\ |
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); |
Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); |
fprintf(ficlog,"Model=%s\n\ |
fprintf(ficlog,"Model=1+age+%s\n\ |
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
Typevar: 0 for simple covariate (dummy, quantitative, fixed or varying), 1 for age product, 2 for product \n\ |
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
Fixed[k] 0=fixed (product or simple), 1 varying, 2 fixed with age product, 3 varying with age product \n\ |
Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); |
Dummy[k] 0=dummy (0 1), 1 quantitative (single or product without age), 2 dummy with age product, 3 quant with age product\n",model); |
Line 10014 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 10789 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
TvarsD[nsd]=Tvar[k]; |
TvarsD[nsd]=Tvar[k]; |
TvarsDind[nsd]=k; |
TvarsDind[nsd]=k; |
|
TnsdVar[Tvar[k]]=nsd; |
TvarF[ncovf]=Tvar[k]; |
TvarF[ncovf]=Tvar[k]; |
TvarFind[ncovf]=k; |
TvarFind[ncovf]=k; |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
Line 10025 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 10801 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
ncovf++; |
ncovf++; |
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
TvarF[ncovf]=Tvar[k]; |
TvarF[ncovf]=Tvar[k]; |
|
/* TnsdVar[Tvar[k]]=nsd; */ /* To be done */ |
TvarFind[ncovf]=k; |
TvarFind[ncovf]=k; |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFD[ncoveff]=Tvar[k]; /* TvarFD[1]=V1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
TvarFDind[ncoveff]=k; /* TvarFDind[1]=9 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ |
Line 10035 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 10812 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
modell[k].maintype= FTYPE; |
modell[k].maintype= FTYPE; |
modell[k].subtype= FQ; |
modell[k].subtype= FQ; |
nsq++; |
nsq++; |
TvarsQ[nsq]=Tvar[k]; |
TvarsQ[nsq]=Tvar[k]; /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary see below */ |
TvarsQind[nsq]=k; |
TvarsQind[nsq]=k; /* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
ncovf++; |
ncovf++; |
TvarF[ncovf]=Tvar[k]; |
TvarF[ncovf]=Tvar[k]; |
TvarFind[ncovf]=k; |
TvarFind[ncovf]=k; |
Line 10051 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 10828 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
nsd++; |
nsd++; |
TvarsD[nsd]=Tvar[k]; |
TvarsD[nsd]=Tvar[k]; |
TvarsDind[nsd]=k; |
TvarsDind[nsd]=k; |
|
TnsdVar[Tvar[k]]=nsd; /* To be verified */ |
ncovv++; /* Only simple time varying variables */ |
ncovv++; /* Only simple time varying variables */ |
TvarV[ncovv]=Tvar[k]; |
TvarV[ncovv]=Tvar[k]; |
TvarVind[ncovv]=k; /* TvarVind[2]=2 TvarVind[3]=3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
TvarVind[ncovv]=k; /* TvarVind[2]=2 TvarVind[3]=3 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
Line 10066 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
Line 10844 Dummy[k] 0=dummy (0 1), 1 quantitative (
|
modell[k].subtype= VQ; |
modell[k].subtype= VQ; |
ncovv++; /* Only simple time varying variables */ |
ncovv++; /* Only simple time varying variables */ |
nsq++; |
nsq++; |
TvarsQ[nsq]=Tvar[k]; |
TvarsQ[nsq]=Tvar[k]; /* k=1 Tvar=5 nsq=1 TvarsQ[1]=5 */ /* Gives the variable name (extended to products) of first nsq simple quantitative covariates (fixed or time vary here) */ |
TvarsQind[nsq]=k; |
TvarsQind[nsq]=k; /* For single quantitative covariate gives the model position of each single quantitative covariate *//* Gives the position in the model equation of the first nsq simple quantitative covariates (fixed or time vary) */ |
TvarV[ncovv]=Tvar[k]; |
TvarV[ncovv]=Tvar[k]; |
TvarVind[ncovv]=k; /* TvarVind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
TvarVind[ncovv]=k; /* TvarVind[1]=1 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Any time varying singele */ |
TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
TvarVQ[nqtveff]=Tvar[k]; /* TvarVQ[1]=V5 in V5+V4+V3+V4*V3+V5*age+V2+V1*V2+V1*age+V1 */ /* Only simple time varying quantitative variable */ |
Line 10593 void syscompilerinfo(int logged)
|
Line 11371 void syscompilerinfo(int logged)
|
|
|
int prevalence_limit(double *p, double **prlim, double ageminpar, double agemaxpar, double ftolpl, int *ncvyearp){ |
int prevalence_limit(double *p, double **prlim, double ageminpar, double agemaxpar, double ftolpl, int *ncvyearp){ |
/*--------------- Prevalence limit (forward period or forward stable prevalence) --------------*/ |
/*--------------- Prevalence limit (forward period or forward stable prevalence) --------------*/ |
|
/* Computes the prevalence limit for each combination of the dummy covariates */ |
int i, j, k, i1, k4=0, nres=0 ; |
int i, j, k, i1, k4=0, nres=0 ; |
/* double ftolpl = 1.e-10; */ |
/* double ftolpl = 1.e-10; */ |
double age, agebase, agelim; |
double age, agebase, agelim; |
Line 10631 int prevalence_limit(double *p, double *
|
Line 11410 int prevalence_limit(double *p, double *
|
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
//for(cptcod=1;cptcod<=ncodemax[cptcov];cptcod++){ |
/* k=k+1; */ |
/* k=k+1; */ |
/* to clean */ |
/* to clean */ |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
/*printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));*/ |
fprintf(ficrespl,"#******"); |
fprintf(ficrespl,"#******"); |
printf("#******"); |
printf("#******"); |
fprintf(ficlog,"#******"); |
fprintf(ficlog,"#******"); |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); /* Here problem for varying dummy*/ |
/* fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,Tvaraff[j])]); /\* Here problem for varying dummy*\/ */ |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespl," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /* Here problem for varying dummy*/ |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
|
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
Line 10657 int prevalence_limit(double *p, double *
|
Line 11437 int prevalence_limit(double *p, double *
|
|
|
fprintf(ficrespl,"#Age "); |
fprintf(ficrespl,"#Age "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespl,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); |
for(i=1; i<=nlstate;i++) fprintf(ficrespl," %d-%d ",i,i); |
fprintf(ficrespl,"Total Years_to_converge\n"); |
fprintf(ficrespl,"Total Years_to_converge\n"); |
Line 10667 int prevalence_limit(double *p, double *
|
Line 11447 int prevalence_limit(double *p, double *
|
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyearp, k, nres); |
prevalim(prlim, nlstate, p, age, oldm, savm, ftolpl, ncvyearp, k, nres); |
fprintf(ficrespl,"%.0f ",age ); |
fprintf(ficrespl,"%.0f ",age ); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespl,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespl,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
tot=0.; |
tot=0.; |
for(i=1; i<=nlstate;i++){ |
for(i=1; i<=nlstate;i++){ |
tot += prlim[i][i]; |
tot += prlim[i][i]; |
Line 10722 int back_prevalence_limit(double *p, dou
|
Line 11502 int back_prevalence_limit(double *p, dou
|
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
if(i1 != 1 && TKresult[nres]!= k) |
if(i1 != 1 && TKresult[nres]!= k) |
continue; |
continue; |
//printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov)); |
/*printf("cptcov=%d cptcod=%d codtab=%d\n",cptcov, cptcod,codtabm(cptcod,cptcov));*/ |
fprintf(ficresplb,"#******"); |
fprintf(ficresplb,"#******"); |
printf("#******"); |
printf("#******"); |
fprintf(ficlog,"#******"); |
fprintf(ficlog,"#******"); |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
for(j=1;j<=cptcoveff ;j++) {/* all covariates */ |
fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf(" V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficlog," V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresplb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
} |
} |
fprintf(ficresplb,"******\n"); |
fprintf(ficresplb,"******\n"); |
printf("******\n"); |
printf("******\n"); |
Line 10748 int back_prevalence_limit(double *p, dou
|
Line 11528 int back_prevalence_limit(double *p, dou
|
|
|
fprintf(ficresplb,"#Age "); |
fprintf(ficresplb,"#Age "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb,"V%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for(i=1; i<=nlstate;i++) fprintf(ficresplb," %d-%d ",i,i); |
for(i=1; i<=nlstate;i++) fprintf(ficresplb," %d-%d ",i,i); |
fprintf(ficresplb,"Total Years_to_converge\n"); |
fprintf(ficresplb,"Total Years_to_converge\n"); |
Line 10772 int back_prevalence_limit(double *p, dou
|
Line 11552 int back_prevalence_limit(double *p, dou
|
} |
} |
fprintf(ficresplb,"%.0f ",age ); |
fprintf(ficresplb,"%.0f ",age ); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresplb,"%d %d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
tot=0.; |
tot=0.; |
for(i=1; i<=nlstate;i++){ |
for(i=1; i<=nlstate;i++){ |
tot += bprlim[i][i]; |
tot += bprlim[i][i]; |
Line 10830 int hPijx(double *p, int bage, int fage)
|
Line 11610 int hPijx(double *p, int bage, int fage)
|
continue; |
continue; |
fprintf(ficrespij,"\n#****** "); |
fprintf(ficrespij,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
for (k4=1; k4<= nsq; k4++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
printf(" V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
fprintf(ficrespij," V%d=%f ",Tvqresult[nres][k4],Tqresult[nres][k4]); |
Line 10909 int hPijx(double *p, int bage, int fage)
|
Line 11689 int hPijx(double *p, int bage, int fage)
|
continue; |
continue; |
fprintf(ficrespijb,"\n#****** "); |
fprintf(ficrespijb,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficrespijb,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficrespijb," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); |
} |
} |
fprintf(ficrespijb,"******\n"); |
fprintf(ficrespijb,"******\n"); |
if(invalidvarcomb[k]){ /* Is it necessary here? */ |
if(invalidvarcomb[k]){ /* Is it necessary here? */ |
Line 10932 int hPijx(double *p, int bage, int fage)
|
Line 11712 int hPijx(double *p, int bage, int fage)
|
|
|
/* oldm=oldms;savm=savms; */ |
/* oldm=oldms;savm=savms; */ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,nlstate,stepm,oldm,savm, k); */ |
hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k, nres); |
hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm, k, nres);/* Bug valgrind */ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ |
/* hbxij(p3mat,nhstepm,agedeb,hstepm,p,prevacurrent,nlstate,stepm,oldm,savm, dnewm, doldm, dsavm, k); */ |
fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j="); |
fprintf(ficrespijb,"# Cov Agex agex-h hbijx with i,j="); |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
Line 10945 int hPijx(double *p, int bage, int fage)
|
Line 11725 int hPijx(double *p, int bage, int fage)
|
/* fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); */ |
/* fprintf(ficrespijb,"%d %3.f %3.f",k, agedeb, agedeb + h*hstepm/YEARM*stepm ); */ |
for(i=1; i<=nlstate;i++) |
for(i=1; i<=nlstate;i++) |
for(j=1; j<=nlstate+ndeath;j++) |
for(j=1; j<=nlstate+ndeath;j++) |
fprintf(ficrespijb," %.5f", p3mat[i][j][h]); |
fprintf(ficrespijb," %.5f", p3mat[i][j][h]);/* Bug valgrind */ |
fprintf(ficrespijb,"\n"); |
fprintf(ficrespijb,"\n"); |
} |
} |
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
free_ma3x(p3mat,1,nlstate+ndeath,1, nlstate+ndeath, 0,nhstepm); |
Line 10998 int main(int argc, char *argv[])
|
Line 11778 int main(int argc, char *argv[])
|
double dum=0.; /* Dummy variable */ |
double dum=0.; /* Dummy variable */ |
double ***p3mat; |
double ***p3mat; |
/* double ***mobaverage; */ |
/* double ***mobaverage; */ |
|
double wald; |
|
|
char line[MAXLINE]; |
char line[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE]; |
|
|
char modeltemp[MAXLINE]; |
char modeltemp[MAXLINE]; |
char resultline[MAXLINE]; |
char resultline[MAXLINE], resultlineori[MAXLINE]; |
|
|
char pathr[MAXLINE], pathimach[MAXLINE]; |
char pathr[MAXLINE], pathimach[MAXLINE]; |
char *tok, *val; /* pathtot */ |
char *tok, *val; /* pathtot */ |
int firstobs=1, lastobs=10; /* nobs = lastobs-firstobs declared globally ;*/ |
/* 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 11034 int main(int argc, char *argv[])
|
Line 11815 int main(int argc, char *argv[])
|
double ftolpl=FTOL; |
double ftolpl=FTOL; |
double **prlim; |
double **prlim; |
double **bprlim; |
double **bprlim; |
double ***param; /* Matrix of parameters */ |
double ***param; /* Matrix of parameters, param[i][j][k] param=ma3x(1,nlstate,1,nlstate+ndeath-1,1,ncovmodel) |
|
state of origin, state of destination including death, for each covariate: constante, age, and V1 V2 etc. */ |
double ***paramstart; /* Matrix of starting parameter values */ |
double ***paramstart; /* Matrix of starting parameter values */ |
double *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */ |
double *p, *pstart; /* p=param[1][1] pstart is for starting values guessed by freqsummary */ |
double **matcov; /* Matrix of covariance */ |
double **matcov; /* Matrix of covariance */ |
Line 11628 Please run with mle=-1 to get a correct
|
Line 12410 Please run with mle=-1 to get a correct
|
} |
} |
mint=matrix(1,maxwav,firstobs,lastobs); |
mint=matrix(1,maxwav,firstobs,lastobs); |
anint=matrix(1,maxwav,firstobs,lastobs); |
anint=matrix(1,maxwav,firstobs,lastobs); |
s=imatrix(1,maxwav+1,firstobs,lastobs); /* 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 */ |
|
printf("BUG ncovmodel=%d NCOVMAX=%d 2**ncovmodel=%f BUG\n",ncovmodel,NCOVMAX,pow(2,ncovmodel)); |
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 11647 Please run with mle=-1 to get a correct
|
Line 12430 Please run with mle=-1 to get a correct
|
|
|
Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ |
Tvar=ivector(1,NCOVMAX); /* Was 15 changed to NCOVMAX. */ |
TvarsDind=ivector(1,NCOVMAX); /* */ |
TvarsDind=ivector(1,NCOVMAX); /* */ |
|
TnsdVar=ivector(1,NCOVMAX); /* */ |
TvarsD=ivector(1,NCOVMAX); /* */ |
TvarsD=ivector(1,NCOVMAX); /* */ |
TvarsQind=ivector(1,NCOVMAX); /* */ |
TvarsQind=ivector(1,NCOVMAX); /* */ |
TvarsQ=ivector(1,NCOVMAX); /* */ |
TvarsQ=ivector(1,NCOVMAX); /* */ |
Line 11689 Please run with mle=-1 to get a correct
|
Line 12473 Please run with mle=-1 to get a correct
|
Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1] and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm |
Tvard=imatrix(1,NCOVMAX,1,2); /* n=Tvard[k1][1] and m=Tvard[k1][2] gives the couple n,m of the k1 th product Vn*Vm |
* For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd. |
* For V3*V2 (in V2+V1+V1*V4+age*V3+V3*V2), V3*V2 position is 2nd. |
* Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */ |
* Tvard[k1=2][1]=3 (V3) Tvard[k1=2][2]=2(V2) */ |
|
Tvardk=imatrix(1,NCOVMAX,1,2); |
Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age |
Tage=ivector(1,NCOVMAX); /* Gives the covariate id of covariates associated with age: V2 + V1 + age*V4 + V3*age |
4 covariates (3 plus signs) |
4 covariates (3 plus signs) |
Tage[1=V3*age]= 4; Tage[2=age*V4] = 3 |
Tage[1=V3*age]= 4; Tage[2=age*V4] = 3 |
*/ |
*/ |
|
for(i=1;i<NCOVMAX;i++) |
|
Tage[i]=0; |
Tmodelind=ivector(1,NCOVMAX);/** gives the k model position of an |
Tmodelind=ivector(1,NCOVMAX);/** gives the k model position of an |
* individual dummy, fixed or varying: |
* individual dummy, fixed or varying: |
* Tmodelind[Tvaraff[3]]=9,Tvaraff[1]@9={4, |
* Tmodelind[Tvaraff[3]]=9,Tvaraff[1]@9={4, |
Line 11796 Please run with mle=-1 to get a correct
|
Line 12583 Please run with mle=-1 to get a correct
|
* For k=4 covariates, h goes from 1 to m=2**k |
* For k=4 covariates, h goes from 1 to m=2**k |
* codtabm(h,k)= (1 & (h-1) >> (k-1)) + 1; |
* codtabm(h,k)= (1 & (h-1) >> (k-1)) + 1; |
* #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 |
* #define codtabm(h,k) (1 & (h-1) >> (k-1))+1 |
* h\k 1 2 3 4 |
* h\k 1 2 3 4 * h-1\k-1 4 3 2 1 |
*______________________________ |
*______________________________ *______________________ |
* 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 * 0 0 0 0 0 |
* 2 2 1 1 1 |
* 2 2 1 1 1 * 1 0 0 0 1 |
* 3 i=2 1 2 1 1 |
* 3 i=2 1 2 1 1 * 2 0 0 1 0 |
* 4 2 2 1 1 |
* 4 2 2 1 1 * 3 0 0 1 1 |
* 5 i=3 1 i=2 1 2 1 |
* 5 i=3 1 i=2 1 2 1 * 4 0 1 0 0 |
* 6 2 1 2 1 |
* 6 2 1 2 1 * 5 0 1 0 1 |
* 7 i=4 1 2 2 1 |
* 7 i=4 1 2 2 1 * 6 0 1 1 0 |
* 8 2 2 2 1 |
* 8 2 2 2 1 * 7 0 1 1 1 |
* 9 i=5 1 i=3 1 i=2 1 2 |
* 9 i=5 1 i=3 1 i=2 1 2 * 8 1 0 0 0 |
* 10 2 1 1 2 |
* 10 2 1 1 2 * 9 1 0 0 1 |
* 11 i=6 1 2 1 2 |
* 11 i=6 1 2 1 2 * 10 1 0 1 0 |
* 12 2 2 1 2 |
* 12 2 2 1 2 * 11 1 0 1 1 |
* 13 i=7 1 i=4 1 2 2 |
* 13 i=7 1 i=4 1 2 2 * 12 1 1 0 0 |
* 14 2 1 2 2 |
* 14 2 1 2 2 * 13 1 1 0 1 |
* 15 i=8 1 2 2 2 |
* 15 i=8 1 2 2 2 * 14 1 1 1 0 |
* 16 2 2 2 2 |
* 16 2 2 2 2 * 15 1 1 1 1 |
*/ |
*/ |
/* How to do the opposite? From combination h (=1 to 2**k) how to get the value on the covariates? */ |
/* How to do the opposite? From combination h (=1 to 2**k) how to get the value on the covariates? */ |
/* from h=5 and m, we get then number of covariates k=log(m)/log(2)=4 |
/* from h=5 and m, we get then number of covariates k=log(m)/log(2)=4 |
* and the value of each covariate? |
* and the value of each covariate? |
Line 11905 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 12692 Title=%s <br>Datafile=%s Firstpass=%d La
|
optionfilehtmcov,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
optionfilehtmcov,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt, model); |
} |
} |
|
|
fprintf(fichtm,"<html><head>\n<head>\n<meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>IMaCh %s</title></head>\n <body><font size=\"7\"><a href=http:/euroreves.ined.fr/imach>IMaCh for Interpolated Markov Chain</a> </font><br>\n<font size=\"3\">Sponsored by Copyright (C) 2002-2015 <a href=http://www.ined.fr>INED</a>-EUROREVES-Institut de longévité-2013-2016-Japan Society for the Promotion of Sciences 日本学術振興会 (<a href=https://www.jsps.go.jp/english/e-grants/>Grant-in-Aid for Scientific Research 25293121</a>) - <a href=https://software.intel.com/en-us>Intel Software 2015-2018</a></font><br> \ |
fprintf(fichtm,"<html><head>\n<head>\n<meta charset=\"utf-8\"/><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>IMaCh %s</title></head>\n <body><font size=\"7\"><a href=http:/euroreves.ined.fr/imach>IMaCh for Interpolated Markov Chain</a> </font><br>\n<font size=\"3\">Sponsored by Copyright (C) 2002-2015 <a href=http://www.ined.fr>INED</a>-EUROREVES-Institut de longévité-2013-2022-Japan Society for the Promotion of Sciences 日本学術振興会 (<a href=https://www.jsps.go.jp/english/e-grants/>Grant-in-Aid for Scientific Research 25293121</a>) - <a href=https://software.intel.com/en-us>Intel Software 2015-2018</a></font><br> \ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
<font size=\"2\">IMaCh-%s <br> %s</font> \ |
<font size=\"2\">IMaCh-%s <br> %s</font> \ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
<hr size=\"2\" color=\"#EC5E5E\"> \n\ |
Line 11961 Title=%s <br>Datafile=%s Firstpass=%d La
|
Line 12748 Title=%s <br>Datafile=%s Firstpass=%d La
|
<img src=\"%s_.svg\">", subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_")); |
<img src=\"%s_.svg\">", subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_"),subdirf2(optionfilefiname,"D_")); |
|
|
|
|
fprintf(fichtm,"\n<h4>Some descriptive statistics </h4>\n<br>Total number of observations=%d <br>\n\ |
fprintf(fichtm,"\n<h4>Some descriptive statistics </h4>\n<br>Number of (used) observations=%d <br>\n\ |
Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\ |
Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\ |
Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\ |
Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\ |
imx,agemin,agemax,jmin,jmax,jmean); |
imx,agemin,agemax,jmin,jmax,jmean); |
Line 12241 Please run with mle=-1 to get a correct
|
Line 13028 Please run with mle=-1 to get a correct
|
|
|
|
|
fprintf(ficres,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
fprintf(ficres,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); /* Printing model equation */ |
fprintf(ficlog,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
fprintf(ficlog,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n"); |
|
|
|
printf("#model= 1 + age "); |
|
fprintf(ficres,"#model= 1 + age "); |
|
fprintf(ficlog,"#model= 1 + age "); |
|
fprintf(fichtm,"\n<ul><li> model=1+age+%s\n \ |
|
</ul>", model); |
|
|
|
fprintf(fichtm,"\n<table style=\"text-align:center; border: 1px solid\">\n"); |
|
fprintf(fichtm, "<tr><th>Model=</th><th>1</th><th>+ age</th>"); |
|
if(nagesqr==1){ |
|
printf(" + age*age "); |
|
fprintf(ficres," + age*age "); |
|
fprintf(ficlog," + age*age "); |
|
fprintf(fichtm, "<th>+ age*age</th>"); |
|
} |
|
for(j=1;j <=ncovmodel-2;j++){ |
|
if(Typevar[j]==0) { |
|
printf(" + V%d ",Tvar[j]); |
|
fprintf(ficres," + V%d ",Tvar[j]); |
|
fprintf(ficlog," + V%d ",Tvar[j]); |
|
fprintf(fichtm, "<th>+ V%d</th>",Tvar[j]); |
|
}else if(Typevar[j]==1) { |
|
printf(" + V%d*age ",Tvar[j]); |
|
fprintf(ficres," + V%d*age ",Tvar[j]); |
|
fprintf(ficlog," + V%d*age ",Tvar[j]); |
|
fprintf(fichtm, "<th>+ V%d*age</th>",Tvar[j]); |
|
}else if(Typevar[j]==2) { |
|
printf(" + V%d*V%d ",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
fprintf(ficres," + V%d*V%d ",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
fprintf(ficlog," + V%d*V%d ",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
fprintf(fichtm, "<th>+ V%d*V%d</th>",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
} |
|
} |
|
printf("\n"); |
|
fprintf(ficres,"\n"); |
|
fprintf(ficlog,"\n"); |
|
fprintf(fichtm, "</tr>"); |
|
fprintf(fichtm, "\n"); |
|
|
|
|
for(i=1,jk=1; i <=nlstate; i++){ |
for(i=1,jk=1; i <=nlstate; i++){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
if (k != i) { |
if (k != i) { |
|
fprintf(fichtm, "<tr>"); |
printf("%d%d ",i,k); |
printf("%d%d ",i,k); |
fprintf(ficlog,"%d%d ",i,k); |
fprintf(ficlog,"%d%d ",i,k); |
fprintf(ficres,"%1d%1d ",i,k); |
fprintf(ficres,"%1d%1d ",i,k); |
|
fprintf(fichtm, "<td>%1d%1d</td>",i,k); |
for(j=1; j <=ncovmodel; j++){ |
for(j=1; j <=ncovmodel; j++){ |
printf("%12.7f ",p[jk]); |
printf("%12.7f ",p[jk]); |
fprintf(ficlog,"%12.7f ",p[jk]); |
fprintf(ficlog,"%12.7f ",p[jk]); |
fprintf(ficres,"%12.7f ",p[jk]); |
fprintf(ficres,"%12.7f ",p[jk]); |
|
fprintf(fichtm, "<td>%12.7f</td>",p[jk]); |
jk++; |
jk++; |
} |
} |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficres,"\n"); |
fprintf(ficres,"\n"); |
|
fprintf(fichtm, "</tr>\n"); |
} |
} |
} |
} |
} |
} |
|
/* fprintf(fichtm,"</tr>\n"); */ |
|
fprintf(fichtm,"</table>\n"); |
|
fprintf(fichtm, "\n"); |
|
|
if(mle != 0){ |
if(mle != 0){ |
/* Computing hessian and covariance matrix only at a peak of the Likelihood, that is after optimization */ |
/* Computing hessian and covariance matrix only at a peak of the Likelihood, that is after optimization */ |
ftolhess=ftol; /* Usually correct */ |
ftolhess=ftol; /* Usually correct */ |
hesscov(matcov, hess, p, npar, delti, ftolhess, func); |
hesscov(matcov, hess, p, npar, delti, ftolhess, func); |
printf("Parameters and 95%% confidence intervals\n W is simply the result of the division of the parameter by the square root of covariance of the parameter.\n And Wald-based confidence intervals plus and minus 1.96 * W .\n But be careful that parameters are highly correlated because incidence of disability is highly correlated to incidence of recovery.\n It might be better to visualize the covariance matrix. See the page 'Matrix of variance-covariance of one-step probabilities' and its graphs.\n"); |
printf("Parameters and 95%% confidence intervals\n W is simply the result of the division of the parameter by the square root of covariance of the parameter.\n And Wald-based confidence intervals plus and minus 1.96 * W .\n But be careful that parameters are highly correlated because incidence of disability is highly correlated to incidence of recovery.\n It might be better to visualize the covariance matrix. See the page 'Matrix of variance-covariance of one-step probabilities' and its graphs.\n"); |
fprintf(ficlog, "Parameters, Wald tests and Wald-based confidence intervals\n W is simply the result of the division of the parameter by the square root of covariance of the parameter.\n And Wald-based confidence intervals plus and minus 1.96 * W \n It might be better to visualize the covariance matrix. See the page 'Matrix of variance-covariance of one-step probabilities' and its graphs.\n"); |
fprintf(ficlog, "Parameters, Wald tests and Wald-based confidence intervals\n W is simply the result of the division of the parameter by the square root of covariance of the parameter.\n And Wald-based confidence intervals plus and minus 1.96 * W \n It might be better to visualize the covariance matrix. See the page 'Matrix of variance-covariance of one-step probabilities' and its graphs.\n"); |
|
fprintf(fichtm, "\n<p>The Wald test results are output only if the maximimzation of the Likelihood is performed (mle=1)\n</br>Parameters, Wald tests and Wald-based confidence intervals\n</br> W is simply the result of the division of the parameter by the square root of covariance of the parameter.\n</br> And Wald-based confidence intervals plus and minus 1.96 * W \n </br> It might be better to visualize the covariance matrix. See the page '<a href=\"%s\">Matrix of variance-covariance of one-step probabilities and its graphs</a>'.\n</br>",optionfilehtmcov); |
|
fprintf(fichtm,"\n<table style=\"text-align:center; border: 1px solid\">"); |
|
fprintf(fichtm, "\n<tr><th>Model=</th><th>1</th><th>+ age</th>"); |
|
if(nagesqr==1){ |
|
printf(" + age*age "); |
|
fprintf(ficres," + age*age "); |
|
fprintf(ficlog," + age*age "); |
|
fprintf(fichtm, "<th>+ age*age</th>"); |
|
} |
|
for(j=1;j <=ncovmodel-2;j++){ |
|
if(Typevar[j]==0) { |
|
printf(" + V%d ",Tvar[j]); |
|
fprintf(fichtm, "<th>+ V%d</th>",Tvar[j]); |
|
}else if(Typevar[j]==1) { |
|
printf(" + V%d*age ",Tvar[j]); |
|
fprintf(fichtm, "<th>+ V%d*age</th>",Tvar[j]); |
|
}else if(Typevar[j]==2) { |
|
fprintf(fichtm, "<th>+ V%d*V%d</th>",Tvard[Tposprod[j]][1],Tvard[Tposprod[j]][2]); |
|
} |
|
} |
|
fprintf(fichtm, "</tr>\n"); |
|
|
for(i=1,jk=1; i <=nlstate; i++){ |
for(i=1,jk=1; i <=nlstate; i++){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
for(k=1; k <=(nlstate+ndeath); k++){ |
if (k != i) { |
if (k != i) { |
|
fprintf(fichtm, "<tr valign=top>"); |
printf("%d%d ",i,k); |
printf("%d%d ",i,k); |
fprintf(ficlog,"%d%d ",i,k); |
fprintf(ficlog,"%d%d ",i,k); |
|
fprintf(fichtm, "<td>%1d%1d</td>",i,k); |
for(j=1; j <=ncovmodel; j++){ |
for(j=1; j <=ncovmodel; j++){ |
printf("%12.7f W=%8.3f CI=[%12.7f ; %12.7f] ",p[jk], p[jk]/sqrt(matcov[jk][jk]), p[jk]-1.96*sqrt(matcov[jk][jk]),p[jk]+1.96*sqrt(matcov[jk][jk])); |
wald=p[jk]/sqrt(matcov[jk][jk]); |
fprintf(ficlog,"%12.7f W=%8.3f CI=[%12.7f ; %12.7f] ",p[jk], p[jk]/sqrt(matcov[jk][jk]), p[jk]-1.96*sqrt(matcov[jk][jk]),p[jk]+1.96*sqrt(matcov[jk][jk])); |
printf("%12.7f(%12.7f) W=%8.3f CI=[%12.7f ; %12.7f] ",p[jk],sqrt(matcov[jk][jk]), p[jk]/sqrt(matcov[jk][jk]), p[jk]-1.96*sqrt(matcov[jk][jk]),p[jk]+1.96*sqrt(matcov[jk][jk])); |
|
fprintf(ficlog,"%12.7f(%12.7f) W=%8.3f CI=[%12.7f ; %12.7f] ",p[jk],sqrt(matcov[jk][jk]), p[jk]/sqrt(matcov[jk][jk]), p[jk]-1.96*sqrt(matcov[jk][jk]),p[jk]+1.96*sqrt(matcov[jk][jk])); |
|
if(fabs(wald) > 1.96){ |
|
fprintf(fichtm, "<td><b>%12.7f</b></br> (%12.7f)</br>",p[jk],sqrt(matcov[jk][jk])); |
|
}else{ |
|
fprintf(fichtm, "<td>%12.7f (%12.7f)</br>",p[jk],sqrt(matcov[jk][jk])); |
|
} |
|
fprintf(fichtm,"W=%8.3f</br>",wald); |
|
fprintf(fichtm,"[%12.7f;%12.7f]</br></td>", p[jk]-1.96*sqrt(matcov[jk][jk]),p[jk]+1.96*sqrt(matcov[jk][jk])); |
jk++; |
jk++; |
} |
} |
printf("\n"); |
printf("\n"); |
fprintf(ficlog,"\n"); |
fprintf(ficlog,"\n"); |
|
fprintf(fichtm, "</tr>\n"); |
} |
} |
} |
} |
} |
} |
} /* end of hesscov and Wald tests */ |
} /* end of hesscov and Wald tests */ |
|
fprintf(fichtm,"</table>\n"); |
|
|
/* */ |
/* */ |
fprintf(ficres,"# Scales (for hessian or gradient estimation)\n"); |
fprintf(ficres,"# Scales (for hessian or gradient estimation)\n"); |
Line 12494 Please run with mle=-1 to get a correct
|
Line 13363 Please run with mle=-1 to get a correct
|
} |
} |
|
|
/* Results */ |
/* Results */ |
|
/* Value of covariate in each resultine will be compututed (if product) and sorted according to model rank */ |
|
/* It is precov[] because we need the varying age in order to compute the real cov[] of the model equation */ |
|
precov=matrix(1,MAXRESULTLINESPONE,1,NCOVMAX+1); |
endishere=0; |
endishere=0; |
nresult=0; |
nresult=0; |
parameterline=0; |
parameterline=0; |
Line 12567 Please run with mle=-1 to get a correct
|
Line 13439 Please run with mle=-1 to get a correct
|
} |
} |
break; |
break; |
case 13: |
case 13: |
num_filled=sscanf(line,"result:%[^\n]\n",resultline); |
num_filled=sscanf(line,"result:%[^\n]\n",resultlineori); |
nresult++; /* Sum of resultlines */ |
nresult++; /* Sum of resultlines */ |
printf("Result %d: result:%s\n",nresult, resultline); |
printf("Result %d: result:%s\n",nresult, resultlineori); |
if(nresult > MAXRESULTLINES){ |
/* removefirstspace(&resultlineori); */ |
printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINES,nresult,rfileres); |
|
fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINES,nresult,rfileres); |
if(strstr(resultlineori,"v") !=0){ |
|
printf("Error. 'v' must be in upper case 'V' result: %s ",resultlineori); |
|
fprintf(ficlog,"Error. 'v' must be in upper case result: %s ",resultlineori);fflush(ficlog); |
|
return 1; |
|
} |
|
trimbb(resultline, resultlineori); /* Suppressing double blank in the resultline */ |
|
printf("Decoderesult resultline=\"%s\" resultlineori=\"%s\"\n", resultline, resultlineori); |
|
if(nresult > MAXRESULTLINESPONE-1){ |
|
printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); |
|
fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINESPONE-1,nresult,rfileres); |
goto end; |
goto end; |
} |
} |
|
|
if(!decoderesult(resultline, nresult)){ /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ |
if(!decoderesult(resultline, nresult)){ /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */ |
fprintf(ficparo,"result: %s\n",resultline); |
fprintf(ficparo,"result: %s\n",resultline); |
fprintf(ficres,"result: %s\n",resultline); |
fprintf(ficres,"result: %s\n",resultline); |
Line 12678 Please run with mle=-1 to get a correct
|
Line 13560 Please run with mle=-1 to get a correct
|
/*--------------- Prevalence limit (period or stable prevalence) --------------*/ |
/*--------------- Prevalence limit (period or stable prevalence) --------------*/ |
/*#include "prevlim.h"*/ /* Use ficrespl, ficlog */ |
/*#include "prevlim.h"*/ /* Use ficrespl, ficlog */ |
prlim=matrix(1,nlstate,1,nlstate); |
prlim=matrix(1,nlstate,1,nlstate); |
|
/* Computes the prevalence limit for each combination k of the dummy covariates by calling prevalim(k) */ |
prevalence_limit(p, prlim, ageminpar, agemaxpar, ftolpl, &ncvyear); |
prevalence_limit(p, prlim, ageminpar, agemaxpar, ftolpl, &ncvyear); |
fclose(ficrespl); |
fclose(ficrespl); |
|
|
/*------------- h Pij x at various ages ------------*/ |
/*------------- h Pij x at various ages ------------*/ |
/*#include "hpijx.h"*/ |
/*#include "hpijx.h"*/ |
|
/** h Pij x Probability to be in state j at age x+h being in i at x, for each combination k of dummies in the model line or to nres?*/ |
|
/* calls hpxij with combination k */ |
hPijx(p, bage, fage); |
hPijx(p, bage, fage); |
fclose(ficrespij); |
fclose(ficrespij); |
|
|
/* ncovcombmax= pow(2,cptcoveff); */ |
/* ncovcombmax= pow(2,cptcoveff); */ |
/*-------------- Variance of one-step probabilities---*/ |
/*-------------- Variance of one-step probabilities for a combination ij or for nres ?---*/ |
k=1; |
k=1; |
varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax,strstart); |
varprob(optionfilefiname, matcov, p, delti, nlstate, bage, fage,k,Tvar,nbcode, ncodemax,strstart); |
|
|
Line 12808 Please run with mle=-1 to get a correct
|
Line 13693 Please run with mle=-1 to get a correct
|
fprintf(ficreseij,"\n#****** "); |
fprintf(ficreseij,"\n#****** "); |
printf("\n#****** "); |
printf("\n#****** "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficreseij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); |
} |
} |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
printf(" V%d=%f ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); /* TvarsQ[j] gives the name of the jth quantitative (fixed or time v) */ |
fprintf(ficreseij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficreseij,"V%d=%f ",TvarsQ[j], TinvDoQresult[nres][TvarsQ[j]]); |
} |
} |
fprintf(ficreseij,"******\n"); |
fprintf(ficreseij,"******\n"); |
printf("******\n"); |
printf("******\n"); |
|
|
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
eij=ma3x(1,nlstate,1,nlstate,(int) bage, (int) fage); |
oldm=oldms;savm=savms; |
oldm=oldms;savm=savms; |
|
/* printf("HELLO Entering evsij bage=%d fage=%d k=%d estepm=%d nres=%d\n",(int) bage, (int)fage, k, estepm, nres); */ |
evsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, strstart, nres); |
evsij(eij, p, nlstate, stepm, (int) bage, (int)fage, oldm, savm, k, estepm, strstart, nres); |
|
|
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
free_ma3x(eij,1,nlstate,1,nlstate,(int) bage, (int)fage); |
Line 12869 Please run with mle=-1 to get a correct
|
Line 13755 Please run with mle=-1 to get a correct
|
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
i1=pow(2,cptcoveff); /* Number of combination of dummy covariates */ |
if (cptcovn < 1){i1=1;} |
if (cptcovn < 1){i1=1;} |
|
|
for(nres=1; nres <= nresult; nres++) /* For each resultline */ |
for(nres=1; nres <= nresult; nres++) /* For each resultline, find the combination and output results according to the values of dummies and then quanti. */ |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying */ |
for(k=1; k<=i1;k++){ /* For any combination of dummy covariates, fixed and varying. For each nres and each value at position k |
if(i1 != 1 && TKresult[nres]!= k) |
* we know Tresult[nres][result_position]= value of the dummy variable at the result_position in the nres resultline |
|
* Tvqresult[nres][result_position]= id of the variable at the result_position in the nres resultline |
|
* and Tqresult[nres][result_position]= value of the variable at the result_position in the nres resultline */ |
|
/* */ |
|
if(i1 != 1 && TKresult[nres]!= k) /* TKresult[nres] is the combination of this nres resultline. All the i1 combinations are not output */ |
continue; |
continue; |
printf("\n#****** Result for:"); |
printf("\n# model %s \n#****** Result for:", model); |
fprintf(ficrest,"\n#****** Result for:"); |
fprintf(ficrest,"\n# model %s \n#****** Result for:", model); |
fprintf(ficlog,"\n#****** Result for:"); |
fprintf(ficlog,"\n# model %s \n#****** Result for:", model); |
for(j=1;j<=cptcoveff;j++){ |
/* It might not be a good idea to mix dummies and quantitative */ |
printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* for(j=1;j<=cptcoveff;j++){ /\* j=resultpos. Could be a loop on cptcovs: number of single dummy covariate in the result line as well as in the model *\/ */ |
fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
for(j=1;j<=cptcovs;j++){ /* j=resultpos. Could be a loop on cptcovs: number of single covariate (dummy or quantitative) in the result line as well as in the model */ |
fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* printf("V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); /\* Output by variables in the resultline *\/ */ |
|
/* Tvaraff[j] is the name of the dummy variable in position j in the equation model: |
|
* Tvaraff[1]@9={4, 3, 0, 0, 0, 0, 0, 0, 0}, in model=V5+V4+V3+V4*V3+V5*age |
|
* (V5 is quanti) V4 and V3 are dummies |
|
* TnsdVar[4] is the position 1 and TnsdVar[3]=2 in codtabm(k,l)(V4 V3)=V4 V3 |
|
* l=1 l=2 |
|
* k=1 1 1 0 0 |
|
* k=2 2 1 1 0 |
|
* k=3 [1] [2] 0 1 |
|
* k=4 2 2 1 1 |
|
* If nres=1 result: V3=1 V4=0 then k=3 and outputs |
|
* If nres=2 result: V4=1 V3=0 then k=2 and outputs |
|
* nres=1 =>k=3 j=1 V4= nbcode[4][codtabm(3,1)=1)=0; j=2 V3= nbcode[3][codtabm(3,2)=2]=1 |
|
* nres=2 =>k=2 j=1 V4= nbcode[4][codtabm(2,1)=2)=1; j=2 V3= nbcode[3][codtabm(2,2)=1]=0 |
|
*/ |
|
/* Tvresult[nres][j] Name of the variable at position j in this resultline */ |
|
/* Tresult[nres][j] Value of this variable at position j could be a float if quantitative */ |
|
/* We give up with the combinations!! */ |
|
printf("\n j=%d In computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d Fixed[modelresult[nres][j]]=%d\n", j, nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff,Fixed[modelresult[nres][j]]); /* end if dummy or quanti */ |
|
|
|
if(Dummy[modelresult[nres][j]]==0){/* Dummy variable of the variable in position modelresult in the model corresponding to j in resultline */ |
|
printf("V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficlog,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
fprintf(ficrest,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); /* Output of each value for the combination TKresult[nres], ordere by the covariate values in the resultline */ |
|
if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ |
|
printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); |
|
}else{ |
|
printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); |
|
} |
|
/* fprintf(ficrest,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
|
/* fprintf(ficlog,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
|
}else if(Dummy[modelresult[nres][j]]==1){ /* Quanti variable */ |
|
/* For each selected (single) quantitative value */ |
|
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
|
if(Fixed[modelresult[nres][j]]==0){ /* Fixed */ |
|
printf("fixed ");fprintf(ficlog,"fixed ");fprintf(ficrest,"fixed "); |
|
}else{ |
|
printf("varyi ");fprintf(ficlog,"varyi ");fprintf(ficrest,"varyi "); |
|
} |
|
}else{ |
|
printf("Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ |
|
fprintf(ficlog,"Error in computing T_ Dummy[modelresult[%d][%d]]=%d, modelresult[%d][%d]=%d cptcovs=%d, cptcoveff=%d \n", nres, j, Dummy[modelresult[nres][j]],nres,j,modelresult[nres][j],cptcovs, cptcoveff); /* end if dummy or quanti */ |
|
exit(1); |
|
} |
} |
} |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
/* for (j=1; j<= nsq; j++){ /\* For each selected (single) quantitative value *\/ */ |
printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
/* printf(" V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /\* Wrong j is not in the equation model *\/ */ |
fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
/* fprintf(ficrest," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
/* fprintf(ficlog," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); */ |
} |
/* } */ |
fprintf(ficrest,"******\n"); |
fprintf(ficrest,"******\n"); |
fprintf(ficlog,"******\n"); |
fprintf(ficlog,"******\n"); |
printf("******\n"); |
printf("******\n"); |
Line 12893 Please run with mle=-1 to get a correct
|
Line 13826 Please run with mle=-1 to get a correct
|
fprintf(ficresstdeij,"\n#****** "); |
fprintf(ficresstdeij,"\n#****** "); |
fprintf(ficrescveij,"\n#****** "); |
fprintf(ficrescveij,"\n#****** "); |
for(j=1;j<=cptcoveff;j++) { |
for(j=1;j<=cptcoveff;j++) { |
fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresstdeij,"V%d=%d ",Tvresult[nres][j],Tresult[nres][j]); |
fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
/* fprintf(ficresstdeij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
} |
/* fprintf(ficrescveij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[Tvaraff[j]])]); */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
} |
fprintf(ficresstdeij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value, TvarsQind gives the position of a quantitative in model equation */ |
fprintf(ficrescveij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
fprintf(ficresstdeij," V%d=%f ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); |
|
fprintf(ficrescveij," V%d=%f ",Tvar[TvarsQind[j]],Tqresult[nres][resultmodel[nres][TvarsQind[j]]]); |
} |
} |
fprintf(ficresstdeij,"******\n"); |
fprintf(ficresstdeij,"******\n"); |
fprintf(ficrescveij,"******\n"); |
fprintf(ficrescveij,"******\n"); |
Line 12906 Please run with mle=-1 to get a correct
|
Line 13840 Please run with mle=-1 to get a correct
|
fprintf(ficresvij,"\n#****** "); |
fprintf(ficresvij,"\n#****** "); |
/* pstamp(ficresvij); */ |
/* pstamp(ficresvij); */ |
for(j=1;j<=cptcoveff;j++) |
for(j=1;j<=cptcoveff;j++) |
fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,j)]); |
fprintf(ficresvij,"V%d=%d ",Tvaraff[j],nbcode[Tvaraff[j]][codtabm(k,TnsdVar[TnsdVar[Tvaraff[j]]])]); |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
for (j=1; j<= nsq; j++){ /* For each selected (single) quantitative value */ |
fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); |
/* fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][j]); /\* To solve *\/ */ |
|
fprintf(ficresvij," V%d=%f ",Tvqresult[nres][j],Tqresult[nres][resultmodel[nres][j]]); /* Solved */ |
} |
} |
fprintf(ficresvij,"******\n"); |
fprintf(ficresvij,"******\n"); |
|
|
Line 12996 Please run with mle=-1 to get a correct
|
Line 13931 Please run with mle=-1 to get a correct
|
|
|
|
|
free_vector(weight,firstobs,lastobs); |
free_vector(weight,firstobs,lastobs); |
|
free_imatrix(Tvardk,1,NCOVMAX,1,2); |
free_imatrix(Tvard,1,NCOVMAX,1,2); |
free_imatrix(Tvard,1,NCOVMAX,1,2); |
free_imatrix(s,1,maxwav+1,firstobs,lastobs); |
free_imatrix(s,1,maxwav+1,firstobs,lastobs); |
free_matrix(anint,1,maxwav,firstobs,lastobs); |
free_matrix(anint,1,maxwav,firstobs,lastobs); |
Line 13043 Please run with mle=-1 to get a correct
|
Line 13979 Please run with mle=-1 to get a correct
|
free_ivector(TvarsQ,1,NCOVMAX); |
free_ivector(TvarsQ,1,NCOVMAX); |
free_ivector(TvarsQind,1,NCOVMAX); |
free_ivector(TvarsQind,1,NCOVMAX); |
free_ivector(TvarsD,1,NCOVMAX); |
free_ivector(TvarsD,1,NCOVMAX); |
|
free_ivector(TnsdVar,1,NCOVMAX); |
free_ivector(TvarsDind,1,NCOVMAX); |
free_ivector(TvarsDind,1,NCOVMAX); |
free_ivector(TvarFD,1,NCOVMAX); |
free_ivector(TvarFD,1,NCOVMAX); |
free_ivector(TvarFDind,1,NCOVMAX); |
free_ivector(TvarFDind,1,NCOVMAX); |
Line 13068 Please run with mle=-1 to get a correct
|
Line 14005 Please run with mle=-1 to get a correct
|
free_ivector(Tmodelind,1,NCOVMAX); |
free_ivector(Tmodelind,1,NCOVMAX); |
free_ivector(TmodelInvind,1,NCOVMAX); |
free_ivector(TmodelInvind,1,NCOVMAX); |
free_ivector(TmodelInvQind,1,NCOVMAX); |
free_ivector(TmodelInvQind,1,NCOVMAX); |
|
|
|
free_matrix(precov, 1,MAXRESULTLINESPONE,1,NCOVMAX+1); /* Could be elsewhere ?*/ |
|
|
free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX); |
free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX); |
/* free_imatrix(codtab,1,100,1,10); */ |
/* free_imatrix(codtab,1,100,1,10); */ |
fflush(fichtm); |
fflush(fichtm); |