Package edu.cmu.tetrad.bayes
Class UpdatedBayesIm
java.lang.Object
edu.cmu.tetrad.bayes.UpdatedBayesIm
- All Implemented Interfaces:
BayesIm,Simulator,VariableSource,Im,TetradSerializable,Serializable
Represents a Bayes IM in which all of the conditional probability tables have
been updated to take into account evidence. Updated conditional probability
values of variables with respect to comabinations of their parent values are
calculated on the fly. Values that do not change due to being d-separated
from a variable conditional on its parents are not calculated; rather, these
are simply looked up in the underlying Bayes IM and returned.
- Author:
- Joseph Ramsey
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionUpdatedBayesIm(BayesIm bayesIm) Constructs Bayes net in which CPT's updated for the given evidence are calculated on the fly.UpdatedBayesIm(BayesIm bayesIm, Evidence evidence) Constructs Bayes net in which CPT's updated for the given evidence are calculated on the fly. -
Method Summary
Modifier and TypeMethodDescriptionvoidclearRow(int nodeIndex, int rowIndex) Assigns random probability values to the child values of this row that add to 1.voidclearTable(int nodeIndex) Randomizes every row in the table for the given node index.booleanintgetCorrespondingNodeIndex(int nodeIndex, BayesIm otherBayesIm) getDag()getNode(int nodeIndex) intgetNodeIndex(Node node) intgetNumColumns(int nodeIndex) intintgetNumParents(int nodeIndex) intgetNumRows(int nodeIndex) intgetParent(int nodeIndex, int parentIndex) intgetParentDim(int nodeIndex, int parentIndex) int[]getParentDims(int nodeIndex) int[]getParents(int nodeIndex) intgetParentValue(int nodeIndex, int rowIndex, int colIndex) int[]getParentValues(int nodeIndex, int rowIndex) doublegetProbability(int nodeIndex, int rowIndex, int colIndex) Calculates the probability for the given node, at the given row and column of the conditional probability table (CPT), updated for the evidence provided in the constuctor.intgetRowIndex(int nodeIndex, int[] values) booleanisIncomplete(int nodeIndex) booleanisIncomplete(int nodeIndex, int rowIndex) voidNormalizes all rows in the tables associated with each of node in turn.voidnormalizeNode(int nodeIndex) Normalizes all rows in the table associated with a given node.voidnormalizeRow(int nodeIndex, int rowIndex) Normalizes the given row.voidrandomizeIncompleteRows(int nodeIndex) Randomizes any row in the table for the given node index that has a Double.NaN value in it.voidrandomizeRow(int nodeIndex, int rowIndex) Assigns random probability values to the child values of this row that add to 1.voidrandomizeTable(int nodeIndex) Randomizes every row in the table for the given node index.static UpdatedBayesImGenerates a simple exemplar of this class to test serialization.voidsetProbability(int nodeIndex, double[][] probMatrix) Sets the probability for the given node.voidsetProbability(int nodeIndex, int rowIndex, int colIndex, double value) Sets the probability for the given node at a given row and column in the table for that node.simulateData(int sampleSize, boolean latentDataSaved) Simulates a sample with the given sample size.simulateData(DataSet dataSet, boolean latentDataSaved) Overwrites the given dataSet with a new simulated dataSet, to avoid allocating memory.toString()Prints out the probability table for each variable.
-
Constructor Details
-
UpdatedBayesIm
Constructs Bayes net in which CPT's updated for the given evidence are calculated on the fly. -
UpdatedBayesIm
Constructs Bayes net in which CPT's updated for the given evidence are calculated on the fly.
-
-
Method Details
-
serializableInstance
Generates a simple exemplar of this class to test serialization. -
getBayesPm
- Specified by:
getBayesPmin interfaceBayesIm- Returns:
- the underlying Bayes PM.
-
getDag
-
getNumNodes
public int getNumNodes()- Specified by:
getNumNodesin interfaceBayesIm- Returns:
- the number of nodes in the model.
-
getNode
-
getNode
-
getNodeIndex
- Specified by:
getNodeIndexin interfaceBayesIm- Parameters:
node- the given node.- Returns:
- the index for that node, or -1 if the node is not in the BayesIm.
-
getNumColumns
public int getNumColumns(int nodeIndex) - Specified by:
getNumColumnsin interfaceBayesIm- Returns:
- the number of columns in the table of the given node N with index 'nodeIndex'--that is, the number of possible values that N can take on. That is, if P(N=v0 | P1=v1, P2=v2, ... Pn=vn) is a conditional probability stored in 'probs', then the maximum number of rows in the table for N is #vals(N).
- See Also:
-
getNumRows
public int getNumRows(int nodeIndex) - Specified by:
getNumRowsin interfaceBayesIm- Returns:
- the number of rows in the table of the given node, which would be the total number of possible combinations of parent values for a given node. That is, if P(N=v0 | P1=v1, P2=v2, ... Pn=vn) is a conditional probability stored in 'probs', then the maximum number of rows in the table for N is #vals(P1) x #vals(P2) x ... x #vals(Pn).
- See Also:
-
getNumParents
public int getNumParents(int nodeIndex) - Specified by:
getNumParentsin interfaceBayesIm- Parameters:
nodeIndex- the given node.- Returns:
- the number of parents of the given node.
-
getParent
public int getParent(int nodeIndex, int parentIndex) -
getParentDim
public int getParentDim(int nodeIndex, int parentIndex) - Specified by:
getParentDimin interfaceBayesIm- Returns:
- the dimension of the given parent for the given node.
-
getParentDims
public int[] getParentDims(int nodeIndex) - Specified by:
getParentDimsin interfaceBayesIm- Returns:
- (a defensive copy of) the array representing the dimensionality of each parent of a node, that is, the number of values which that node can take on. The order of entries in this array is the same as the order of entries of nodes returned by getParents() for that node.
- See Also:
-
getParents
public int[] getParents(int nodeIndex) - Specified by:
getParentsin interfaceBayesIm- Returns:
- (a defensive copy of) the array containing all of the parents of a given node in the order in which they are stored internally.
- See Also:
-
getParentValues
public int[] getParentValues(int nodeIndex, int rowIndex) - Specified by:
getParentValuesin interfaceBayesIm- Parameters:
nodeIndex- the index of the node.rowIndex- the index of the row in question.- Returns:
- an array containing the combination of parent values for a given node and given row in the probability table for that node. To get the combination of parent values from the row number, the row number is represented using a variable-base place value system, where the bases for each place value are the dimensions of the parents in the order in which they are given by getParentDims(). For instance, if the row number (base 10) is 103 and the parent dimension array is [3 5 7], we calculate the first value as 103 / 7 = 14 with a remainder of 5. We then divide 14 / 5 = 2 with a remainder of 4. We then divide 2 / 3 = 0 with a remainder of 2. The variable place value representation is [2 4 5], which is the combination of parent values. This is the inverse function of getRowIndex().
- See Also:
-
getParentValue
public int getParentValue(int nodeIndex, int rowIndex, int colIndex) - Specified by:
getParentValuein interfaceBayesIm- Returns:
- the value in the probability table for the given node, at the given row and column.
-
getProbability
public double getProbability(int nodeIndex, int rowIndex, int colIndex) Calculates the probability for the given node, at the given row and column of the conditional probability table (CPT), updated for the evidence provided in the constuctor.- Specified by:
getProbabilityin interfaceBayesIm- Parameters:
nodeIndex- the index of the node in question.rowIndex- the row in the table for this for node which represents the combination of parent values in question.colIndex- the column in the table for this node which represents the value of the node in question.- Returns:
- the probability for the given node at the given row and column in the table for that node. To get the node index, use getNodeIndex(). To get the row index, use getRowIndex(). To get the column index, use getCategoryIndex() from the underlying BayesPm(). The value returned will represent a conditional probability of the form P(N=v0 | P1=v1, P2=v2, ... , Pn=vn), where N is the node referenced by nodeIndex, v0 is the value referenced by colIndex, and the combination of parent values indicated is the combination indicated by rowIndex.
- See Also:
-
getRowIndex
public int getRowIndex(int nodeIndex, int[] values) - Specified by:
getRowIndexin interfaceBayesIm- Returns:
- the row in the table at which the given combination of parent
values is represented for the given node. The row is calculated as a
variable-base place-value number. For instance, if the array of parent
dimensions is [3, 5, 7] and the parent value combination is [2, 4, 5],
then the row number is (7 * (5 * (3 * 0 + 2) + 4)) + 5 = 103. This is the
inverse function to getVariableValues().
Note: If the node has n values, the length of 'values' must be >= the number of parents. Only the first n values are used.
- See Also:
-
normalizeAll
public void normalizeAll()Description copied from interface:BayesImNormalizes all rows in the tables associated with each of node in turn.- Specified by:
normalizeAllin interfaceBayesIm
-
normalizeNode
public void normalizeNode(int nodeIndex) Description copied from interface:BayesImNormalizes all rows in the table associated with a given node.- Specified by:
normalizeNodein interfaceBayesIm
-
normalizeRow
public void normalizeRow(int nodeIndex, int rowIndex) Description copied from interface:BayesImNormalizes the given row.- Specified by:
normalizeRowin interfaceBayesIm
-
setProbability
public void setProbability(int nodeIndex, double[][] probMatrix) Description copied from interface:BayesImSets the probability for the given node. The matrix row represent row index, the row in the table for this for node which represents the combination of parent values in question. of the CPT. The matrix column represent column index, the column in the table for this node which represents the value of the node in question.- Specified by:
setProbabilityin interfaceBayesIm- Parameters:
nodeIndex- the index of the node in question.probMatrix- a matrix containing probabilities of a node along with its parents
-
setProbability
public void setProbability(int nodeIndex, int rowIndex, int colIndex, double value) Description copied from interface:BayesImSets the probability for the given node at a given row and column in the table for that node. To get the node index, use getNodeIndex(). To get the row index, use getRowIndex(). To get the column index, use getCategoryIndex() from the underlying BayesPm(). The value returned will represent a conditional probability of the form P(N=v0 | P1=v1, P2=v2, ... , Pn=vn), where N is the node referenced by nodeIndex, v0 is the value referenced by colIndex, and the combination of parent values indicated is the combination indicated by rowIndex.- Specified by:
setProbabilityin interfaceBayesIm- Parameters:
nodeIndex- the index of the node in question.rowIndex- the row in the table for this for node which represents the combination of parent values in question.colIndex- the column in the table for this node which represents the value of the node in question.value- the desired probability to be set.- See Also:
-
getCorrespondingNodeIndex
- Specified by:
getCorrespondingNodeIndexin interfaceBayesIm- Returns:
- the index of the node with the given name in the specified BayesIm.
-
clearRow
public void clearRow(int nodeIndex, int rowIndex) Description copied from interface:BayesImAssigns random probability values to the child values of this row that add to 1. -
randomizeRow
public void randomizeRow(int nodeIndex, int rowIndex) Description copied from interface:BayesImAssigns random probability values to the child values of this row that add to 1.- Specified by:
randomizeRowin interfaceBayesIm- Parameters:
nodeIndex- the node for the table that this row belongs to.rowIndex- the index of the row.
-
randomizeIncompleteRows
public void randomizeIncompleteRows(int nodeIndex) Description copied from interface:BayesImRandomizes any row in the table for the given node index that has a Double.NaN value in it.- Specified by:
randomizeIncompleteRowsin interfaceBayesIm- Parameters:
nodeIndex- the node for the table whose incomplete rows are to be randomized.
-
randomizeTable
public void randomizeTable(int nodeIndex) Description copied from interface:BayesImRandomizes every row in the table for the given node index.- Specified by:
randomizeTablein interfaceBayesIm- Parameters:
nodeIndex- the node for the table to be randomized.
-
clearTable
public void clearTable(int nodeIndex) Description copied from interface:BayesImRandomizes every row in the table for the given node index.- Specified by:
clearTablein interfaceBayesIm- Parameters:
nodeIndex- the node for the table to be randomized.
-
isIncomplete
public boolean isIncomplete(int nodeIndex, int rowIndex) - Specified by:
isIncompletein interfaceBayesIm- Returns:
- true iff one of the values in the given row is Double.NaN.
-
isIncomplete
public boolean isIncomplete(int nodeIndex) - Specified by:
isIncompletein interfaceBayesIm- Returns:
- true iff any value in the table for the given node is Double.NaN.
-
simulateData
Description copied from interface:BayesImSimulates a sample with the given sample size.- Specified by:
simulateDatain interfaceBayesIm- Specified by:
simulateDatain interfaceSimulator- Parameters:
sampleSize- the sample size.- Returns:
- the simulated sample as a DataSet.
-
simulateData
Description copied from interface:BayesImOverwrites the given dataSet with a new simulated dataSet, to avoid allocating memory. The given dataSet must have the necessary number of columns.- Specified by:
simulateDatain interfaceBayesIm- Returns:
- the simulated sample as a DataSet.
-
getVariables
- Specified by:
getVariablesin interfaceBayesIm- Specified by:
getVariablesin interfaceVariableSource- Returns:
- the list of variable for this Bayes net.
-
getVariableNames
- Specified by:
getVariableNamesin interfaceBayesIm- Specified by:
getVariableNamesin interfaceVariableSource- Returns:
- the list of variable names for this Bayes net.
-
getMeasuredNodes
- Specified by:
getMeasuredNodesin interfaceBayesIm- Returns:
- the list of measured variableNodes.
-
equals
-
toString
Prints out the probability table for each variable. -
getEvidence
-