cnSearchOrder {catnet}R Documentation

Network Search for Given Node Order


The function implements a MLE based algorithm to search for optimal networks complying with a given node order. It returns a list of networks, with complexities up to some maximal value, that best fit the data.


cnSearchOrder(data, perturbations=NULL, 
	maxParentSet=0, parentSizes=NULL, maxComplexity=0, 
	nodeCats=NULL, parentsPool=NULL, fixedParents=NULL, edgeProb=NULL,



a matrix in row-nodes format or a data.frame in column-nodes format


a binary matrix with the dimensions of data. A value 1 marks that the node in the corresponding sample as perturbed


an integer, maximal number of parents for all nodes


an integer vector, maximal number of parents per node


an integer, the maximal network complexity for the search


a vector specifying a node order; the search is among the networks consistent with this topological order


a list of node categories


a list of parent sets to choose from


a list of parent sets to choose from


a square matrix of length the number of nodes specifying prior edge probabilities


a logical that sets on/off some functional progress and debug information


The data can be a matrix of character categories with rows specifying the node-variables and columns assumed to be independent samples from an unknown network, or a data.frame with columns specifying the nodes and rows being the samples.

The number of node categories are obtained from the sample. If given, the nodeCats is used as a list of categories. In that case, nodeCats should include the node categories presented in the data.

The function returns a list of networks, one for each admissible complexity within the specified range. The networks in the list are the Maximum Likelihood estimates in the class of networks having the given topological order of the nodes and complexity. When maxComplexity is not given, thus zero, its value is reset to the maximum possible complexity for the given parent set size. When nodeOrder is not given or NULL, the order of the nodes in the data is taken, 1,2,....

The parameters parentsPool and fixedParents allow the user to put some exclusion/inclusion constrains on the possible parenthood of the nodes. They should be given as lists of index vectors, one for each node.

The rows in edgeProb correspond to the nodes in the sample. The [i,j]-th element in edgeProb specifies a prior probability for the j-th node to be a parent of the i-th one. In calculating the prior probability of a network all edges are assumed independent Bernoulli random variables. The elements of edgeProb are cropped in the range [0,1], such that the zero probabilities effectively exclude the corresponding edges, while the ones force them.


A catNetworkEvaluate object


N. Balov, P. Salzman

See Also



  cnet <- cnRandomCatnet(numnodes=12, maxParents=3, numCategories=2)
  psamples <- cnSamples(object=cnet, numsamples=100)
  nodeOrder <- sample(1:12)
  nets <- cnSearchOrder(data=psamples, perturbations=NULL, 
		maxParentSet=2, maxComplexity=36, nodeOrder)
  ## next we find the network with complexity of the original one and plot it
  cc <- cnComplexity(object=cnet)
  cnFind(object=nets, complexity=cc)

[Package catnet version 1.15.7 Index]