Returns a design or model matrix of orthonormal contrasts such that the marginal prior on all effects is identical (see 'Details'). Implementation from Singmann & Gronau's bfrms, following the description in Rouder, Morey, Speckman, & Province (2012, p. 363).

Though using this factor coding scheme might obscure the interpretation of parameters, it is essential for correct estimation of Bayes factors for contrasts and order restrictions of multi-level factors (where k>2). See info on specifying correct priors for factors with more than 2 levels in the Bayes factors vignette.

contr.orthonorm(n, contrasts = TRUE, sparse = FALSE)

## Arguments

n a vector of levels for a factor, or the number of levels. a logical indicating whether contrasts should be computed. logical indicating if the result should be sparse (of class dgCMatrix), using package Matrix.

## Value

A matrix with n rows and k columns, with k=n-1 if contrasts is TRUE and k=n if contrasts is FALSE.

## Details

When contrasts = FALSE, the returned contrasts are equivalent to contr.treatment(, contrasts = FALSE), as suggested by McElreath (also known as one-hot encoding).

### Setting Priors

It is recommended to set 0-centered identically scaled priors of the dummy coded variables produced by this method. These priors then represent the distance the mean of one of the levels might have from the overall mean.

#### Contrasts

This method guarantees that any set of contrasts between the k groups will have the same multivariate prior regardless of level order; However, different contrasts within a set contrasts can have different univariate prior shapes/scales.

For example the contrasts A - B will have the same prior as B - C, as will (A + C) - B and (B + A) - C, but A - B and (A + C) - B will differ.

• McElreath, R. (2020). Statistical rethinking: A Bayesian course with examples in R and Stan. CRC press.

• Rouder, J. N., Morey, R. D., Speckman, P. L., & Province, J. M. (2012). Default Bayes factors for ANOVA designs. Journal of Mathematical Psychology, 56(5), 356-374. https://doi.org/10.1016/j.jmp.2012.08.001

## Examples

contr.orthonorm(2) # Q_2 in Rouder et al. (2012, p. 363)
#>            [,1]
#> [1,] -0.7071068
#> [2,]  0.7071068
contr.orthonorm(5) # equivalent to Q_5 in Rouder et al. (2012, p. 363)
#>            [,1]       [,2]       [,3]       [,4]
#> [1,]  0.0000000  0.8944272  0.0000000  0.0000000
#> [2,]  0.0000000 -0.2236068 -0.5000000  0.7071068
#> [3,]  0.7071068 -0.2236068 -0.1666667 -0.4714045
#> [4,] -0.7071068 -0.2236068 -0.1666667 -0.4714045
#> [5,]  0.0000000 -0.2236068  0.8333333  0.2357023
## check decomposition
Q3 <- contr.orthonorm(3)
Q3 %*% t(Q3) ## 2/3 on diagonal and -1/3 on off-diagonal elements
#>            [,1]       [,2]       [,3]
#> [1,]  0.6666667 -0.3333333 -0.3333333
#> [2,] -0.3333333  0.6666667 -0.3333333
#> [3,] -0.3333333 -0.3333333  0.6666667