Package 'modeldiag'

Title: Comprehensive Diagnostics for Statistical Models
Description: Provides a unified framework for diagnosing common issues in statistical models including linear models, generalized linear models (logistic and Poisson regression), and survival models. Implements tests for multicollinearity, heteroscedasticity, autocorrelation, normality, influential observations, overdispersion, zero-inflation, and proportional hazards assumptions. Includes visualization methods for graphical diagnostics. Methods are based on established approaches including Fox and Monette (1992) <doi:10.1080/01621459.1992.10475190>, Breusch and Pagan (1979) <doi:10.2307/1911963>, and Dean and Lawless (1989) <doi:10.1080/01621459.1989.10478792>.
Authors: Emmanuel Adewuyi [aut, cre] (ORCID: <https://orcid.org/0000-0002-7920-6866>), Adewale Lukman [aut] (ORCID: <https://orcid.org/0000-0003-2881-1297>), Abiola Owolabi [aut] (ORCID: <https://orcid.org/0000-0001-9843-5085>)
Maintainer: Emmanuel Adewuyi <[email protected]>
License: MIT + file LICENSE
Version: 0.1.2
Built: 2026-06-09 19:25:28 UTC
Source: https://github.com/teniola17/modeldiag

Help Index


Check Autocorrelation

Description

Performs the Durbin-Watson test for first-order autocorrelation in residuals.

Usage

check_autocorrelation(model)

Arguments

model

A fitted lm object.

Value

An htest object or NA if computation fails.

Examples

model <- lm(mpg ~ wt + hp, data = mtcars)
check_autocorrelation(model)

Check Logistic Linearity with Box-Tidwell Test

Description

Performs a Box-Tidwell test for linearity of continuous predictors in the logit.

Usage

check_box_tidwell(model)

Arguments

model

A fitted glm object.

Value

A Box-Tidwell test result or NA if computation fails.

Examples

model <- glm(am ~ wt + hp, data = mtcars, family = binomial)
check_box_tidwell(model)

Check Cox Model Functional Form

Description

Provides guidance for checking nonlinear functional form in Cox models using martingale residuals.

Usage

check_functional_form_coxph(model)

Arguments

model

A fitted coxph object.

Value

A character message or NA if computation fails.

Examples

if (requireNamespace("survival", quietly = TRUE)) {
  model <- survival::coxph(
    survival::Surv(time, status) ~ age + sex,
    data = survival::lung
  )
  check_functional_form_coxph(model)
}

Check Heteroskedasticity

Description

Performs Breusch-Pagan test for heteroskedasticity.

Usage

check_heteroskedasticity(model)

Arguments

model

A fitted lm object.

Value

An htest object or NA if computation fails.

Examples

model <- lm(mpg ~ wt + hp, data = mtcars)
check_heteroskedasticity(model)

Check Logistic Goodness of Fit

Description

Performs the Hosmer-Lemeshow goodness-of-fit test for binomial glm models.

Usage

check_hosmer_lemeshow(model)

Arguments

model

A fitted binomial glm object.

Value

An htest object or NA if computation fails or the model is not binomial.

Examples

model <- glm(am ~ wt + hp, data = mtcars, family = binomial)
check_hosmer_lemeshow(model)

Check Influential Observations in Cox Models

Description

Identifies influential observations in Cox models using dfbeta residuals.

Usage

check_influential_coxph(model)

Arguments

model

A fitted coxph object.

Value

A list containing dfbeta residuals and influential point indices, or NA if computation fails.

Examples

if (requireNamespace("survival", quietly = TRUE)) {
  model <- survival::coxph(
    survival::Surv(time, status) ~ age + sex,
    data = survival::lung
  )
  check_influential_coxph(model)
}

Check Influential Observations in GLMs

Description

Identifies influential observations in generalized linear models using Cook's distance.

Usage

check_influential_glm(model)

Arguments

model

A fitted glm object.

Value

A list containing Cook's distances and influential point indices.

Examples

model <- glm(am ~ wt + hp, data = mtcars, family = binomial)
check_influential_glm(model)

Check Linearity

Description

Performs Ramsey's RESET test for linear model misspecification.

Usage

check_linearity(model, power = 2)

Arguments

model

A fitted lm object.

power

Powers of fitted values to include in the test.

Value

An htest object with an added note, or NA if computation fails.

Examples

model <- lm(mpg ~ wt + hp, data = mtcars)
check_linearity(model)

Check Normality of Residuals

Description

Performs the Shapiro-Wilk test on model residuals.

Usage

check_normality(model)

Arguments

model

A fitted model object.

Value

An htest object or NA if computation fails.

Examples

model <- lm(mpg ~ wt + hp, data = mtcars)
check_normality(model)

Check Influential Observations

Description

Identifies influential observations using Cook's distance.

Usage

check_outliers(model, cutoff = 4/length(residuals(model)))

Arguments

model

A fitted model object.

cutoff

Cook's distance cutoff. Defaults to 4 divided by the number of observations.

Value

A list containing Cook's distances and influential point indices.

Examples

model <- lm(mpg ~ wt + hp, data = mtcars)
check_outliers(model)

Check Overdispersion

Description

Checks whether a Poisson glm appears overdispersed using the residual deviance to degrees-of-freedom ratio.

Usage

check_overdispersion(model)

Arguments

model

A fitted Poisson glm object.

Value

A list with overdispersion diagnostics, or NA if the model is not Poisson or computation fails.

Examples

model <- glm(carb ~ wt + hp, data = mtcars, family = poisson)
check_overdispersion(model)

Check Proportional Hazards

Description

Performs a proportional hazards test for a fitted Cox model using Schoenfeld residuals.

Usage

check_proportional_hazards(model)

Arguments

model

A fitted coxph object.

Value

A cox.zph result or NA if computation fails.

Examples

if (requireNamespace("survival", quietly = TRUE)) {
  model <- survival::coxph(
    survival::Surv(time, status) ~ age + sex,
    data = survival::lung
  )
  check_proportional_hazards(model)
}

Check Residual Summary

Description

Summarizes deviance residuals for a generalized linear model.

Usage

check_residual_analysis(model)

Arguments

model

A fitted model object.

Value

A list of residual summary statistics, or NA if computation fails.

Examples

model <- glm(carb ~ wt + hp, data = mtcars, family = poisson)
check_residual_analysis(model)

Check Separation in GLMs

Description

Checks for simple indicators of complete or quasi-complete separation.

Usage

check_separation(model)

Arguments

model

A fitted glm object.

Value

A character message describing whether separation was detected, or NA if the model is not a glm.

Examples

model <- glm(am ~ wt + hp, data = mtcars, family = binomial)
check_separation(model)

Check Variance Inflation Factors

Description

Computes variance inflation factors to detect multicollinearity.

Usage

check_vif(model)

Arguments

model

A fitted model object.

Value

A list describing whether VIF computation succeeded. Successful results include a 'vif' element containing the variance inflation factors.

Examples

model <- lm(mpg ~ wt + hp + disp, data = mtcars)
check_vif(model)

Check Zero Inflation

Description

Compares observed zeros with the number expected under a fitted Poisson glm.

Usage

check_zero_inflation(model)

Arguments

model

A fitted Poisson glm object.

Value

A list with zero-inflation diagnostics, or NA if the model is not Poisson or computation fails.

Examples

model <- glm(carb ~ wt + hp, data = mtcars, family = poisson)
check_zero_inflation(model)

Diagnose Statistical Models

Description

This is a generic function for performing diagnostic checks on statistical models. It dispatches to specific methods based on the model type.

Usage

## S3 method for class 'glm'
diagnose_model(model, ...)

## S3 method for class 'lm'
diagnose_model(model, ...)

## S3 method for class 'coxph'
diagnose_model(model, ...)

diagnose_model(model, ...)

Arguments

model

A fitted model object.

...

Additional arguments passed to specific methods.

Value

An object of class "model_diagnostics" containing the results of various diagnostic tests.

Examples

# Linear model diagnostics
model_lm <- lm(mpg ~ wt + hp, data = mtcars)
diag_lm <- diagnose_model(model_lm)
summary(diag_lm)
plot(diag_lm)

# Logistic regression diagnostics
model_glm <- glm(am ~ wt + hp, data = mtcars, family = binomial)
diag_glm <- diagnose_model(model_glm)
summary(diag_glm)

# Poisson regression diagnostics
model_pois <- glm(carb ~ wt + hp, data = mtcars, family = poisson)
diag_pois <- diagnose_model(model_pois)
summary(diag_pois)

# Cox proportional hazards diagnostics
library(survival)
data(lung)
model_cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data = lung)
diag_cox <- diagnose_model(model_cox)
summary(diag_cox)

Plot Model Diagnostics

Description

Generates diagnostic plots for the fitted model.

Usage

## S3 method for class 'model_diagnostics'
plot(x, ...)

Arguments

x

An object of class "model_diagnostics".

...

Additional arguments passed to plotting functions.

Value

None (plots are displayed).


Print Model Diagnostics

Description

Prints a summary of the model diagnostics object.

Usage

## S3 method for class 'model_diagnostics'
print(x, ...)

Arguments

x

An object of class "model_diagnostics".

...

Additional arguments passed to print.

Value

The object x, invisibly.


Summarize Model Diagnostics

Description

Provides a detailed summary of diagnostic test results.

Usage

## S3 method for class 'model_diagnostics'
summary(object, ...)

Arguments

object

An object of class "model_diagnostics".

...

Additional arguments (currently ignored).

Value

The object, invisibly.