# conditionTable: Find conditional probability table In rje: Miscellaneous Useful Functions for Statistics

 conditionMatrix R Documentation

## Find conditional probability table

### Description

Given a numeric array or matrix (of probabilities), calculates margins of some dimensions conditional on particular values of others.

### Usage

```conditionMatrix(
x,
variables,
condition = NULL,
condition.value = NULL,
dim = NULL,
incols = FALSE,
undef = NaN
)

conditionTable(
x,
variables,
condition = NULL,
condition.value = NULL,
undef = NaN,
order = TRUE
)

conditionTable2(x, variables, condition, undef = NaN)
```

### Arguments

 `x` A numeric array. `variables` An integer vector containing the margins of interest from `x`. `condition` An integer vector containing the dimensions of `x` to condition on. `condition.value` An integer vector or list of the same length as `condition`, containing the values to condition with. If `NULL`, then the full conditional distribution is returned. `dim` Integer vector containing dimensions of variables. Assumed all binary if not specified. `incols` Logical specifying whether not the distributions are stored as the columns in the matrix; assumed to be rows by default. `undef` if conditional probability is undefined, what should the value be given as `order` logical - if `TRUE` conditioned variables come last, if `FALSE` variables are in original order.

### Details

`conditionTable` calculates the marginal distribution over the dimensions in `variables` for each specified value of the dimensions in `condition`. Single or multiple values of each dimension in `condition` may be specified in `condition.value`; in the case of multiple values, `condition.value` must be a list.

The sum over the dimensions in `variables` is normalized to 1 for each value of `condition`.

`conditionTable2` is just a wrapper which returns the conditional distribution as an array of the same dimensions and ordering as the original `x`. Values are repeated as necessary.

`conditionMatrix` takes a matrix whose rows (or columns if ```incols = TRUE```) each represent a separate multivariate probability distribution and finds the relevant conditional distribution in each case. These are then returned in the same format. The order of the variables under `conditionMatrix` is always as in the original distribution, unlike for `conditionTable` above.

The probabilities are assumed in reverse lexicographic order, as in a flattened R array: i.e. the first value changes fastest: (1,1,1), (2,1,1), (1,2,1), ..., (2,2,2).

`condition.table` and `condition.table2` are identical to `conditionTable` and `conditionTable2`.

### Value

`conditionTable` returns an array whose first `length(variables)` corresponds to the dimensions in `variables`, and the remainder (if any) to dimensions in `condition` with a corresponding entry in `condition.value` of length > 1.

`conditionTable2` always returns an array of the same dimensions as `x`, with the variables in the same order.

### Functions

• `conditionMatrix`: Conditioning in matrix of distributions

• `conditionTable2`: Conditioning whilst preserving all dimensions

### Author(s)

Mathias Drton, Robin Evans

`marginTable`, `margin.table`, `interventionTable`

### Examples

```
x = array(1:16, rep(2,4))
x = x/sum(x) # probability distribution on 4 binary variables x1, x2, x3, x4.

# distribution of x2, x3 given x1 = 1 and x4=2.
conditionTable(x, c(2,3), c(1,4), c(1,2))
# x2, x3 given x1 = 1,2 and x4 = 2.
conditionTable(x, c(2,3), c(1,4), list(1:2,2))

# complete conditional of x2, x3 given x1, x4
conditionTable(x, c(2,3), c(1,4))

# conditionTable2 leaves dimensions unchanged
tmp = conditionTable2(x, c(2,3), c(1,4))
aperm(tmp, c(2,3,1,4))

####
set.seed(2314)
# set of 10 2x2x2 probability distributions
x = rdirichlet(10, rep(1,8))

conditionMatrix(x, 3, 1)
conditionMatrix(x, 3, 1, 2)

```

rje documentation built on Nov. 12, 2022, 9:06 a.m.