Performs the fit of parametric models via likelihood method. Serial dependence and random intercept are allowed according to the stochastic model chosen. Missing values and unbalanced data are automatically accounted for computing the likelihood function.
bild(formula = formula(data), data, time, id, subSET,
aggregate = FALSE, start = NULL, trace = FALSE,
dependence="ind", method = "BFGS",
control = bildControl(), integrate = bildIntegrate())a description of the model to be fitted of the form response~predictors
a data frame containing the variables in the formula. NA values are allowed.
If data is missing, an error message is produced. See "Details".
a string that matches the name of the time variable in data. By default, the program expects a variable named time
to be present in the data.frame, otherwise the name of the variable playing the role of time must be declared by assigning time here.
a string that matches the name of the id variable in data. By default, the program expects a variable named id
to be present in the data.frame, otherwise the name of the variable playing the role of id must be declared by assigning id here.
an optional expression indicating the subset of the rows of data that should be
used in the fit. All observations are included by default.
a string that permits the user identify the factor to be used in plot-methods.
a vector of initial values for the nuisance parameters of the likelihood. The dimension of the vector is according to the structure of the dependence model.
logical flag: if TRUE, details of the nonlinear optimization are printed. By default the flag is set to FALSE.
expression stating which dependence structure should be used in the fit. The default is "ind".
According to the stochastic model chosen serial dependence and random effects are allowed.
There are six options: "ind" (independence), "MC1" (first order Markov Chain), "MC2" (second order Markov Chain),
"indR" (independence with random intercept), "MC1R" (first order Markov Chain with random intercept) or
"MC2R" (second order Markov Chain with random intercept).
The method used in the optimization process: "BFGS","CG", "L-BFGS-B" and "SANN".
The default is "BFGS".
See optim for details.
a list of algorithmic constants for the optimizer optim.
See R documentation of optim.control for details and possible control options. By default, bild sets the maximum number
of iterations (maxit) equal to 100, the absolute convergence tolerance (abstol) and the relative
convergence tolerance (rel.tol) equal to 1e-6 and uses the optim standard default values for the remaining options.
a list of algorithmic constants for the computation of a definite integral using a Fortran-77 subroutine. See "Details".
An object of class bild.
Assume that each subject of a given set has been observed at number of successive time points. For each subject and for each time point, a binary response variable, taking value 0 and 1, and a set of covariates are recorded. The underlying methodology builds a logistic regression model for the probability that the response variable takes value 1 as a function of the covariates, taking into account that successive observations from the same individual cannot be assumed to be independent.
The basic model for serial dependence is of Markovian type of the first order
(denoted MC1 here), suitably constructed so that the logistic regression
parameters maintain the same meaning as in ordinary logistic regression for
independent observations. The serial dependence parameter is the logarithm of
the odds-ratio between probabilities of adjacent observations, which is
assumed to be constant for all adjacent pairs, and it is denoted here
log.psi1.
An extension of this formulation allows a Markovian dependence of the second
order, denoted MC2 here. In this case there are two parameters which
regulate serial dependence: log.psi1 as before and log.psi2
which is the analogous quantity for observations which are two time units apart,
conditionally on the intermediate value.
Individual random effects can be incorporated in the form of a random
intercept term of the linear predictor of the logistic regression,
assuming a normal distribution of mean 0 and variance \(\sigma^2\),
parameterized as \(\omega=\log(\sigma^2)\).
The combination of serial Markov dependence with a random intercept corresponds here
to the dependence structures MC1R and MC2R.
The combination of an independence structure with a random intercept is also allowed
setting the dependence structure to indR.
Original sources of the above formulation are given by Azzalini (1994), as for the first order Markov dependence, and by Goncalves (2002) and Goncalves and Azzalini (2008) for the its extensions.
data are contained in a data.frame. Each element of the data argument must be identifiable by a name.
The simplest situation occurs when all subjects are observed at the same time points.
The response variable represent the individual profiles of each subject, it is expected
a variable in the data.frame that identifies the correspondence of each component of the response variable to the subject that it belongs,
by default is named id variable. It is expected a variable named time to be present in the data.frame.
If the time component has been given a different name, this should be declared.
The time variable should identify the time points that each individual profile has been observed.
When it is expected that all subjects in one experiment to be observed at the same time points, but in practice some of the subjects were
not observed in some of the scheduled occasions, NA values can then be inserted in the response variable.
If a response profile is replicated several times, a variable called counts must be created accordingly.
This vector is used for weighting the response profile indicating for each individual profile the number of times that is replicated.
The vector counts must repeat the number of the observed replications of each individual profile as many times as the number of observed time
points for the correspondent profile. The program expect such vector to be named counts.
If each profile has been observed only once, the construction of the vector counts is not required.
subSET is an optional expression indicating the subset of data that should be
used in the fit. This is a logical statement of the type
variable 1 == "a" & variable 2 > x
which identifies the observations to be selected. All observations are included by default.
For the models with random intercept indR, MC1R and MC2R,
bild compute integrals based on a Fortran-77 subroutine package
QUADPACK. For some data sets, when the dependence structure has
a random intercept term, the user could have the need to do a specification
of the integrate argument list changing
the integration limits in the bildIntegrate function.
The bildIntegrate is an auxiliary function for controlling bild
fitting. See the example of locust data.
Azzalini, A. (1994). Logistic regression for autocorrelated data with application to repeated measures. Biometrika, 81, 767-775. Amendment: (1997) vol. 84, 989.
Gon<e7>alves, M. Helena (2002). Likelihood methods for discrete longitudinal data. PhD thesis, Faculty of Sciences, University of Lisbon.
Gon<e7>alves, M. Helena and Azzalini, A. (2008). Using Markov chains for marginal modelling of binary longitudinal data in an exact likelihood approach. Metron, vol LXVI, 2, 157-181.
Gon<e7>alves, M. Helena and Cabral, M. Salom<e9> and Azzalini, Adelchi (2012). The R Package bild for the Analysis of Binary Longitudinal Data. Journal of Statistical Software, 46(9), 1-17.
# NOT RUN {
# }
# NOT RUN {
## Are the examples used in respective dataset files
##### data= airpollution, dependence="MC2R"
str(airpollution)
air2r <- bild(wheeze~age+smoking, data=airpollution, trace=TRUE,
time="age", aggregate=smoking, dependence="MC2R")
summary(air2r)
getAIC(air2r)
getLogLik(air2r)
plot(air2r)
#### data=muscatine, dependence="MC2"
str(muscatine)
# we decompose the time effect in orthogonal components
muscatine$time1 <- c(-1, 0, 1)
muscatine$time2 <- c(1, -2, 1)
musc2 <- bild(obese~(time1+time2)*sex, data=muscatine,
time="time1", aggregate=sex, trace=TRUE, dependence="MC2")
summary(musc2)
getAIC(musc2)
getLogLik(musc2)
# }
Run the code above in your browser using DataLab