earth (version 5.3.0)

model.matrix.earth: Get the earth basis matrix

Description

Get the basis matrix of an earth model.

Usage

# 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")

Arguments

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).

Value

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.

See Also

earth

Examples

# 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
# }