Skip to content

Commit 9884d89

Browse files
feat: model object info
1 parent 76b63ed commit 9884d89

File tree

4 files changed

+70
-0
lines changed

4 files changed

+70
-0
lines changed

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export(ols_hsp)
110110
export(ols_launch_app)
111111
export(ols_leverage)
112112
export(ols_mallows_cp)
113+
export(ols_model_info)
113114
export(ols_msep)
114115
export(ols_plot_added_variable)
115116
export(ols_plot_comp_plus_resid)

R/ols-model-info.R

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,35 @@ ols_count_parameters <- function(model) {
369369
ols_has_intercept <- function(model) {
370370
as.logical(attr(model$terms, "intercept"))
371371
}
372+
373+
#' Model object info
374+
#'
375+
#' Comprehensive information from model objects.
376+
#'
377+
#' @param model An object of class \code{lm}.
378+
#'
379+
#' @return A list with information about model objects.
380+
#'
381+
#' @examples
382+
#' model <- lm(mpg ~ wt + cyl * hp * disp + gear * drat, data = mtcars)
383+
#' ols_model_info(model)
384+
#'
385+
#' @export
386+
#'
387+
ols_model_info <- function(model) {
388+
return(
389+
list(
390+
call = ols_get_call(model),
391+
degrees_of_freedom = ols_get_df(model),
392+
deviance = ols_get_deviance(model),
393+
formula = ols_get_formula(model),
394+
has_intercept = ols_has_intercept(model),
395+
interaction_terms = ols_get_interaction_terms(model),
396+
intercept_value = ols_get_intercept(model),
397+
obs = ols_count_obs(model),
398+
parameters = ols_get_parameters(model),
399+
sigma = ols_get_sigma(model),
400+
variables = ols_get_variables(model)
401+
)
402+
)
403+
}

man/ols_model_info.Rd

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-model-info.R

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ test_that("number of observations is returned", {
146146
expect_equal(want, got)
147147
})
148148

149+
test_that("number of parameters is returned", {
150+
model <- lm(mpg ~ disp + hp + wt, data = mtcars)
151+
want <- 4
152+
got <- ols_count_parameters(model)
153+
expect_equal(want, got)
154+
})
155+
149156
test_that("model has intercept", {
150157
model <- lm(mpg ~ disp + hp + wt, data = mtcars)
151158
got <- ols_has_intercept(model)
@@ -158,3 +165,11 @@ test_that("model has no intercept", {
158165
expect_false(got)
159166
})
160167

168+
test_that("model info is correct", {
169+
model <- lm(mpg ~ disp + hp + wt, data = mtcars)
170+
got <- ols_model_info(model)
171+
expect_equal(got$degrees_of_freedom, 28)
172+
expect_true(got$has_intercept)
173+
expect_null(got$interaction_terms)
174+
expect_equal(got$obs, 32)
175+
})

0 commit comments

Comments
 (0)