knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
earthUI provides both an interactive Shiny GUI and a set of composable R
functions for building Earth (MARS-style) models using the earth package.
This vignette demonstrates the programmatic API. To launch the interactive app, simply run:
library(earthUI) launch()
library(earthUI) # For this example, we use the built-in mtcars dataset df <- mtcars head(df)
You can also import from files:
df <- import_data("my_data.csv") # CSV df <- import_data("my_data.xlsx") # Excel
cats <- detect_categoricals(df) cats
Variables with few unique values (default: 10 or fewer) are flagged as likely categorical. Character and factor columns are always flagged.
result <- fit_earth( df = df, target = "mpg", predictors = c("cyl", "disp", "hp", "wt", "qsec", "am", "gear"), categoricals = c("am", "gear"), degree = 1 )
Important defaults:
degree = 1 — no interaction terms. This is intentional to avoid overfitting.
Set degree = 2 or higher only when you have domain knowledge supporting
interactions.degree >= 2, cross-validation (10-fold) is automatically enabled.# Model summary s <- format_summary(result) cat(sprintf("R²: %.4f\nGRSq: %.4f\nTerms: %d\n", s$r_squared, s$grsq, s$n_terms))
# Coefficients s$coefficients
# Variable importance format_variable_importance(result)
# ANOVA decomposition format_anova(result)
plot_variable_importance(result)
plot_partial_dependence(result, "wt")
plot_actual_vs_predicted(result)
plot_residuals(result)
When using degree >= 2, you can control which variable pairs are allowed
to interact:
# Build default all-allowed matrix preds <- c("wt", "hp", "cyl", "disp") mat <- build_allowed_matrix(preds) # Block wt-cyl interaction mat["wt", "cyl"] <- FALSE mat["cyl", "wt"] <- FALSE # Convert to earth-compatible function allowed_fn <- build_allowed_function(mat) # Fit with interactions result2 <- fit_earth( df = df, target = "mpg", predictors = preds, degree = 2, allowed_func = allowed_fn ) s2 <- format_summary(result2) cat(sprintf("Training R²: %.4f\nCV R²: %s\n", s2$r_squared, if (!is.na(s2$cv_rsq)) sprintf("%.4f", s2$cv_rsq) else "N/A"))
Generate publication-quality reports in HTML, PDF, or Word:
render_report(result, output_format = "html", output_file = "my_report.html")
This requires the quarto R package and a Quarto installation.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.