topmod {BMS}  R Documentation 
Topmodel Object
Description
Create or use an updateable list keeping the best x models it encounters (for advanced users)
Usage
topmod(
nbmodels,
nmaxregressors = NA,
bbeta = FALSE,
lengthfixedvec = 0,
liks = numeric(0),
ncounts = numeric(0),
modelbinaries = matrix(0, 0, 0),
betas = matrix(0, 0, 0),
betas2 = matrix(0, 0, 0),
fixed_vector = matrix(0, 0, 0)
)
Arguments
nbmodels 
The maximum number of models to be retained by the topmod object 
nmaxregressors 
The maximum number of covariates the models in the topmod object are allowed to have 
bbeta 
if 
lengthfixedvec 
The length of an optional fixed vector adhering to
each model (for instance Rsquared, etc). If 
liks 
optional vector of loglikelihoods to initialize topmod object
with (length must be 
ncounts 
optional vector of MCMC frequencies to initialize topmod
object with (same length as 
modelbinaries 
optional matrix whose columns detail model binaries to
initialize topmod object with (same nb columns as 
betas 
optional matrix whose columns are coefficients to initialize
topmod object with (same dimensions as 
betas2 
optional matrix whose columns are coefficients' second moments
to initialize topmod object with (same dimensions as 
fixed_vector 
optional matrix whose columns are a fixed vector
initialize topmod object with (same 
Details
A 'topmod' object (as created by topmod
) holds three basic vectors:
lik
(for the (log) likelihood of models or similar), bool()
for a hexcode presentation of the model binaries (cf. bin2hex
)
and ncount() for the times the models have been drawn.
All these vectors
are sorted descendantly by lik
, and are of the same length. The
maximum length is limited by the argument nbmodels
.
If tmo
is a topmod object, then a call to tmo$addmodel
(e.g.
tmo$addmodel(mylik=4,vec01=c(T,F,F,T))
updates the object tmo
by a model represented by vec01
(here the one including the first and
fourth regressor) and the marginal (log) likelihood lik
(here: 4).
If this model is already part of tmo
, then its respective
ncount
entry is incremented by one; else it is inserted into a
position according to the ranking of lik
.
In addition, there is the possibility to save (the first moments of)
coefficients of a model (betas
) and their second moments
(betas2
), as well as an arbitrary vector of statistics per model
(fixed_vector
).
is.topmod
returns TRUE
if the argument is of class 'topmod'
Value
a call to topmod
returns a list of class "topmod" with the
following elements:
addmodel(mylik , vec01 , vbeta=numeric(0) , vbeta2=numeric(0) , fixedvec=numeric(0)) 
function
that adjusts the list of models in the 'topmod' object (see Details).

lik() 
A numeric vector of the best models (log) likelihoods, in decreasing order 
bool() 
A character vector of hexmode expressions
for the model binaries (cf. 
ncount() 
A numeric vector of MCMC frequencies for the best models
(i.e. how often the respective model was introduced by 
nbmodels 
Returns the argument 
nregs 
Returns
the argument 
bool_binary() 
Returns a matrix
whose columns present the models conforming to 
betas() 
a matrix whose columns are the coefficients conforming to

betas2() 
similar to 
fixed_vector() 
The columns of this matrix return the

Note
topmod
is rather intended as a building block for programming;
it has no direct application for a user of the BMS package.
See Also
the object resulting from bms
includes an element of
class 'topmod'
Check http://bms.zeugner.eu for additional help.
Examples
#standard use
tm= topmod(2,4,TRUE,0) #should keep a maximum two models
tm$addmodel(2.3,c(1,1,1,1),1:4,5:8) #update with some model
tm$addmodel(2.2,c(0,1,1,1),1:3,5:7) #add another model
tm$addmodel(2.2,c(0,1,1,1),1:3,5:7) #add it again > adjust ncount
tm$addmodel(2.5,c(1,0,0,1),1:2,5:6) #add another model
#read out
tm$lik()
tm$ncount()
tm$bool_binary()
tm$betas()
is.topmod(tm)
#extract a topmod oobject only containing the second best model
tm2=tm[2]
#advanced: should return the same result as
#initialize
tm2= topmod(2,4,TRUE,0, liks = c(2.2,2.3), ncounts = c(2,1),
modelbinaries = cbind(c(0,1,1,1),c(1,1,1,1)), betas = cbind(0:3,1:4),
betas2 = cbind(c(0,5:7),5:8))
#update
tm$addmodel(2.5,c(1,0,0,1),1:2,5:6) #add another model
#read out
tm$lik()
tm$ncount()
tm$bool_binary()
tm$betas()