model.matrix.earth {earth} | R Documentation |
Get the basis matrix of an earth
object.
## S3 method for class 'earth': model.matrix(object = stop("no 'object' arg"), x = NULL, subset = NULL, which.terms = NULL, ..., env = parent.frame(), trace = 0, Callers.name = "model.matrix.earth")
object |
An earth object.
This is the only required argument.
|
x |
An input matrix with the same number of columns as the x matrix
used to construct the original earth object.
Default is NULL, meaning use the original x matrix after
taking the original subset , if any.
|
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 use object$selected.terms .
|
... |
Unused, but provided for generic/method consistency. |
env |
For internal use. |
trace |
Default 0. Set to non-zero to see which data model.matrix.earth is using.
|
Callers.name |
For internal use (used by earth in trace messages). |
A basis matrix bx
of the same form returned by earth
.
If x
, subset
, and which.terms
are all NULL, this
function returns the object's bx
. In this case, it is perhaps easier
to simply use object$bx
.
The format of bx
is described in earth
.
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.
data(trees) a <- earth(Volume ~ ., data = trees) summary(a, decomp = "none") # "none" to print terms in same seq as a.lm below # yields: # Call: earth(formula = Volume ~ ., data = trees) # # Volume # (Intercept) 23.208 # h(Girth-12.9) 5.746 # h(12.9-Girth) -2.866 # h(Height-76) 0.718 # # Selected 4 of 5 terms, and 2 of 2 predictors # Estimated importance: Girth Height # Number of terms at each degree of interaction: 1 3 (additive model) # GCV 11.48697 RSS 213.4354 GRSq 0.958859 RSq 0.9736697 bx <- model.matrix(a) # equivalent to bx <- a$bx a.lm <- lm(trees$Volume ~ bx[,-1]) # -1 to drop intercept summary(a.lm) # yields same coeffs as above summary # displayed t values are not meaningful # yields: # Call: # lm(formula = trees$Volume ~ bx[, -1]) # # Residuals: # Min 1Q Median 3Q Max # -5.2900 -1.9782 0.0712 1.9209 4.1267 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 23.208 0.997 23.28 < 2e-16 # bx[, -1]h(Girth-12.9) 5.746 0.297 19.35 < 2e-16 # bx[, -1]h(12.9-Girth) -2.866 0.444 -6.45 6.5e-07 # bx[, -1]h(Height-76) 0.718 0.175 4.10 0.00034 # # Residual standard error: 2.81 on 27 degrees of freedom # Multiple R-squared: 0.974, Adjusted R-squared: 0.971 # F-statistic: 333 on 3 and 27 DF, p-value: <2e-16