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 R-squared, etc). If |
liks |
optional vector of log-likelihoods 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()