Learn R Programming

estimability (version 1.5.1)

estble.subspace: Find an estimable subspace

Description

Determine a transformation B of the rows of a matrix L such that B %*% L is estimable. A practical example is in jointly testing a set of contrasts L in a linear model, and we need to restrict to the subspace spanned by the rows of L that are estimable.

Usage

estble.subspace (L, nbasis, tol = 1e-8)

Value

An r by p matrix M = B %*% L

whose rows are all orthogonal to the columns of

nbasis. The matrix B is attached as attr(M, "B"). Note that if any rows of L were non-estimable, then r

will be less than k. In fact, if there are no estimable functions in the row space of L, then r = 0.

Arguments

L

A matrix of dimensions k by p

nbasis

A k by b matrix whose columns form a basis for non-estimable linear functions -- such as is returned by nonest.basis

tol

Numeric tolerance for assessing nonestimability. See is.estble.

Author

Russell V. Lenth <russell-lenth@uiowa.edu>

Details

We require B such that all the rows of M = B %*% L are estimable, i.e. orthogonal to the columns of nbasis. Thus, we need B %*% L %*% nbasis to be zero, or equivalently, t(B) must be in the null space of t(L %*% nbasis). This can be found using nonest.basis.

Examples

Run this code
### Find a set of estimable interaction contrasts for a 3 x 4 design 
### with two empty cells.
des <- expand.grid(A = factor(1:3), B = factor(1:4))
des <- des[-c(5, 12), ]  # cells (2,2) and (3,4) are empty

X <- model.matrix(~ A * B, data = des)
N <- nonest.basis(X)

L <- cbind(matrix(0, nrow = 6, ncol = 6), diag(6))
# i.e., give nonzero weight only to interaction effects

estble.subspace(L, N)

# Tougher demo: create a variation where all rows of L are non-estimable
LL <- matrix(rnorm(36), ncol = 6) %*% L
estble.subspace(LL, N)

Run the code above in your browser using DataLab