FitLm function

Fast estimates of linear regression

Fast estimates of linear regression

Computes a linear regression with stats::.lm.fit and returns the estimate and, optionally, standard error for each regressor.

FitLm(y, ..., intercept = TRUE, weights = NULL, se = FALSE, r2 = se) ResidLm(y, ..., intercept = TRUE, weights = NULL) Detrend(y, time = seq_along(y))

Arguments

  • y: numeric vector of observations to model
  • ...: numeric vectors of variables used in the modelling
  • intercept: logical indicating whether to automatically add the intercept
  • weights: numerical vector of weights (which doesn't need to be normalised)
  • se: logical indicating whether to compute the standard error
  • r2: logical indicating whether to compute r squared
  • time: time vector to use for detrending. Only necessary in the case of irregularly sampled timeseries

Returns

FitLm returns a list with elements

  • term: the name of the regressor
  • estimate: estimate of the regression
  • std.error: standard error
  • df: degrees of freedom
  • r.squared: Percent of variance explained by the model (repeated in each term)
  • adj.r.squared: r.squared` adjusted based on the degrees of freedom)

ResidLm and Detrend returns a vector of the same length

If there's no complete cases in the regression, NAs are returned with no warning.

Examples

# Linear trend with "signficant" areas shaded with points library(data.table) library(ggplot2) system.time({ regr <- geopotential[, FitLm(gh, date, se = TRUE), by = .(lon, lat)] }) ggplot(regr[term != "(Intercept)"], aes(lon, lat)) + geom_contour(aes(z = estimate, color = after_stat(level))) + stat_subset(aes(subset = abs(estimate) > 2*std.error), size = 0.05) # Using stats::lm() is much slower and with no names. ## Not run: system.time({ regr <- geopotential[, coef(lm(gh ~ date))[2], by = .(lon, lat)] }) ## End(Not run)
  • Maintainer: Elio Campitelli
  • License: GPL-3
  • Last published: 2025-02-24