Exact inference in L1-penalized Binary Markov Model

Share:

Description

Functions to calculate a parameter estimates for L1-penalized Binary Markov Models.

Usage

1
2
3
4
BMNExact(X, rhoVec, thrCheck=1e-3, thrPseudo=1e-5, ThetaStart=NULL, 
verbose = FALSE, maxIter=100, timeout=60, penalize.diag=FALSE)
BMNExact.single(X, rho, thrCheck=1e-3, thrPseudo=1e-5, ThetaStart=NULL, 
verbose = FALSE, maxIter=100, timeout=60, penalize.diag=FALSE)

Arguments

X

Input data matrix consisting of 0-1 entries. Has n rows and p columns.

rho

Value of the penalty parameter; If a non-negative p-by-p matrix is given, it is used as the penalty structure.

rhoVec

Gives all values of rho for which the solution should be calculated.

thrCheck

Error threshold at which convergence is declared.

thrPseudo

Error threshold for the interal pseudolikelihood algorithm.

ThetaStart

Starting value for Theta, has to be a p-by-p matrix.

verbose

Should status messages be printed.

maxIter

Maximum number of iteratios to run.

timeout

Number of seconds after which the procedure is stopped; for the path algorithm, this is reset for every value of rho.

penalize.diag

Should the diagonal be penalized?

Details

The function BMNExact fits a penalized pairwise binary Markov model to the data provided as matrix X for each of the elements in the penalty parameter vector rhoVec (note that rhoVec will be sorted in increasing order). Internally, the function BMNExact.single is called for each entry in rhoVec and the results are collected as described below.

Value

rho

Vector of penalty parameters sorted in increasing order.

ThetaList

A list of Theta pxp matrices, corresponding to the penalty parameters in rho.

success

A logical vector of the same length as rho. True, if the function succeeded for the corresponding value in rho.

penalize.diag

Logical. Indicates if the diagonal was penalized (same as input value penalize.diag.

Author(s)

Holger Hoefling

See Also

BMNPseudo, BMNJT

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
library(BMN)
Theta = matrix(numeric(25), ncol=5);
Theta[1,1]=0.5; Theta[2,2]=0.5; Theta[3,3]=0; Theta[4,4]= -0.5; Theta[5,5]= 0.5;
Theta[1,2]=Theta[2,1]=1; Theta[1,4]=Theta[4,1]=1; Theta[2,3]=Theta[3,2]= -1;
numSamples=1000; burnIn=100; skip=1;

simData = BMNSamples(Theta, numSamples, burnIn, skip)

rhoVec = c(0.01, 0.02, 0.03)

exactPath = BMNExact(simData, rhoVec)
exactSingle = BMNExact.single(simData, 0.02)