eAppendix
Supplemental Digital Content 1 Sections:
Statistical analysis, model and estimation of parameters: pp.1-9 Further details of the design of the VSPP studies: pp.9-10
Statistical method of determining calibration equations: pp.10-11
Tables presenting calibration equations for each dietary component and sex: pp. 12-18
Examples of SAS code to estimate model parameters, including sample data and output: pp.19-89
Statistical analysis, model and estimation of parameters
Outlier exclusions: All dietary intake and biomarker variables were logarithmically transformed before analysis so that their distributions within each study/sex were
approximately normal, as confirmed by visualization of quantile-quantile (QQ) plots. For each variable, extreme outlying values were excluded if the log value was less than Q1 – 2×(Q3-Q1) or greater than Q3 + 2×(Q3-Q1), where Q1 was the 25
thpercentile of the distribution of log values and Q3 was the 75
thpercentile. Overall less than 1% of all observations were so excluded. Detailed percentages of exclusions for each type of measurement in each study are included in eTable A7 at the end of this document.
Exclusion of urine samples: We excluded urinary marker values from analysis only if participants declared missing two or more voids during 24-hour collection. This information was elicited by questionnaire or interview and supplied to us for all of the studies except NPAAS. Approximately 1% of urine samples were thereby excluded from our analysis in the remaining four studies. No exclusions were made on the basis of para- amino-benzoic acid results.
28Specifically, the numbers of urine samples that were excluded due to a report of missing two or more voids were as follows: OPEN: 5 samples in men and 5 samples in women:
total 10 samples out of a total of 941 samples (1.1%); Energetics: 3 samples in women
and none in men: total 3 samples out of a total of 643 samples (0.5%); AMPM: 14 sample
in women and 5 in men: total 19 samples out of a total of 1,131 samples (1.7%); NBS: 6
samples in women out of total of 661 samples (0.9%). No participants in our database
were entirely excluded from the analysis due to the report of missing two or more voids, since their other urine samples were available.
Choice of length of sub-period for usual intake: We chose the length of the sub-period to
be 90 days. This choice should be made with care. The aim should be to include short enough sub-periods to capture the variation in dietary intakes, but not so short that measurements within any sub-period are absent or very sparse. Thus the choice depends on the design of the study and the data that are available.
Why the meta-analysis framework is necessary in our application: Our model is specified
within the framework of a meta-analysis. The meta-analysis framework is necessary because the design of each study involved repeated applications of the biomarkers within a specific and relatively narrow time-window. In OPEN, the repeat was after
approximately 2 weeks, in Energetics, NBS and NPAAS after approximately 6 months, and in AMPM after 10-23 months. Our method requires estimation of the correlation between intakes over the whole of the target period, which we choose to be 1-year.
Therefore we needed to include these different studies so as to span the whole period.
Biomarker model: Denote the k
threpeat biomarker assessment in the j
thsub-period (j
=1,…,10) on the i
thindividual of study h (h=1,..,5) by M
hijk. Note that in each study the 6
thsub-period (j=6) is the period in which the first FFQ was administered. The model is:
M
hijk= T
hijk+ δ
hijk, [A1]
where T
hijkis the true intake on the day corresponding to the marker assessment and δ
hijkis random error that is independent of T and all other error variables (introduced in models [A2] and [A3] below).
24HR model: Denote the 24-hour recall assessment that corresponds to the day of marker
assessment M
hijkby R
hijk. Otherwise if the 24-hour recall is conducted in the same sub- period as the biomarker but not corresponding to the same day, then a subscript k’ that is not the same as any k used for the biomarker assessments in this sub-period is assigned.
We write the model as:
R
hijk= β
R0h+ β
R1hT
hijk+ β
R2htZ
Rhi+ u
Rhi+ ε
Rhijk[A2]
where T
hijkis the true intake on the day corresponding to the 24HR assessment, Z
Rhiis a vector of explanatory variables, u
Rhiis a random error term representing subject-specific bias (6) and e
Rhijkis independent random error that is not correlated over time. Thus it is assumed that correlation between repeat 24HRs occurs through the correlation between the true intakes at those times and also the subject-specific biases. The covariates Z
Rare included in the model for the purpose of estimating calibration equations, but are omitted for the purpose of estimating attenuation factors and correlations with truth, since the latter are traditionally reported without adjustment for covariates.
FFQ Model: Denote the first FFQ assessment that was obtained from individual i in study
h by Q
hi. We write the model as
Q
hi= β
Q0h+ β
Q1hT
hi+ β
Q2htZ
Qhi+ u
Qhi+ ε
Qhi[A3]
where T
hiis the average true intake over the sub-period in which the FFQ was
administered and the 3 previous sub-periods, i.e. in sub-periods 3,4,5 and 6, since this is assumed to be the target of the FFQ. The covariates Z
Qmay be the same as Z
Ror may differ. The term u
Qhiis a random error term representing subject-specific bias and e
Qhiis independent random error. In models [A1]-[A3] the error terms (d,e) and the subject- specific biases (u) are all assumed to be independent of each other, except for u
Rhiand u
Qhi, which are allowed to be correlated. This correlation and also the variances of u
Qhi, ε
Qhi, u
Rhi, and ε
Rhijkare assumed to differ by study. However, the variance of δ
hijkis assumed to be the same for each study, since there were not sufficient replications of the DLW measurements within sub-periods to estimate it separately for each study.
Time-Varying True Intake Model: We need to specify a stochastic structure for how T
varies with time. Denote true usual intake in sub-period j by T
hij, conditional on
explanatory variables Z
T. The conditional distribution of T
hij, given Z
Thi, has expectation, variance and serial correlation given by:
E(T
hij| Z
hi) = g
T0h+ γ
T1htZ
Thivar(T
hij| Z
Thi) = s
Th2[A4]
corr(T
hij,T
hij’| Z
Thi) = r
jj’In addition, a single-day’s intake within a sub-period is:
T
hijk= T
hij+ f
hijkwhere var( f
hijk) = w
fs
2Thand f
hijkare independent of each other and of T
hijand Z
Thij. The covariates Z
Tmay be the same as Z
Ror Z
Qor may differ. The correlations r
jj’are taken to have a structure corresponding to banded Toeplitz, autoregressive model order 1,
compound symmetry, or degenerate (all 1’s), whichever provides the best fit to the model (as judged by the Akaike Information Criterion). The last option (degenerate structure), together with setting w
f=0, corresponds to the fixed usual intake (no variation in usual intake over time) model, and we use it to make comparisons of estimates under a fixed usual intake model with those obtained under a time-varying usual intake model.
Under this model the correlation between true intakes on different days within the same
sub-period is given by 1/(1+ w
f), and the correlation between true intakes on a day in
period j and another day in period j’ is given by r
jj’/(1+ w
f). Another consequence of the
model is that 24HRs and biomarkers that measure the same day’s intake have covariance
(conditional on covariates Z) β
R1hvar(T
hijk) = β
R1hs
2Th(1+ w
f), whereas 24HRs and
biomarkers measured in the same sub-period but not for the same day’s intake have a
smaller covariance, equal to β
R1hs
2Th, and those measured in different sub-periods, j and
j’, have an even smaller covariance, equal to β
R1hs r
2Th jj’.
We take the target measure of each instrument to be the average true intake over a period of 12 months. However the timing of these twelve months differs slightly between the 24HR and the FFQ. For a 24HR reported by individual i of study h in sub-period j, because the report is on current intake, we take the target to be
å
+-
=
=
j12 j ' j
' hij
hi
T / 4
T , [A5]
the average over sub-periods surrounding (and including) sub-period j. For a FFQ
reported in sub-period j (where in or application j=6), because the report is on past intake, we take
å
=-=
j3 j ' j
' hij
hi
T / 4
T , [A6]
the average over the sub-periods before (and including) sub-period j. These choices affect the calculation of the attenuation factors and the correlations with true average intake, as indicated below. Note, also, that other definitions of average intake may be used, for example, averaging over different numbers of sub-periods, with each definition resulting in a different calculation of the attenuation factor and correlation with truth.
(a) 24-hour recall
The attenuation factor, l
Rh, for a single 24HR in study h is calculated as
cov(R
hijk,T
hi)/var(R
hijk), with T
hidefined in [A5]. From model [A2] without covariates Z and the structure [4] defined for T
hijk, we may compute that
) )
1 ( (
4
) 1
(
2 Rh 2
uRh 2
Th 2
h 1 R
1 j , j 1 j , j 2 j , j 2
Th h 1 R Rh
e f
+ - -
s + s + w + s b
r + r + r + s
= b
l .
Similarly, the correlation, r
Rh, between a single 24HR and truth, that is T
hidefined in [A5], is given by
) 2 2
2 2
2 2
4 )(
) 1 ( (
) 1
(
j , 1 j 1 j , 1 j 1 j , j 2 j , 1 j 2 j , j 2 j , 1 j 2
Rh 2
uRh 2
Th 2
h 1 R
1 j , j 1 j , j 2 j , j Th h 1 R Rh
+ -
+ - -
+ -
- - e
f
+ - -
r + r + r + r + r + r + s
+ s + w + s b
r + r + r + s
= b r
It is of interest also to compute these quantities for the mean of two or more 24HRs. This is done simply by using s
2eRh/ m in place of s
2eRhin the above equations, where m is the number of repeat 24HRs that is of interest.
(b) Food Frequency Questionnaire
From model 3 without covariates, together with the T
hidefined in [A6], we can compute the attenuation factor, l
Qh, as
2 Qh 2
uQh 2
j , j 2 j , j 2 j , 1 j 3 j , j 3 j , 1 j 3 j , 2 j 2
Th 2
h 1 Q
2 j , j 2 j , j 2 j , 1 j 3 j , j 3 j , 1 j 3 j , 2 j 2
Th h 1 Q
Qh
( 4 2 2 2 2 2 2 ) 16 16
) 2 2
2 2
2 2
4 (
e -
- -
- -
- - -
-
- -
- - -
- - -
-
s + s + r + r + r + r + r + r + s b
r + r + r + r + r + r + s
= b l
and the correlation with truth, r
Qh, as
2 Qh 2
uQh 2
j , j 2 j , j 2 j , 1 j 3 j , j 3 j , 1 j 3 j , 2 j 2
Th 2
h 1 Q
2 j , j 2 j , j 2 j , 1 j 3 j , j 3 j , 1 j 3 j , 2 j 2
Th 2
h 1 Q
Qh
( 4 2 2 2 2 2 2 ) 16 16
) 2 2
2 2
2 2
4 (
e -
- -
- -
- - -
-
- -
- - -
- - -
-
s + s + r + r + r + r + r + r + s b
r + r + r + r + r + r + s
= b r
.
For both 24HR and FFQ, the attenuation factor and correlation with truth may be
estimated by substituting the maximum likelihood estimates of the parameters into the
above equations. The variances of the estimates are obtained using the nonparametric
bootstrap. Values for the time-fixed average intake model are obtained by setting the r
values to 1 and w
fto 0. Overall attenuation factors and correlations with truth are obtained by taking weighted averages across the five studies, with weights inversely proportional to the variance of the estimates.
Estimation of the model parameters
Parameters were estimated using maximum likelihood (conditional likelihood given fixed covariates Z), under the assumption that Q
hi, R
hijkand M
hijkhave a conditional normal distribution given Z
hi(we write Z without the subscript Q, R or T assuming here that these three sets of covariates coincide). The conditional means, variances and covariances of Q
hi, R
hijkand M
hijk, given Z
hi, are provided in the Appendix. In fact, as long as the first and second moments are correctly specified, the assumption of normality is not needed, and all parameters are consistently estimated. The use of the nonparametric bootstrap for inference also obviates the need to assume normality. The estimation was carried out using a custom-built program written in SAS.
Previous work that did not assume a fixed usual intake model
Rosner et al
3modeled data from a nutritional study with two sets of measurements taken 4 years apart, and allowed usual intake of vitamin C to differ at the two time points. Their main aim was to estimate attenuation coefficients that did not depend on an assumption of uncorrelated errors between a questionnaire and the more accurate self-report
instrument, which they did by introducing the repeated assessments. However, they
estimated the attenuation coefficient pertaining to the intake at a single time point rather than the average intake over the whole period. Keogh et al
4followed Rosner et al’s approach but dropped their assumption that the more accurate self-report was unbiased.
The price to pay for this was that their model was not completely identifiable and required the use of sensitivity analysis to make inferences about the model parameters.
Prentice and Huang
5discussed the longer time-period of dietary exposure of interest relative to the typically shorter time periods of validation studies with biomarkers, and presented sensitivity analyses of the impact of this difference, but did not develop a specific model for the variation of dietary intake with time. Our proposed model is related to these approaches, but, unlike them, specifically models the correlation of true intake across time and estimates attenuation factors and correlations of self-reports with true intake for a longer-term average intake.
Further details of the design of the VSPP studies
Food Frequency Questionnaires (FFQ): Three versions FFQ were used: Diet History
Questionnaire (OPEN, Energetics);
15the Harvard FFQ (AMPM),
16and the WHI FFQ (NBS, NPAAS).
17,1824-hour recalls (24HR): Different versions of 24HR were used. OPEN used a pencil-
paper version of USDA’s interviewer-administered Automated Multiple Pass Method in
person.
10AMPM used a computer-automated version of this same method; the first
recall was conducted in person and the second and third recalls were telephone-
administered.
11NBS and NPAAS used the Nutrition Data System for Research (2005
nutrient database) interviewer-administered multiple-pass method by telephone.
17,19Energetics used DietDay, a web-based self-administered 24HR.
11For further details, see references 10-19.
Biomarkers: Doubly labeled water was measured at the University of Wisconsin in four
studies, and at the USDA laboratory in AMPM. In three studies urinary nitrogen was measured at the Medical Research Council (Cambridge UK), using the Kjeldahl method, and in the AMPM and Energetics studies at the USDA laboratory, using the Dumas combustion method. Urinary potassium and sodium were measured for OPEN at the Medical Research Council, Cambridge, UK, using the flame photometry method, and in the other studies using the ion-selective electrode method at the following laboratories:
UCLA (Energetics - potassium), USDA (Energetics – sodium), Medstar Penn Medical (AMPM), PPD (NBS), and University of Washington (NPAAS).
Timing of the different measurements: In all studies except AMPM, the FFQ was
administered at the beginning of the main study. In AMPM, the FFQ was administered 1- 14 months after the beginning of the main study. In OPEN, a second FFQ was
administered 60 days after the first. In all studies DLW was administered at 1-14 days, and 24-hour urines were collected during the same period. The 24HRs were administered on the following days: OPEN 1 and 61; Energetics 1, 3, 5, 8, 11, 14, 30 and 60; AMPM 1, 5-6, 10-11; NBS none in the main study (but one in the reliability sub-study at 180 days in 20% of the sample); NPAAS three repeats from 14 to 104 days. These
measurements were supplemented by those in the reliability sub-studies (see main text).
Calibration Equations
We fit the models [A1]-[A4], estimated the parameters, and from there derived the calibration equations. Some technical details of the derivation for the FFQ follow.
The conditional expectation of T given Q is
E(T
hi| Q
hi, Z
hi) = λ
Qh{Q
hi– E(Q
hi| Z
hi)} + g
T0h+ γ
T1htZ
hi, [A7]
where
E(Q
hi| Z
hi) = β
Q0h+ β
Q1h(g
T0h+ γ
T1htZ
hi) + β
Q2htZ
hi.
Formula [7] can be used to calculate the calibration equation for any single study h.
If one wants to obtain an overall calibration equation that is of general use for new studies that use a similar FFQ in a similar population to the ones used in the 5 studies, then one may use in place of l
Qhand g
T0htheir weighted averages over the 5 studies, and the estimate of g
T1from a model that sets γ
T1htequal for all 5 studies, after testing for heterogeneity across studies. In this case, the only quantity on the right-hand side of [A7]
that remains to be determined is E(Q
hi| Z
hi), which can be estimated for the new study,
since both Q and Z are observed. In Tables A1-A6, the estimates of l
Qhare presented for
each study together with the weighted average of g
T0h(Intercept) and the estimates of g
T1.
eTable A1. Calibration Equations for Usual Intakes of Energy, Protein and Protein Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Men
Covariate
Energy Protein Protein Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.061 0.40 0.03 0.151 0.40 0.11 0.426 0.25 0.20
Energetics 0.066 0.35 0.05 0.151 0.28 0.06 0.472 0.22 0.14
AMPM -0.003 0.28 0.004 0.189 0.35 0.07 0.364 0.14 0.12
Weighted Average 0.051 0.161 0.414
Heterogeneity
f0.143 0.706 0.778
Intercept 6.105 3.720 2.253
Age: <40y v 50-59y 0.049
<0.001
0.059
0.042
0.017
0.318
40-49y v 50-59y 0.039 0.031 -0.001
60-69y v 50-59y -0.074 -0.028 0.043
log BMI 0.575 <0.001 0.691 <0.001 0.102 0.129
Race: African American v Other
h-0.044 0.064 -0.201 <0.001 -0.133 0.002
Education: High school v College 0.030
0.553 0.046
0.096 0.042
0.195
Postgrad v College 0.002 0.042 0.036
Heterogeneity
g0.103 0.117 0.314
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = Food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A2. Calibration Equations for Usual Intakes of Energy, Protein and Protein Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Women
Covariate
Energy Protein Protein Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.039 0.46 0.02 0.132 0.18 0.09 0.419 0.23 0.16
Energetics 0.078 0.42 0.11 0.039 0.17 0.005 0.528 0.33 0.29
AMPM 0.060 0.24 0.02 0.149 0.22 0.08 0.425 0.18 0.17
NBS 0.039 0.48 0.02 0.191 0.42 0.17 0.426 0.25 0.23
NPAAS 0.063 0.50 0.09 0.162 0.31 0.16 0.412 0.21 0.18
Weighted Average 0.053 0.152 0.436
Heterogeneity
f0.327 0.116 0.886
Intercept 6.390 4.441 2.596
Age: <40y v 50-59y 0.039
<0.001
0.059
<0.001
0.027
0.004
40-49y v 50-59y 0.052 0.023 -0.033
60-69y v 50-59y -0.029 0.021 0.048
70-79y v 50-59y -0.084 -0.048 0.037
>80y v 50-59y -0.129 -0.177 -0.051
log BMI 0.405 <0.001 0.371 <0.001 -0.012 0.744
Race: African American v Other
h-0.038 <0.001 -0.116 <0.001 -0.072 <0.001
Education: High school v College -0.013
0.212 -0.030
0.067 -0.016
0.220
Postgrad v College 0.004 0.014 0.018
Heterogeneity
g0.111 0.579 0.054
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A3. Calibration Equations for Usual Intakes of Potassium and Potassium Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Men
Covariate
Potassium Potassium Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.307 0.39 0.31 0.388 0.38 0.24
Energetics 0.174 0.24 0.05 0.540 0.32 0.15
AMPM 0.399 0.35 0.20 0.600 0.37 0.25
Weighted Average 0.322 0.453
Heterogeneity
f0.157 0.157
Intercept 7.771 1.792
Age: <40y v 50-59y -0.111
0.026
-0.159
<0.001
40-49y v 50-59y -0.026 -0.081
60-69y v 50-59y 0.029 0.096
log BMI 0.149 0.072 -0.474 <0.001
Race: African American v Other
h-0.243 <0.001 -0.166 0.002 Education: High school v College 0.095
0.025 0.053
0.078
Postgrad v College 0.063 0.060
Heterogeneity
g0.788 0.844
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = Food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A4. Calibration Equations for Usual Intakes of Potassium and Potassium Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Women
Covariate
Potassium Potassium Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.206 0.15 0.10 0.511 0.44 0.35
Energetics 0.072 0.15 0.03 0.565 0.42 0.32
AMPM 0.198 0.20 0.11 0.627 0.36 0.28
NBS 0.299 0.30 0.22 0.441 0.38 0.26
NPAAS 0.230 0.24 0.15 0.356 0.32 0.17
Weighted Average 0.221 0.472
Heterogeneity
f0.018 0.158
Intercept 7.920 1.432
Age: <40y v 50-59y -0.145
0.001
-0.182
<0.001
40-49y v 50-59y -0.034 -0.090
60-69y v 50-59y 0.011 0.035
70-79y v 50-59y -0.002 0.083
>80y v 50-59y -0.086 0.053
log BMI -0.006 0.892 -0.374 <0.001
Race: African American v Other
h-0.192 <0.001 -0.149 <0.001 Education: High school v College -0.036
<0.001 -0.027
<0.001
Postgrad v College 0.089 0.082
Heterogeneity
g0.395 0.195
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A5. Calibration Equations for Usual Intakes of Sodium and Sodium Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Men
Covariate
Sodium Sodium Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.130 0.40 0.07 0.393 0.29 0.20
Energetics 0.069 0.20 0.00 0.498 0.11 0.09
AMPM 0.135 0.29 0.04 0.297 0.12 0.07
Weighted Average 0.125 0.366
Heterogeneity
f0.770 0.697
Intercept 5.480 -0.502
Age: <40y v 50-59y 0.041
0.305
0.005
0.173
40-49y v 50-59y 0.002 -0.033
60-69y v 50-59y -0.044 0.040
log BMI 0.857 <0.001 0.254 0.003
Race: African American v Other
h-0.071 0.179 0.003 0.956 Education: High school v College 0.043
0.597 0.037
0.334
Postgrad v College 0.022 0.038
Heterogeneity
g0.742 0.479
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = Food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A6. Calibration Equations for Usual Intakes of Sodium and Sodium Density, Multiple Correlations (R
2), and Squared Correlation for the Instrument Only: Women
Covariate
Sodium Sodium Density
Reg.
coeff. P R
2 aR
2instr
bReg.
coeff. P R
2 aR
2instr
bFFQ: OPEN 0.086 0.29 0.04 0.293 0.14 0.13
Energetics -0.005 0.14 0.01 0.001 0.04 0.00
AMPM 0.090 0.32 0.05 0.311 0.19 0.17
NBS 0.057 0.30 0.04 0.385 0.19 0.12
NPAAS 0.076 0.33 0.02 0.466 0.27 0.13
Weighted Average 0.068 0.349
Heterogeneity
f0.688 0.252
Intercept 6.273 -0.099
Age: <40y v 50-59y 0.132
<0.001
0.073
0.168
40-49y v 50-59y 0.046 -0.002
60-69y v 50-59y -0.056 -0.016
70-79y v 50-59y -0.076 0.021
>80y v 50-59y -0.181 -0.052
log BMI 0.548 <0.001 0.146 0.002
Race: African American v Other
h0.002 0.925 0.058 0.026 Education: High school v College 0.015
0.273 0.033
0.109
Postgrad v College -0.025 -0.023
Heterogeneity
g0.374 0.092
a
R-squared for model with self-report instrument and covariates
b
R-squared for model with self-report instrument only
c
24HR = 24-hour dietary recall
d
FFQ = food frequency questionnaire
e
Z = other covariates in the calibration model
f
P-value for heterogeneity of adjusted “attenuation coefficient” across studies
g
P-value for heterogeneity of regression coefficients for other covariates (γ
T1h) across studies
h
Other includes non-Hispanic whites
eTable A7: Percentage observations removed due to outlier detection:
Study/Gender/Instrument Energy
%
Protein
%
Protein Density
%
Potass.
%
Potass.
Density
%
Sodium
%
Sodium Density
%
OPEN Male 24HR 0.8 0.6 0.0 0.2 0.4 0.6 1.2
FFQ 1.0 0.6 1.5 0.6 0.4 1.2 1.9
Marker 1.2 2.0 2.8 1.2 1.5 0.4 1.1
Female 24HR 0.2 1.6 0.7 0.2 0.2 1.1 0.7
FFQ 0.2 0.2 0.5 0.2 0.0 0.2 1.4
Marker 0.0 0.2 0.3 0.5 1.5 0.5 1.0
UCLA Male 24HR 1.3 2.2 0.3 1.3 0.0 0.5 1.1
FFQ 1.1 2.2 2.2 2.2 1.1 0.0 2.2
Marker 0.0 0.6 0.6 1.1 1.3 0.0 0.0
Female 24HR 0.8 0.9 0.4 0.7 0.4 1.0 1.5
FFQ 0.6 0.0 1.2 0.0 1.8 0.0 1.2
Marker 0.6 0.0 1.6 0.0 0.0 0.0 0.0
AMPM Male 24HR 0.4 0.6 0.3 0.4 0.4 1.2 0.8
FFQ 0.4 0.0 0.4 0.4 0.0 0.4 0.4
Marker 0.0 0.4 0.0 0.4 0.6 1.0 1.0
Female 24HR 0.4 0.1 0.4 0.5 0.4 0.6 0.6
FFQ 0.4 0.8 0.4 0.8 0.4 0.4 0.4
Marker 0.4 2.7 1.9 0.2 0.0 0.8 0.6
NBS Female 24HR 0.5 0.9 0.0 0.9 0.0 0.0 0.0
FFQ 1.3 1.1 0.4 1.5 0.4 0.7 0.6
Marker 0.4 0.6 0.6 0.9 0.6 0.0 0.0
NPAAS Female 24HR 0.6 0.8 0.2 0.5 0.5 0.2 0.3
FFQ 0.4 0.2 1.1 0.4 0.2 0.0 0.0
Marker 2.9 0.0 2.5 0.5 2.7 0.5 2.8
SAS code for estimating the parameters for the compound symmetry model for protein intake in men
title1 "Time-Varying Model Example: Fit Model to Simulated Data Using SAS Proc Calis";
title2 "Data Simulated Using Estimated Parameters for Protein Intake in Men in VSPP";
/* file name of simulated data. */
filename infile "c:\users\midthund\my
documents\freedman\dlw.studies\data\simulated_data.txt";
%let nperiod = 10; /* number of time periods */
options center linesize=120 pagesize=42;
/* read in simulated data from text file. */
data simdata;
infile infile;
input study id ffq rec1-rec6 biom1-biom4
period_rec1-period_rec6 period_biom1-period_biom4 day_rec1-day_rec6 day_biom1-day_biom4;
run;
proc sort data=simdata; by study; run;
proc means data=simdata;
by study;
title4 "Means for Simulated Data, By Study";
run;
title4;
/* create data set for proc calis. */
data simdata;
set simdata;
/* 24hr */
/* r1_1 = recall 1 measured in period 1, r1_2 = recall 1 measured in period 2, etc. */
array r1i (*) r1_1-r1_10;
array r2i (*) r2_1-r2_10;
array r3i (*) r3_1-r3_10;
array r4i (*) r4_1-r4_10;
array r5i (*) r5_1-r5_10;
array r6i (*) r6_1-r6_10;
/* biomarkers values */
/* b1_1 = biomarker 1 measured in period 1, b1_2 = biomarker 1 measured in period 2, etc. */
array b1i (*) b1_1-b1_10;
array b2i (*) b2_1-b2_10;
array b3i (*) b3_1-b3_10;
array b4i (*) b4_1-b4_10;
array b5i (*) b5_1-b5_10;
array b6i (*) b6_1-b6_10;
array b7i (*) b7_1-b7_10;
array b8i (*) b8_1-b8_10;
array b9i (*) b9_1-b9_10;
array b10i (*) b10_1-b10_10;
/* ffq */
q = ffq;
/* 24hr */
if (period_rec1 ^= .) then r1i(period_rec1) = rec1;
if (period_rec2 ^= .) then r2i(period_rec2) = rec2;
if (period_rec3 ^= .) then r3i(period_rec3) = rec3;
if (period_rec4 ^= .) then r4i(period_rec4) = rec4;
if (period_rec5 ^= .) then r5i(period_rec5) = rec5;
if (period_rec6 ^= .) then r6i(period_rec6) = rec6;
/* biomarker values */
/* if biomarker measured on same day as a 24hr, use arrays b1i to b6i. */
/* if biomarker not measured on same day as any 24hr, use arrays b7i to b10i. */
if (period_biom1 ^= . & day_biom1 = day_rec1) then b1i(period_biom1) = biom1;
else if (period_biom1 ^= . & day_biom1 = day_rec2) then b2i(period_biom1) = biom1;
else if (period_biom1 ^= . & day_biom1 = day_rec3) then b3i(period_biom1) = biom1;
else if (period_biom1 ^= . & day_biom1 = day_rec4) then b4i(period_biom1) = biom1;
else if (period_biom1 ^= . & day_biom1 = day_rec5) then b5i(period_biom1) = biom1;
else if (period_biom1 ^= . & day_biom1 = day_rec6) then b6i(period_biom1) = biom1;
else if (period_biom1 ^= .) then b7i(period_biom1) = biom1;
if (period_biom2 ^= . & day_biom2 = day_rec1) then b1i(period_biom2) = biom2;
else if (period_biom2 ^= . & day_biom2 = day_rec2) then b2i(period_biom2) = biom2;
else if (period_biom2 ^= . & day_biom2 = day_rec3) then b3i(period_biom2) = biom2;
else if (period_biom2 ^= . & day_biom2 = day_rec4) then b4i(period_biom2) = biom2;
else if (period_biom2 ^= . & day_biom2 = day_rec5) then b5i(period_biom2) = biom2;
else if (period_biom2 ^= . & day_biom2 = day_rec6) then b6i(period_biom2) = biom2;
else if (period_biom2 ^= .) then b8i(period_biom2) = biom2;
if (period_biom3 ^= . & day_biom3 = day_rec1) then b1i(period_biom3) = biom3;
else if (period_biom3 ^= . & day_biom3 = day_rec2) then b2i(period_biom3) = biom3;
else if (period_biom3 ^= . & day_biom3 = day_rec3) then b3i(period_biom3) = biom3;
else if (period_biom3 ^= . & day_biom3 = day_rec4) then b4i(period_biom3) = biom3;
else if (period_biom3 ^= . & day_biom3 = day_rec5) then b5i(period_biom3) = biom3;
else if (period_biom3 ^= . & day_biom3 = day_rec6) then b6i(period_biom3) = biom3;
else if (period_biom3 ^= .) then b9i(period_biom3) = biom3;
if (period_biom4 ^= . & day_biom4 = day_rec1) then b1i(period_biom4) = biom4;
else if (period_biom4 ^= . & day_biom4 = day_rec2) then b2i(period_biom4) = biom4;
else if (period_biom4 ^= . & day_biom4 = day_rec3) then b3i(period_biom4) = biom4;
else if (period_biom4 ^= . & day_biom4 = day_rec4) then b4i(period_biom4) = biom4;
else if (period_biom4 ^= . & day_biom4 = day_rec5) then b5i(period_biom4) = biom4;
else if (period_biom4 ^= . & day_biom4 = day_rec6) then b6i(period_biom4) = biom4;
else if (period_biom4 ^= .) then b10i(period_biom4) = biom4;
run;
/*
proc means data=simdata;
by study;
var q r1_1-r1_10 r2_1-r2_10 r3_1-r3_10 r4_1-r4_10 r5_1-r5_10 r6_1-r6_10 b1_1-b1_10 b2_1-b2_10 b3_1-b3_10 b4_1-b4_10 b5_1-b5_10
b6_1-b6_10 b7_1-b7_10 b8_1-b8_10 b9_1-b9_10 b10_1-b10_10;
title4 "Data for Proc Calis";
run;
title4;
*/
/* print number of subjects and total number of observations. */
data simdata;
set simdata;
array x (*) q r1_1-r1_10 r2_1-r2_10 r3_1-r3_10 r4_1-r4_10 r5_1-r5_10 r6_1-r6_10 b1_1-b1_10 b2_1-b2_10 b3_1-b3_10 b4_1-b4_10 b5_1-b5_10
b6_1-b6_10 b7_1-b7_10 b8_1-b8_10 b9_1-b9_10 b10_1-b10_10;
nobsi = 0;
do i = 1 to dim(x);
if (x(i) ^= .) then nobsi = nobsi + 1;
end;
if (nobsi = 0) then nobsi = .;
run;
proc means data=simdata n min max sum;
by study;
var nobsi;
title4 "Number of Subjects, Minimum and Maximum Number of Observations per Subject, and Total Number of Observations";
title5 "By Study";
run;
title4;
/* initial parameter estimates for proc calis. */
data inest;
_type_ = "PARMS";
beta_Q0_Study1 = 8;
beta_Q0_Study2 = 8;
beta_Q0_Study3 = 8;
beta_Q1a_Study1 = 0;
beta_Q1a_Study2 = 0;
beta_Q1a_Study3 = 0;
beta_R0_Study1 = 8;
beta_R0_Study2 = 8;
beta_R0_Study3 = 8;
beta_R1_Study1 = 0;
beta_R1_Study2 = 0;
beta_R1_Study3 = 0;
mean_Tij_Study1 = 8;
mean_Tij_Study2 = 8;
mean_Tij_Study3 = 8;
logse_Tij_Study1 = -1;
logse_Tij_Study2 = -1;
logse_Tij_Study3 = -1;
logse_eQ_Study1 = -1;
logse_eQ_Study2 = -1;
logse_eQ_Study3 = -1;
logse_eR_Study1 = -1;
logse_eR_Study2 = -1;
logse_eR_Study3 = -1;
logse_uR_Study1 = -1;
logse_uR_Study2 = -1;
logse_uR_Study3 = -1;
z_eQuR_Study1 = 0;
z_eQuR_Study2 = 0;
z_eQuR_Study3 = 0;
logse_delta = -1;
z_Tij = 0.5;
log_omega_phi = -0.5;
run;
/* call proc calis to fit measurement error (ME) model. */
/* Note 1: The most important table in the output is the final table labeled "Additional Parameters". */
/* Note 2: SAS will print the following warnings to the log file:
WARNING: Group 1. Variable b1_5 is constant for all nonmissing values ...
NOTE: PROC CALIS failed to fit the saturated model by the FIML estimation.
These warnings are generated because the data is sparse and can be safely igonored. */
ods exclude modelstatement endogenousvar exogenousvar stdmanifesteq stdlatenteq sqmultcorr lineqseq;
proc calis data=simdata method=fiml stderr nostand pshort inest=inest outest=outest;
nloptions omethod=newrap gconv=1e-8 fconv=1e-8 maxiter=200 maxfunc=1000 history;
/* --- */
/* define general ME model. */
/* --- */
model 1;
lineqs
/* true average intake in time period i = 1 to 10. */
ft_1 = mean_Tij * intercept + dt1,
ft_2 = mean_Tij * intercept + dt2,
ft_3 = mean_Tij * intercept + dt3,
ft_4 = mean_Tij * intercept + dt4,
ft_5 = mean_Tij * intercept + dt5,
ft_6 = mean_Tij * intercept + dt6,
ft_7 = mean_Tij * intercept + dt7,
ft_8 = mean_Tij * intercept + dt8,
ft_9 = mean_Tij * intercept + dt9,
ft_10 = mean_Tij * intercept + dt10,
/* ffq. */
q = beta_Q0 * intercept + beta_Q1a * ft_3 + beta_Q1a * ft_4 + beta_Q1a * ft_5 + beta_Q1a * ft_6 + eq,
/* person-specific bias for 24-hour recall. */
fur = 0 * intercept + dur;
/* covariance parameters. */
parameter logse_delta var_delta log_omega_phi omega_phi z_Tij rho_Tij corr_T2- corr_T&nperiod;
var_delta = exp(2 * logse_delta);
omega_phi = exp(log_omega_phi);
rho_Tij = (exp(2 * z_Tij) - 1) / (exp(2 * z_Tij) + 1);
array corrt (*) corr_T2-corr_T&nperiod;
/* autoregressive correlation structure for true average intake. */
/*
do i = 1 to dim(corrt);
corrt[i] = rho_Tij**i;
end;
*/
/* compound symmetric correlation structure for true average intake. */
do i = 1 to dim(corrt);
corrt[i] = rho_Tij;
end;
/* --- */
/* define study-specific ME models. */
/* --- */
group 1 / data=simdata(where=(study=1)) label="Study 1";
group 2 / data=simdata(where=(study=2)) label="Study 2";
group 3 / data=simdata(where=(study=3)) label="Study 3";
/* --- */
/* ME model for Study 1. */
/* --- */
model 2 / group=1;
refmodel 1;
/* rename parameters that differ by group. */
renameparm mean_Tij = mean_Tij_Study1, beta_Q0 = beta_Q0_Study1,
beta_Q1a = beta_Q1a_Study1;
lineqs
/* true intake on a given day */
ft1_5 = 0 * intercept + ft_5 + dphi1, ft2_6 = 0 * intercept + ft_6 + dphi2, ft2_7 = 0 * intercept + ft_7 + dphi3, ft7_5 = 0 * intercept + ft_5 + dphi4, ft7_6 = 0 * intercept + ft_6 + dphi5, ft9_5 = 0 * intercept + ft_5 + dphi6, ft9_6 = 0 * intercept + ft_6 + dphi7, /* 24-hour recall */
r1_5 = beta_R0_Study1 * intercept + beta_R1_Study1 * ft1_5 + fur + er1, r2_6 = beta_R0_Study1 * intercept + beta_R1_Study1 * ft2_6 + fur + er2, r2_7 = beta_R0_Study1 * intercept + beta_R1_Study1 * ft2_7 + fur + er3, /* biomarker values */
b1_5 = 0 * intercept + ft1_5 + eb1, b7_5 = 0 * intercept + ft7_5 + eb2, b7_6 = 0 * intercept + ft7_6 + eb3, b9_6 = 0 * intercept + ft9_6 + eb4;
variance
dur = var_uR_Study1, eq = var_eQ_Study1,
dt1-dt&nperiod = var_Tij_Study1 [...], dphi1-dphi7 = var_phi_Study1 [...], er1-er3 = var_eR_Study1 [...], eb1-eb4 = var_delta [...];
cov
dur * eq = cov_eQuR_Study1,
dt1 * dt2-dt&nperiod = cov_Study1_T2-cov_Study1_T10, dt2 * dt3-dt&nperiod = cov_Study1_T2-cov_Study1_T9, dt3 * dt4-dt&nperiod = cov_Study1_T2-cov_Study1_T8, dt4 * dt5-dt&nperiod = cov_Study1_T2-cov_Study1_T7, dt5 * dt6-dt&nperiod = cov_Study1_T2-cov_Study1_T6, dt6 * dt7-dt&nperiod = cov_Study1_T2-cov_Study1_T5, dt7 * dt8-dt&nperiod = cov_Study1_T2-cov_Study1_T4, dt8 * dt9-dt&nperiod = cov_Study1_T2-cov_Study1_T3, dt9 * dt&nperiod = cov_Study1_T2;
/* study-specific parameters */
parameter beta_Q0_Study1 beta_Q1_Study1 beta_R0_Study1 beta_R1_Study1 mean_Tij_Study1
logse_Tij_Study1 logse_eQ_Study1 logse_eR_Study1 logse_uR_Study1 var_Tij_Study1 var_eQ_Study1 var_eR_Study1 var_uR_Study1
var_phi_Study1 var_Tijk_Study1
z_eQuR_Study1 corr_eQuR_Study1 cov_eQuR_Study1 cov_Study1_T2-cov_Study1_T&nperiod
var_Ti_Study1 var_Q_Study1 var_R_Study1 cov_QT_Study1 cov_RT_Study1 corr_QT_Study1 corr_RT_Study1 atten_Q_Study1 atten_R_Study1;
beta_Q1_Study1 = 4 * beta_Q1a_Study1;
var_Tij_Study1 = exp(2 * logse_Tij_Study1);
var_eQ_Study1 = exp(2 * logse_eQ_Study1);
var_eR_Study1 = exp(2 * logse_eR_Study1);
var_uR_Study1 = exp(2 * logse_uR_Study1);
var_phi_Study1 = var_Tij_Study1 * omega_phi;
var_Tijk_Study1 = var_Tij_Study1 + var_phi_Study1;
corr_eQuR_Study1 = (exp(2 * z_eQuR_Study1) - 1) / (exp(2 * z_eQuR_Study1) + 1);
cov_eQuR_Study1 = corr_eQuR_Study1 * sqrt(var_eQ_Study1 * var_uR_Study1);
array covt1 (*) cov_Study1_T2-cov_Study1_T&nperiod;
do i = 1 to dim(covt1);
covt1[i] = corrt[i] * var_Tij_Study1;
end;
/* calculate correlations with truth and attenuation factors. */
var_Ti_Study1 = var_Tij_Study1 * (4 + 6 * corr_T2 + 4 * corr_T3 + 2 * corr_T4) /
4**2;
var_Q_Study1 = beta_Q1_Study1**2 * var_Ti_Study1 + var_eQ_Study1;
var_R_Study1 = beta_R1_Study1**2 * var_Tijk_Study1 + var_uR_Study1 + var_eR_Study1;
cov_QT_Study1 = beta_Q1_Study1 * var_Ti_Study1;
cov_RT_Study1 = beta_R1_Study1 * var_Tij_Study1 * (1 + 2 * corr_T2 + corr_T3) / 4;
corr_QT_Study1 = cov_QT_Study1 / sqrt(var_Q_Study1 * var_Ti_Study1);
corr_RT_Study1 = cov_RT_Study1 / sqrt(var_R_Study1 * var_Ti_Study1);
atten_Q_Study1 = cov_QT_Study1 / var_Q_Study1;
atten_R_Study1 = cov_RT_Study1 / var_R_Study1;
/* --- */
/* ME model for Study 2. */
/* --- */
model 3 / group=2;
refmodel 1;
/* rename parameters that differ by group. */
renameparm mean_Tij = mean_Tij_Study2, beta_Q0 = beta_Q0_Study2,
beta_Q1a = beta_Q1a_Study2;
lineqs
/* true intake on a given day */
ft1_5 = 0 * intercept + ft_5 + dphi1,
ft1_6 = 0 * intercept + ft_6 + dphi2,
ft2_5 = 0 * intercept + ft_5 + dphi3,
ft2_6 = 0 * intercept + ft_6 + dphi4,
ft3_5 = 0 * intercept + ft_5 + dphi5,
ft3_6 = 0 * intercept + ft_6 + dphi6,
ft3_7 = 0 * intercept + ft_7 + dphi7,
ft4_7 = 0 * intercept + ft_7 + dphi8,
ft4_8 = 0 * intercept + ft_8 + dphi9,
ft4_9 = 0 * intercept + ft_9 + dphi10,
ft5_7 = 0 * intercept + ft_7 + dphi11,
ft5_8 = 0 * intercept + ft_8 + dphi12,
ft5_9 = 0 * intercept + ft_9 + dphi13,
ft5_10 = 0 * intercept + ft_10 + dphi14,
ft6_7 = 0 * intercept + ft_7 + dphi15,
ft6_8 = 0 * intercept + ft_8 + dphi16, ft6_9 = 0 * intercept + ft_9 + dphi17, ft6_10 = 0 * intercept + ft_10 + dphi18, ft7_6 = 0 * intercept + ft_6 + dphi19, ft8_5 = 0 * intercept + ft_5 + dphi20, ft8_6 = 0 * intercept + ft_6 + dphi21, ft8_9 = 0 * intercept + ft_9 + dphi22, ft10_7 = 0 * intercept + ft_7 + dphi23, ft10_8 = 0 * intercept + ft_8 + dphi24, ft10_9 = 0 * intercept + ft_9 + dphi25, ft10_10 = 0 * intercept + ft_10 + dphi26, /* 24-hour recall */
r1_5 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft1_5 + fur + er1, r1_6 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft1_6 + fur + er2, r2_5 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft2_5 + fur + er3, r2_6 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft2_6 + fur + er4, r3_5 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft3_5 + fur + er5, r3_6 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft3_6 + fur + er6, r3_7 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft3_7 + fur + er7, r4_7 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft4_7 + fur + er8, r4_8 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft4_8 + fur + er9, r4_9 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft4_9 + fur + er10, r5_7 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft5_7 + fur + er11, r5_8 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft5_8 + fur + er12, r5_9 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft5_9 + fur + er13, r5_10 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft5_10 + fur + er14, r6_7 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft6_7 + fur + er15, r6_8 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft6_8 + fur + er16, r6_9 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft6_9 + fur + er17, r6_10 = beta_R0_Study2 * intercept + beta_R1_Study2 * ft6_10 + fur + er18, /* biomarker values */
b1_5 = 0 * intercept + ft1_5 + eb1,
b1_6 = 0 * intercept + ft1_6 + eb2,
b2_5 = 0 * intercept + ft2_5 + eb3,
b2_6 = 0 * intercept + ft2_6 + eb4,
b3_6 = 0 * intercept + ft3_6 + eb5,
b4_7 = 0 * intercept + ft4_7 + eb6,
b4_8 = 0 * intercept + ft4_8 + eb7,
b5_7 = 0 * intercept + ft5_7 + eb8,
b5_8 = 0 * intercept + ft5_8 + eb9,
b5_9 = 0 * intercept + ft5_9 + eb10,
b5_10 = 0 * intercept + ft5_10 + eb11,
b6_7 = 0 * intercept + ft6_7 + eb12, b6_8 = 0 * intercept + ft6_8 + eb13, b6_9 = 0 * intercept + ft6_9 + eb14, b7_6 = 0 * intercept + ft7_6 + eb15, b8_5 = 0 * intercept + ft8_5 + eb16, b8_6 = 0 * intercept + ft8_6 + eb17, b8_9 = 0 * intercept + ft8_9 + eb18, b10_7 = 0 * intercept + ft10_7 + eb19, b10_8 = 0 * intercept + ft10_8 + eb20, b10_9 = 0 * intercept + ft10_9 + eb21, b10_10 = 0 * intercept + ft10_10 + eb22;
variance
dur = var_uR_Study2, eq = var_eQ_Study2,
dt1-dt&nperiod = var_Tij_Study2 [...], dphi1-dphi26 = var_phi_Study2 [...], er1-er18 = var_eR_Study2 [...], eb1-eb22 = var_delta [...];
cov
dur * eq = cov_eQuR_Study2,
dt1 * dt2-dt&nperiod = cov_Study2_T2-cov_Study2_T10, dt2 * dt3-dt&nperiod = cov_Study2_T2-cov_Study2_T9, dt3 * dt4-dt&nperiod = cov_Study2_T2-cov_Study2_T8, dt4 * dt5-dt&nperiod = cov_Study2_T2-cov_Study2_T7, dt5 * dt6-dt&nperiod = cov_Study2_T2-cov_Study2_T6, dt6 * dt7-dt&nperiod = cov_Study2_T2-cov_Study2_T5, dt7 * dt8-dt&nperiod = cov_Study2_T2-cov_Study2_T4, dt8 * dt9-dt&nperiod = cov_Study2_T2-cov_Study2_T3, dt9 * dt&nperiod = cov_Study2_T2;
/* study-specific parameters */
parameter beta_Q0_Study2 beta_Q1_Study2 beta_R0_Study2 beta_R1_Study2 mean_Tij_Study2
logse_Tij_Study2 logse_eQ_Study2 logse_eR_Study2 logse_uR_Study2 var_Tij_Study2 var_eQ_Study2 var_eR_Study2 var_uR_Study2
var_phi_Study2 var_Tijk_Study2
z_eQuR_Study2 corr_eQuR_Study2 cov_eQuR_Study2 cov_Study2_T2-cov_Study2_T&nperiod
var_Ti_Study2 var_Q_Study2 var_R_Study2 cov_QT_Study2 cov_RT_Study2 corr_QT_Study2 corr_RT_Study2 atten_Q_Study2 atten_R_Study2;
beta_Q1_Study2 = 4 * beta_Q1a_Study2;
var_Tij_Study2 = exp(2 * logse_Tij_Study2);
var_eQ_Study2 = exp(2 * logse_eQ_Study2);
var_eR_Study2 = exp(2 * logse_eR_Study2);
var_uR_Study2 = exp(2 * logse_uR_Study2);
var_phi_Study2 = var_Tij_Study2 * omega_phi;
var_Tijk_Study2 = var_Tij_Study2 + var_phi_Study2;
corr_eQuR_Study2 = (exp(2 * z_eQuR_Study2) - 1) / (exp(2 * z_eQuR_Study2) + 1);
cov_eQuR_Study2 = corr_eQuR_Study2 * sqrt(var_eQ_Study2 * var_uR_Study2);
array covt2 (*) cov_Study2_T2-cov_Study2_T&nperiod;
do i = 1 to dim(covt2);
covt2[i] = corrt[i] * var_Tij_Study2;
end;
/* calculate correlations with truth and attenuation factors. */
var_Ti_Study2 = var_Tij_Study2 * (4 + 6 * corr_T2 + 4 * corr_T3 + 2 * corr_T4) / 4**2;
var_Q_Study2 = beta_Q1_Study2**2 * var_Ti_Study2 + var_eQ_Study2;
var_R_Study2 = beta_R1_Study2**2 * var_Tijk_Study2 + var_uR_Study2 + var_eR_Study2;
cov_QT_Study2 = beta_Q1_Study2 * var_Ti_Study2;
cov_RT_Study2 = beta_R1_Study2 * var_Tij_Study2 * (1 + 2 * corr_T2 + corr_T3) / 4;
corr_QT_Study2 = cov_QT_Study2 / sqrt(var_Q_Study2 * var_Ti_Study2);
corr_RT_Study2 = cov_RT_Study2 / sqrt(var_R_Study2 * var_Ti_Study2);
atten_Q_Study2 = cov_QT_Study2 / var_Q_Study2;
atten_R_Study2 = cov_RT_Study2 / var_R_Study2;
/* --- */
/* ME model for Study 3. */
/* --- */
model 4 / group=3;
refmodel 1;
/* rename parameters that differ by group. */
renameparm mean_Tij = mean_Tij_Study3,
beta_Q0 = beta_Q0_Study3,
beta_Q1a = beta_Q1a_Study3;
lineqs
/* true intake on a given day */
ft1_1 = 0 * intercept + ft_1 + dphi1, ft1_2 = 0 * intercept + ft_2 + dphi2, ft1_3 = 0 * intercept + ft_3 + dphi3, ft1_4 = 0 * intercept + ft_4 + dphi4, ft1_5 = 0 * intercept + ft_5 + dphi5, ft2_1 = 0 * intercept + ft_1 + dphi6, ft2_2 = 0 * intercept + ft_2 + dphi7, ft2_3 = 0 * intercept + ft_3 + dphi8, ft2_4 = 0 * intercept + ft_4 + dphi9, ft2_5 = 0 * intercept + ft_5 + dphi10, ft3_1 = 0 * intercept + ft_1 + dphi11, ft3_2 = 0 * intercept + ft_2 + dphi12, ft3_3 = 0 * intercept + ft_3 + dphi13, ft3_4 = 0 * intercept + ft_4 + dphi14, ft3_5 = 0 * intercept + ft_5 + dphi15, ft4_7 = 0 * intercept + ft_7 + dphi16, ft4_8 = 0 * intercept + ft_8 + dphi17, ft5_7 = 0 * intercept + ft_7 + dphi18, ft5_8 = 0 * intercept + ft_8 + dphi19, ft6_7 = 0 * intercept + ft_7 + dphi20, ft6_8 = 0 * intercept + ft_8 + dphi21, ft7_3 = 0 * intercept + ft_3 + dphi22, ft7_5 = 0 * intercept + ft_5 + dphi23, ft8_1 = 0 * intercept + ft_1 + dphi24, ft8_2 = 0 * intercept + ft_2 + dphi25, ft8_3 = 0 * intercept + ft_3 + dphi26, ft8_5 = 0 * intercept + ft_5 + dphi27, /* 24-hour recall */
r1_1 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft1_1 + fur + er1,
r1_2 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft1_2 + fur + er2,
r1_3 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft1_3 + fur + er3,
r1_4 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft1_4 + fur + er4,
r1_5 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft1_5 + fur + er5,
r2_1 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft2_1 + fur + er6,
r2_2 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft2_2 + fur + er7,
r2_3 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft2_3 + fur + er8,
r2_4 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft2_4 + fur + er9,
r2_5 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft2_5 + fur + er10,
r3_1 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft3_1 + fur + er11, r3_2 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft3_2 + fur + er12, r3_3 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft3_3 + fur + er13, r3_4 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft3_4 + fur + er14, r3_5 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft3_5 + fur + er15, r4_7 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft4_7 + fur + er16, r4_8 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft4_8 + fur + er17, r5_7 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft5_7 + fur + er18, r5_8 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft5_8 + fur + er19, r6_7 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft6_7 + fur + er20, r6_8 = beta_R0_Study3 * intercept + beta_R1_Study3 * ft6_8 + fur + er21, /* biomarker values */
b1_1 = 0 * intercept + ft1_1 + eb1, b1_2 = 0 * intercept + ft1_2 + eb2, b1_3 = 0 * intercept + ft1_3 + eb3, b1_4 = 0 * intercept + ft1_4 + eb4, b1_5 = 0 * intercept + ft1_5 + eb5, b2_1 = 0 * intercept + ft2_1 + eb6, b2_2 = 0 * intercept + ft2_2 + eb7, b2_3 = 0 * intercept + ft2_3 + eb8, b2_4 = 0 * intercept + ft2_4 + eb9, b2_5 = 0 * intercept + ft2_5 + eb10, b3_4 = 0 * intercept + ft3_4 + eb11, b4_7 = 0 * intercept + ft4_7 + eb12, b4_8 = 0 * intercept + ft4_8 + eb13, b5_7 = 0 * intercept + ft5_7 + eb14, b5_8 = 0 * intercept + ft5_8 + eb15, b7_3 = 0 * intercept + ft7_3 + eb16, b7_5 = 0 * intercept + ft7_5 + eb17, b8_1 = 0 * intercept + ft8_1 + eb18, b8_2 = 0 * intercept + ft8_2 + eb19, b8_3 = 0 * intercept + ft8_3 + eb20, b8_5 = 0 * intercept + ft8_5 + eb21;
variance
dur = var_uR_Study3, eq = var_eQ_Study3,
dt1-dt&nperiod = var_Tij_Study3 [...], dphi1-dphi27 = var_phi_Study3 [...], er1-er21 = var_eR_Study3 [...], eb1-eb21 = var_delta [...];
cov
dur * eq = cov_eQuR_Study3,
dt1 * dt2-dt&nperiod = cov_Study3_T2-cov_Study3_T10, dt2 * dt3-dt&nperiod = cov_Study3_T2-cov_Study3_T9, dt3 * dt4-dt&nperiod = cov_Study3_T2-cov_Study3_T8, dt4 * dt5-dt&nperiod = cov_Study3_T2-cov_Study3_T7, dt5 * dt6-dt&nperiod = cov_Study3_T2-cov_Study3_T6, dt6 * dt7-dt&nperiod = cov_Study3_T2-cov_Study3_T5, dt7 * dt8-dt&nperiod = cov_Study3_T2-cov_Study3_T4, dt8 * dt9-dt&nperiod = cov_Study3_T2-cov_Study3_T3, dt9 * dt&nperiod = cov_Study3_T2;
/* study-specific parameters */
parameter beta_Q0_Study3 beta_Q1_Study3 beta_R0_Study3 beta_R1_Study3 mean_Tij_Study3
logse_Tij_Study3 logse_eQ_Study3 logse_eR_Study3 logse_uR_Study3 var_Tij_Study3 var_eQ_Study3 var_eR_Study3 var_uR_Study3
var_phi_Study3 var_Tijk_Study3
z_eQuR_Study3 corr_eQuR_Study3 cov_eQuR_Study3 cov_Study3_T2-cov_Study3_T&nperiod
var_Ti_Study3 var_Q_Study3 var_R_Study3 cov_QT_Study3 cov_RT_Study3 corr_QT_Study3 corr_RT_Study3 atten_Q_Study3 atten_R_Study3;
beta_Q1_Study3 = 4 * beta_Q1a_Study3;
var_Tij_Study3 = exp(2 * logse_Tij_Study3);
var_eQ_Study3 = exp(2 * logse_eQ_Study3);
var_eR_Study3 = exp(2 * logse_eR_Study3);
var_uR_Study3 = exp(2 * logse_uR_Study3);
var_phi_Study3 = var_Tij_Study3 * omega_phi;
var_Tijk_Study3 = var_Tij_Study3 + var_phi_Study3;
corr_eQuR_Study3 = (exp(2 * z_eQuR_Study3) - 1) / (exp(2 * z_eQuR_Study3) + 1);
cov_eQuR_Study3 = corr_eQuR_Study3 * sqrt(var_eQ_Study3 * var_uR_Study3);
array covt3 (*) cov_Study3_T2-cov_Study3_T&nperiod;
do i = 1 to dim(covt3);
covt3[i] = corrt[i] * var_Tij_Study3;
end;
/* calculate correlations with truth and attenuation factors. */
var_Ti_Study3 = var_Tij_Study3 * (4 + 6 * corr_T2 + 4 * corr_T3 + 2 * corr_T4) / 4**2;
var_Q_Study3 = beta_Q1_Study3**2 * var_Ti_Study3 + var_eQ_Study3;
var_R_Study3 = beta_R1_Study3**2 * var_Tijk_Study3 + var_uR_Study3 + var_eR_Study3;
cov_QT_Study3 = beta_Q1_Study3 * var_Ti_Study3;
cov_RT_Study3 = beta_R1_Study3 * var_Tij_Study3 * (1 + 2 * corr_T2 + corr_T3) / 4;
corr_QT_Study3 = cov_QT_Study3 / sqrt(var_Q_Study3 * var_Ti_Study3);
corr_RT_Study3 = cov_RT_Study3 / sqrt(var_R_Study3 * var_Ti_Study3);
atten_Q_Study3 = cov_QT_Study3 / var_Q_Study3;
atten_R_Study3 = cov_RT_Study3 / var_R_Study3;
run;
Hypothetical data (similar to those from our study)
1 1 5.770 6.016 6.606 . . . . 5.935 . 5.961 . 5 7 . . . . 6 . 6 . -1 103 . . . . 2 . 12 . 1 2 6.124 5.923 5.936 . . . . 6.369 . 6.159 . 5 7 . . . . 6 . 6 . -1 112 . . . . 1 . 13 . 1 3 5.457 5.770 6.062 . . . . 5.663 . 5.786 . 5 7 . . . . 6 . 6 . -1 104 . . . . 2 . 14 . 1 4 5.539 5.572 6.011 . . . . 6.087 . 5.741 . 5 7 . . . . 6 . 6 . -1 108 . . . . 1 . 13 . 1 5 5.167 6.139 5.914 . . . . 5.992 . 6.007 . 5 7 . . . . 6 . 6 . -1 107 . . . . 1 . 11 . 1 6 6.239 6.011 6.197 . . . . 6.393 . 6.222 . 5 7 . . . . 6 . 6 . -1 106 . . . . 1 . 13 . 1 7 6.000 6.087 6.430 . . . . 6.133 . 6.008 . 5 7 . . . . 6 . 6 . -1 113 . . . . 1 . 14 . 1 8 5.388 5.513 5.938 . . . . 5.816 . 5.811 . 5 7 . . . . 6 . 6 . -1 111 . . . . 2 . 13 . 1 9 6.613 6.335 6.084 . . . . 5.970 . 6.014 . 5 7 . . . . 6 . 6 . -1 104 . . . . 1 . 13 . 1 10 5.620 5.208 5.287 . . . . 5.806 . 6.272 . 5 7 . . . . 6 . 6 . -1 106 . . . . 1 . 13 . 1 11 5.546 5.736 6.075 . . . . 5.992 . 5.986 . 5 7 . . . . 6 . 6 . -1 104 . . . . 1 . 12 . 1 12 5.458 6.037 6.308 . . . . 5.919 . 6.019 . 5 7 . . . . 6 . 6 . -1 118 . . . . 2 . 16 . 1 13 6.255 6.190 5.922 . . . . 5.888 . 6.193 . 5 7 . . . . 6 . 6 . -1 111 . . . . 1 . 13 . 1 14 5.745 5.879 5.764 . . . . 6.220 . 5 7 . . . 6 . -1 107 . . . . 13 . 1 15 6.009 5.632 6.081 . . . . 5.572 . 5.488 . 5 7 . . . . 6 . 6 . -1 104 . . . . 2 . 15 . 1 16 6.456 5.862 5.835 . . . . 6.286 . . . 5 7 . . . . 6 . . . -1 106 . . . . 13 . . . 1 17 5.386 6.284 6.092 . . . . 5.915 . 5.721 . 5 7 . . . . 6 . 6 . -1 104 . . . . 2 . 13 . 1 18 5.435 5.397 6.063 . . . . 5.905 . 5.627 . 5 7 . . . . 6 . 6 . -1 111 . . . . 1 . 13 . 1 19 5.695 6.282 6.194 . . . . 6.623 . 6.621 . 5 7 . . . . 6 . 6 . -1 106 . . . . 2 . 13 . 1 20 5.988 6.158 5.678 . . . . 5.975 . 6.160 . 5 7 . . . . 6 . 6 . -1 110 . . . . 3 . 15 . 1 21 6.151 6.384 5.494 . . . . 6.000 . 6.209 . 5 7 . . . . 6 . 6 . -1 106 . . . . 1 . 12 . 1 22 5.168 6.092 5.457 . . . . 6.219 . . . 5 7 . . . . 6 . . . -1 110 . . . . 14 . . . 1 23 5.161 5.720 5.460 . . . . 5.686 . 5.733 . 5 7 . . . . 6 . 6 . -1 107 . . . . 1 . 12 . 1 24 5.904 5.865 5.563 . . . . 5.986 . . . 5 7 . . . . 6 . . . -1 125 . . . . 1 . . . 1 25 5.656 5.558 6.163 . . . . 5.941 . 5 7 . . . 6 . -1 107 . . . . 14 . 1 26 6.043 5.975 5.897 . . . . 6.349 . 6.570 . 5 7 . . . . 6 . 6 . -1 104 . . . . 2 . 14 . 1 27 5.393 5.625 5.625 . . . . 5.601 . 5.943 . 5 7 . . . . 6 . 6 . -1 111 . . . . 3 . 13 . 1 28 6.059 6.065 . . . . . 5.988 . 6.085 . 5 . . . 6 . 6 . -1 . . . 3 . 12 . 1 29 5.910 6.579 6.202 . . . . 6.317 . 6.487 . 5 7 . . . . 6 . 6 . -1 111 . . . . 2 . 13 . 1 30 6.592 5.107 5.900 . . . . 6.254 . . . 5 7 . . . . 6 . . . -1 101 . . . . 13 . . . 1 31 5.797 5.672 5.216 . . . . 6.425 . 6.169 . 5 7 . . . . 6 . 6 . -1 117 . . . . 7 . 19 . 1 32 5.157 5.396 5.811 . . . . 5.806 . 5.717 . 5 7 . . . . 6 . 6 . -1 100 . . . . 2 . 12 . 1 33 5.229 5.165 5.727 . . . . 5.868 . 5.704 . 5 7 . . . . 6 . 6 . -1 104 . . . . 1 . 10 . 1 34 5.490 5.589 5.971 . . . . 6.064 . 6.354 . 5 7 . . . . 6 . 6 . -1 109 . . . . 2 . 13 . 1 35 5.904 6.828 5.760 . . . . 6.003 . 6.057 . 5 7 . . . . 6 . 6 . -1 112 . . . . 1 . 14 . 1 36 5.679 5.633 6.187 . . . . 6.046 . 5.920 . 5 7 . . . . 6 . 6 . -1 106 . . . . 2 . 13 . 1 37 5.059 6.170 5.940 . . . . 5.618 . 5.830 . 5 7 . . . . 6 . 6 . -1 104 . . . . 2 . 13 . 1 38 5.163 5.814 5.442 . . . . 5.633 . 5.860 . 5 7 . . . . 6 . 6 . -1 111 . . . . 2 . 12 . 1 39 5.516 5.202 5.772 . . . . 6.094 . 5.579 . 5 7 . . . . 6 . 6 . -1 97 . . . . 2 . 14 . 1 40 5.418 5.925 5.631 . . . . 6.259 . 6.282 . 5 6 . . . . 6 . 6 . -1 86 . . . . 2 . 13 . 1 41 6.242 5.980 5.993 . . . . 6.577 . 6.251 . 5 7 . . . . 6 . 6 . -1 125 . . . . 1 . 13 . 1 42 6.187 5.877 6.353 . . . . 6.161 . 5.934 . 5 7 . . . . 6 . 6 . -1 109 . . . . 1 . 12 . 1 43 5.636 5.647 5.481 . . . . 5.906 . 6.069 . 5 7 . . . . 6 . 6 . -1 105 . . . . 3 . 13 . 1 44 5.426 5.489 6.148