Get the basis matrix of an `earth`

model.

```
# S3 method for earth
model.matrix(object = stop("no 'object' argument"),
x = NULL, subset = NULL, which.terms = NULL,
trace = 0,
…,
Env = parent.frame(),
Callers.name = "model.matrix.earth")
```

object

An `earth`

model.
This is the only required argument.

x

Default is NULL, meaning use the original data
used to build the `earth`

model
(after taking the original `subset`

, if any).

Else `x`

can be a data frame, a matrix, or a vector with
length equal to a multiple of the number of columns
of the original input matrix `x`

.
(There is some leniency here. For example, column names aren't
necessary if `x`

has the same number of predictors originally
used to build the `earth`

model.)

subset

Which rows to use in `x`

.
Default is NULL, meaning use all of `x`

.

which.terms

Which terms to use.
Default is NULL, meaning all terms in the earth model
(i.e. the terms in `object$selected.terms`

).

trace

Default 0. Set to non-zero to see which data `model.matrix.earth`

is using.

…

Unused, but provided for generic/method consistency.

Env

For internal use.

Callers.name

For internal use (used by earth in trace messages).

A basis matrix `bx`

of the same form returned by `earth`

.
The format of `bx`

is described in `earth.object`

.

If `x`

, `subset`

, and `which.terms`

are all NULL (the
default), this function returns the model's `bx`

. In this case,
it is perhaps easier to simply use `object$bx`

.

The matrix `bx`

can be used
as the input matrix to `lm`

or `glm`

,
as shown below in the example.
In fact, that is what earth does internally after the pruning pass ---
it calls `lm.fit`

,
and additionally `glm`

if earth's `glm`

argument is used.

# NOT RUN { # Example 1 data(trees) earth.mod <- earth(Volume ~ ., data = trees) # standard earth model summary(earth.mod, decomp = "none") # "none" to print terms in same order as lm.mod below bx <- model.matrix(earth.mod) # earth model's basis mat (equivalent to bx <- earth.mod$bx) lm.mod <- lm(trees$Volume ~ bx[,-1]) # -1 to drop intercept summary(lm.mod) # yields same coeffs as above summary # displayed t values are not meaningful # Example 2 earth.mod <- earth(Volume~., data=trees) # standard earth model summary(earth.mod, decomp = "none") # "none" to print terms in same order as lm.mod below bx <- model.matrix(earth.mod) # earth model's basis mat (equivalent to bx <- earth.mod$bx) bx <- bx[, -1] # drop intercept column bx <- as.data.frame(bx) # lm requires a data frame bx$Volume <- trees$Volume # add Volume to data lm.mod <- lm(Volume~., data=bx) # standard linear regression on earth's basis mat summary(lm.mod) # yields same coeffs as above summary # displayed t values are not meaningful # }