DesignMatrix {cmm} | R Documentation |

## DesignMatrix

### Description

Returns hierarchical model design matrix

### Usage

```
DesignMatrix(var, suffconfigs, dim, SubsetCoding = "Automatic", MakeSubsets=TRUE)
```

### Arguments

`var` |
character or numeric vector containing variables |

`suffconfigs` |
subvector or list of subvectors of |

`dim` |
numeric vector indicating the dimension of |

`SubsetCoding` |
allows a (character) type or a matrix to be assigned to variables for each element of |

, see examples

`MakeSubsets` |
boolean, indicates whether or not to use subsets of |

### Details

The design matrix for a model `\mu_{ij}=\alpha+\beta_{i}+\gamma_j`

,
where `i`

and `j`

each have three possible values, would be:
`Designmatrix(c(1,2),list(c(1),c(2)),c(3,3))`

.
For readability, the use of characters is recommended for variable names, e.g.,
`Designmatrix(c("A","B"),list(c("A"),c("B")),c(3,3))`

.
The probability vector is assumed to be a vectorized form of the probabilities in a table,
such that the last variable changes value fastest, then the before last variable, etc.
For example, the cells of a `2 \times 3`

table are arranged in vector form as (11,12,13,21,22,23).
To achieve this, the appropriate way to vectorize a data frame `dat`

is using `c(t(ftable(dat)))`

.

The optional argument `SubsetCoding`

is useful for e.g.\ specifying various regression models,
a linear by nominal model, grouping categories of a variable, or
omitting a category. `SubsetCoding`

has default value
`"Automatic"`

, which is the same as the value `"Nominal"`

.
Other options are `"Linear"`

, `"Quadratic"`

,
`"Cubic"`

, `"Quartic"`

, `"Quintic"`

, `"Identity"`

.\
The command `ConstraintMatrix`

is often more useful than `DesignMatrix`

for specification of models
for use in `SampleStatistics`

, `ModelStatistics`

or `MarginalModelFit`

.

### Value

matrix

### Author(s)

W. P. Bergsma w.p.bergsma@lse.ac.uk

### References

Bergsma, W. P. (1997).
*Marginal models for categorical data*.
Tilburg, The Netherlands: Tilburg University Press.
http://stats.lse.ac.uk/bergsma/pdf/bergsma_phdthesis.pdf

Bergsma, W. P., Croon, M. A., & Hagenaars, J. A. P. (2009). Marginal models for dependent, clustered, and longitudunal categorical data. Berlin: Springer.

### See Also

`ConstraintMatrix`

, `MarginalMatrix`

, `DirectSum`

### Examples

```
# Design matrix for independence model
var <- c("A","B")
suffconfigs <- list(c("A"),c("B"))
dim <- c(3, 3)
DesignMatrix(var,suffconfigs,dim)
# notation in one line
DesignMatrix(c("A","B"),list(c("A"),c("B")),c(3,3))
# Design matrix for saturated model, two short specifications giving same result
DesignMatrix(c("A","B"),c("A","B"),c(3,3))
DesignMatrix(c("A","B"),list(c("A","B")),c(3,3))
# Design matrix for univariate quadratic regression model
var <- c("A")
suffconfigs <- c("A")
dim <- c(5)
DesignMatrix(var,suffconfigs,dim,SubsetCoding=list(c("A"),"Quadratic"))
# notation in one line
DesignMatrix(c("A"),c("A"),c(5),SubsetCoding=list(c("A"),"Quadratic"))
# Design matrix for linear by nominal model, various methods:
# simplest method which assumes equidistant centered scores:
DesignMatrix(
var = c("A","B"),
suffconfigs = c("A", "B"),
dim = c(3,3),
SubsetCoding = list(c("A","B"),list("Linear","Nominal")))
# alternative specification with same result as above:
DesignMatrix(
var = c("A", "B"),
suffconfigs = c("A", "B"),
dim = c(3, 3),
SubsetCoding = list(c("A","B"),list(rbind(c(-1,0,1)),rbind(c(1,0,0),c(0,1,0)))))
# specifying your own category scores
scores <- c(1,2,5);
DesignMatrix(
var = c("A","B"),
suffconfigs = c("A","B"),
dim = c(3, 3),
SubsetCoding = list(c("A","B"), list(rbind(scores), "Nominal")))
# Design matrix for nominal by nominal model, equating parameters
# of last two categories of second variable:
DesignMatrix(
var = c("A", "B"),
suffconfigs = c("A","B"),
dim = c(3,3),
SubsetCoding = list(c("A", "B"), list("Nominal", rbind(c(1, 0, 0), c(0, 1, 1)))))
```

*cmm*version 1.0 Index]