match.bb {hamlet}R Documentation

Branch and Bound algorithm implementation for performing multigroup non-bipartite matching

Description

This function performs multigroup non-bipartite matching of observations based on a provided distance/dissimilarity matrix 'd'. The number of elements in each submatch is defined by the parameter 'g'.

Usage

match.bb(d, g = 2, presort = "complete", progress = 1e+05, 
bestknown = Inf, maxbranches = Inf, verb = 0)

Arguments

d

A distance matrix with NxN elements

g

Number of elements per each submatch, i.e. how many observations are always matched together

presort

If hierarchical clustering should be used for an initial guess, hclust method-options are valid options ("complete", "single", "ward", "average")

progress

How many branching operations are done before outputting information to the user

bestknown

If a best known solution already exists, this can be used to bound branches of the tree before initiation. The default Inf value causes whole search tree to be potential solution space.

maxbranches

Maximum number of branching operations before returning current best solution, by default no cutoff is defined.

verb

Level of verbosity

Details

See further details in the reference Laajala et al.

Value

The function returns a list of objects, where elements are

branches

Number of branching operations during the branch and bound algorithm

bounds

Number of bounding operations during the branch and bound algorithm

ends

Number of end leaf nodes visited during the branch and bound algorithm

matrix

The resulting binary matching matrix where rows and columns sum to g

solution

The resulting matching vector where each element indicates the submatch where the observation was placed

cost

Final cost value of the target function in the minimization task

Note

Notice that the solution submatch vector in $solution is not the same as the intervention group allocation. Submatches should be randomly allocated to intervention arms using the match.allocate-function.

The package 'nbpMatching' provides a FORTRAN implementation for computation of paired non-bipartite matching case (g=2).

Computation may be heavy if the number of observations is high, or the number of within-submatch pairwise distances to consider is high (increases quadratically as a function of 'g').

Author(s)

Teemu Daniel Laajala <teelaa@utu.fi>

See Also

match.allocate match.mat2vec match.vec2mat match.dummy

Examples

data(vcapwide)

# Construct an Euclidean distance example distance matrix using 15 observations from the VCaP study
d <- as.matrix(dist(vcapwide[1:15,c("PSAWeek10", "BWWeek10")]))

bb3 <- match.bb(d, g=3)
str(bb3)

mat <- bb3$matrix 
# binary matching matrix
solvec <- bb3$solution 
# matching vector, where each element indicates to which submatch each observation belongs to

mixplot(data.frame(vcapwide[1:15,c("PSAWeek10", "BWWeek10")], 
 submatch=as.factor(paste("Submatch_",solvec, sep=""))), pch=16, col=rainbow(5))

[Package hamlet version 0.9.6 Index]