# bipf: Bayesian Iterative Proportional Fitting (BIPF) In cat: Analysis of categorical-variable datasets with missing values

## Description

Markov-Chain Monte Carlo method for simulating posterior draws of cell probabilities under a hierarchical loglinear model

## Usage

 `1` ```bipf(table,margins, prior=0.5, start, steps=1, showits=FALSE) ```

## Arguments

 `table ` contingency table (array) to be fitted by a log-linear model. All elements must be non-negative. `margins ` vector describing the marginal totals to be fitted. A margin is described by the factors not summed over, and margins are separated by zeros. Thus c(1,2,0,2,3,0,1,3) would indicate fitting the (1,2), (2,3), and (1,3) margins in a three-way table, i.e., the model of no three-way association. `prior ` optional array of hyperparameters specifying a Dirichlet prior distribution. The default is the Jeffreys prior (all hyperparameters = .5). If structural zeros appear in `table`, a prior should be supplied with hyperparameters set to `NA` for those cells. `start ` starting value for the algorithm. The default is a uniform table. If structural zeros appear in `table`, `start` should contain zeros in those cells and ones elsewhere. `steps ` number of cycles of Bayesian IPF to be performed. `showits` if `TRUE`, reports the iterations so the user can monitor the progress of the algorithm.

## Value

array like `table`, but containing simulated cell probabilities that satisfy the loglinear model. If the algorithm has converged, this will be a draw from the actual posterior distribution of the parameters.

## Note

The random number generator seed must be set at least once by the function `rngseed` before this function can be used.

The starting value must lie in the interior of the parameter space. Hence, caution should be used when using a maximum likelihood estimate (e.g., from `ipf`) as a starting value. Random zeros in a table may produce mle's with expected cell counts of zero, and any zero in a starting value is interpreted by `bipf` as a structural zero. This difficulty can be overcome by using as a starting value calculated by `ipf` after adding a small positive constant (e.g., 1/2) to each cell.

## References

Schafer (1996) Analysis of Incomplete Multivariate Data. Chapman \& Hall, Chapter 8.

`ipf` and `rngseed`.

## Examples

 ```1 2 3 4 5 6 7 8 9``` ```data(HairEyeColor) # load data m=c(1,2,0,1,3,0,2,3) # no three-way interaction thetahat <- ipf(HairEyeColor,margins=m, showits=TRUE) # fit model thetahat <- ipf(HairEyeColor+.5,m) # find an interior starting value rngseed(1234567) # set random generator seed theta <- bipf(HairEyeColor,m, start=thetahat,prior=0.5, steps=50) # take 50 steps ```

### Example output

```Cycles of IPF:
1...2...3...4...5...6...7...8...
Cycles of IPF:
1...2...3...4...5...6...7...
```

cat documentation built on May 29, 2017, 9:49 p.m.