Find an estimable subspace
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.
estble.subspace (L, nbasis, tol = 1e-8)
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 |
tol |
Numeric tolerance for assessing nonestimability. See
|
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
.
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.
Russell V. Lenth <russell-lenth@uiowa.edu>
### 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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.