MCmcmc {MethComp} | R Documentation |
Fit a model for method comparison studies using WinBUGS
Description
A model linking each of a number of methods of measurement linearly to the
"true" value is set up in BUGS and run via the function
bugs
from the R2WinBUGS
package.
Usage
MCmcmc(
data,
bias = "linear",
IxR = has.repl(data),
linked = IxR,
MxI = TRUE,
matrix = MxI,
varMxI = nlevels(factor(data$meth)) > 2,
n.chains = 4,
n.iter = 2000,
n.burnin = n.iter/2,
n.thin = ceiling((n.iter - n.burnin)/1000),
bugs.directory = getOption("bugs.directory"),
debug = FALSE,
bugs.code.file = "model.txt",
clearWD = TRUE,
code.only = FALSE,
ini.mult = 2,
list.ini = TRUE,
org = FALSE,
program = "JAGS",
Transform = NULL,
trans.tol = 1e-06,
...
)
Arguments
data |
Data frame with variables |
bias |
Character. Indicating how the bias between methods should be
modelled. Possible values are |
IxR |
Logical. Are the replicates linked across methods, i.e. should a
random |
linked |
Logical, alias for |
MxI |
Logical, should a |
matrix |
Logical, alias for |
varMxI |
Logical, should the method by item effect have method-specific variances. Ignored if only two methods are compared. |
n.chains |
How many chains should be run by WinBUGS — passed on to
|
n.iter |
How many total iterations — passed on to |
n.burnin |
How many of these should be burn-in — passed on to
|
n.thin |
How many should be sampled — passed on to |
bugs.directory |
Where is WinBUGS (>=1.4) installed — passed on to
|
debug |
Should WinBUGS remain open after running — passed on to
|
bugs.code.file |
Where should the bugs code go? |
clearWD |
Should the working directory be cleared for junk files after
the running of WinBUGS — passed on to |
code.only |
Should |
ini.mult |
Numeric. What factor should be used to randomly perturb the initial values for the variance components, see below in details. |
list.ini |
List of lists of starting values for the chains, or logical
indicating whether starting values should be generated. If
If
|
org |
Logical. Should the posterior of the original model parameters be
returned too? If |
program |
Which program should be used for the MCMC simulation.
Possible values are " |
Transform |
Transformation of data ( |
trans.tol |
The tolerance used to check whether the supplied transformation and its inverse combine to the identity. |
... |
Additional arguments passed on to |
Details
The model set up for an observation y_{mir}
is:
y_{mir} =
\alpha_m + \beta_m(\mu_i+b_{ir} + c_{mi}) +
e_{mir}
where b_{ir}
is a random
item
by repl
interaction (included if "ir"
is in random
)
and c_{mi}
is a random meth
by item
interaction
(included if "mi"
is in random
). The \mu_i
's are
parameters in the model but are not monitored — only the
\alpha
s, \beta
s and the variances of
b_{ir}
, c_{mi}
and e_{mir}
are
monitored and returned. The estimated parameters are only determined up to a
linear transformation of the \mu
s, but the linear functions
linking methods are invariant. The identifiable conversion parameters are:
\alpha_{m\cdot k}=\alpha_m - \alpha_k \beta_m/\beta_k, \quad
\beta_{m\cdot k}=\beta_m/\beta_k
The posteriors of these are derived and included in
the posterior
, which also will contain the posterior of the variance
components (the SDs, that is). Furthermore, the posterior of the point
where the conversion lines intersects the identity as well as the prediction
SDs between any pairs of methods are included.
The function summary.MCmcmc
method gives estimates of the conversion
parameters that are consistent. Clearly,
\mathrm{median}(\beta_{1\cdot
2})=
1/\mathrm{median}(\beta_{2\cdot 1})
because the inverse is a monotone transformation, but there is no guarantee that
\mathrm{median}(\alpha_{1\cdot 2})=
\mathrm{median}(-\alpha_{2\cdot 1}/
\beta_{2\cdot
1})
and hence no guarantee
that the parameters derived as posterior medians produce conversion lines
that are the same in both directions. Therefore, summary.MCmcmc
computes the estimate for \alpha_{2\cdot 1}
as
(\mathrm{median}(\alpha_{1\cdot 2})-\mathrm{median}(\alpha_{2\cdot 1})
/\mathrm{median}(\beta_{2\cdot 1}))/2
and the estimate of \alpha_{1\cdot 2}
correspondingly. The resulting parameter estimates defines the same lines.
Value
If code.only==FALSE
, an object of class MCmcmc
which
is a mcmc.list
object of the relevant parameters, i.e.
the posteriors of the conversion parameters and the variance components
transformed to the scales of each of the methods.
Furthermore, the object have the following attributes:
random |
Character vector indicating which random effects ("ir","mi") were included in the model. |
methods |
Character vector with the method names. |
data |
The data frame used in the analysis. This is used in
|
mcmc.par |
A list giving the number of chains etc. used to generate the object. |
original |
If |
Transform |
The transformation used to the measurements before the analysis. |
If
code.only==TRUE
, a list containing the initial values is generated.
Author(s)
Bendix Carstensen, Steno Diabetes Center, http://BendixCarstensen.com, Lyle Gurrin, University of Melbourne, http://www.epi.unimelb.edu.au/about/staff/gurrin-lyle.
References
B Carstensen: Comparing and predicting between several methods of measurement, Biostatistics, 5, pp 399-413, 2004
See Also
BA.plot
, plot.MCmcmc
,
print.MCmcmc
, check.MCmcmc
Examples
data( ox )
str( ox )
ox <- Meth( ox )
# Writes the BUGS program to your console
MCmcmc( ox, MI=TRUE, IR=TRUE, code.only=TRUE, bugs.code.file="" )
### What is written here is not necessarily correct on your machine.
# ox.MC <- MCmcmc( ox, MI=TRUE, IR=TRUE, n.iter=100, program="JAGS" )
# ox.MC <- MCmcmc( ox, MI=TRUE, IR=TRUE, n.iter=100 )
# data( ox.MC )
# str( ox.MC )
# print( ox.MC )