| format.earth | R Documentation |
Return a string representing an earth expression
(summary.earth calls this function internally to
display the terms of the earth model).
## S3 method for class 'earth'
format(x = stop("no 'x' argument"),
style = "h", decomp = "anova", digits = getOption("digits"),
use.names = TRUE, colon.char = ":", ...)
x |
An |
style |
Formatting style. One of |
decomp |
One of |
digits |
Number of significant digits.
The default is |
use.names |
One of |
colon.char |
Change colons in the returned string to colon.char.
Default is ":" (no change).
Specifying |
... |
Unused, but provided for generic/method consistency. |
A character representation of the earth model.
If there are multiple responses, format.earth will return multiple strings.
If there are embedded GLM model(s), the strings for the GLM model(s)
come after the strings for the standard earth model(s).
The FAQ section in the package vignette gives precise details of the
"anova" ordering.
Using format.earth, perhaps after hand editing the returned string,
you can create an alternative to predict.earth.
For example:
as.func <- function(object, digits = 8, use.names = FALSE, ...)
eval(parse(text=paste(
"function(x){\n",
"if(is.vector(x))\n",
" x <- matrix(x, nrow = 1, ncol = length(x))\n",
"with(as.data.frame(x),\n",
format(object, digits = digits, use.names = use.names, style = "pmax", ...),
")\n",
"}\n", sep = "")))
earth.mod <- earth(Volume ~ ., data = trees)
my.func <- as.func(earth.mod, use.names = FALSE)
my.func(c(10,80)) # returns 16.84
predict(earth.mod, c(10,80)) # returns 16.84
Note that with pmax the R expression generated by
format.earth can handle multiple cases.
Thus the expression is consistent with the way predict
functions usually work in R — we can give predict multiple
cases (i.e., multiple rows in the input matrix) and it will return a
vector of predicted values.
The earth package also provides a function format.lm.
It has arguments as follows
format.lm(x, digits=getOption("digits"), use.names=TRUE, colon.char=":")
(Strictly speaking, format.lm doesn't belong in the earth package.) Example:
lm.mod <- lm(Volume ~ Height*Girth, data = trees) cat(format(lm.mod, colon.char="*")) # yields: # 69.4 # - 1.30 * Height # - 5.86 * Girth # + 0.135 * Height*Girth
summary.earth,
pmax,
earth.mod <- earth(Volume ~ ., data = trees)
cat(format(earth.mod))
# yields:
# 29.0
# - 3.42 * h(14.2-Girth)
# + 6.23 * h(Girth-14.2)
# + 0.581 * h(Height-75)
cat(format(earth.mod, style="pmax"))
# yields:
# 29.0
# - 3.42 * pmax(0, 14.2 - Girth)
# + 6.23 * pmax(0, Girth - 14.2)
# + 0.581 * pmax(0, Height - 75)
cat(format(earth.mod, style="C"))
# yields (note zero based indexing):
# 29.0
# - 3.42 * max(0, 14.2 - x[0])
# + 6.23 * max(0, x[0] - 14.2)
# + 0.581 * max(0, x[1] - 75)
cat(format(earth.mod, style="bf"))
# yields:
# 29.0
# - 3.42 * bf1
# + 6.23 * bf2
# + 0.581 * bf3
#
# bf1 h(14.2-Girth)
# bf2 h(Girth-14.2)
# bf3 h(Height-75)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.