Learn R Programming

itsadug (version 2.0)

acf_resid: Generate an ACF plot of model residuals. Works for lm, lmer, gam, bam, ....

Description

Wrapper around acf_plot and acf_n_plots for regression models.

Usage

acf_resid(model, split_pred = NULL, n = 1, plot = TRUE,
  check.rho = NULL, main = NULL, ...)

Arguments

model
A regression model generated by lm, glm, lmer, glmer, gam, or bam. (See examples for how to avoid errors
split_pred
Vector with names of model predictors that determine the time series in the data, or should be used to split the ACF plot by. Alternatively, split_pred can be a named list as being used by acf_plot<
n
The number of plots to generate. If n=1 (default) then acf_plot is being called. If n>1 then acf_n_plots is being called.
plot
Logical: whether or not to produce plot. Default is TRUE.
check.rho
Numeric value: Generally leave at NULL. This value does not change anything, but it is used to check whether the model's AR1 coefficient matches the expected value of rho.
main
Text string, title of plot.
...
Other arguments as input for acf_plot or acf_n_plots.

Value

  • An aggregated ACF plot and / or optionally a list with the aggregated ACF values.

See Also

Use acf for the original ACF function, and acf_plot, or acf_n_plots.

Other functions for model criticism: acf_n_plots, acf_plot, derive_timeseries, resid_gam, start_event, start_value_rho

Examples

Run this code
data(simdat)

# add missing values to simdat:
simdat[sample(nrow(simdat), 15),]$Y <- NA

# Run GAMM model:
m1 <- bam(Y ~ te(Time, Trial)+s(Subject, bs='re'), data=simdat)

# Using a list to split the data:
acf_resid(m1, split_pred=list(simdat$Subject, simdat$Trial))
# ...or using model predictors:
acf_resid(m1, split_pred=c("Subject", "Trial"))

# Calling acf_n_plots:
acf_resid(m1, split_pred=c("Subject", "Trial"), n=4)
# add some arguments:
acf_resid(m1, split_pred=c("Subject", "Trial"), n=4, max_lag=10)

# This does not work...
m2 <- lm(Y ~ Time, data=simdat)
acf_resid(m2, split_pred=c("Subject", "Trial"))
# ... but this is ok:
acf_resid(m2, split_pred=list(simdat$Subject, simdat$Trial))

# Using AR.start column:
simdat <- start_event(simdat, event=c("Subject", "Trial"))
r1 <- start_value_rho(m1)
m3 <- bam(Y ~ te(Time, Trial)+s(Subject, bs='re'), data=simdat, 
    rho=r1, AR.start=simdat$start.event)
acf_resid(m3, split_pred="AR.start")
# this is the same:
acf_resid(m3, split_pred=c("Subject", "Trial"))
# Note: use model comparison to find better value for rho
# see the vignette for examples:
vignette("acf", package="itsadug")

Run the code above in your browser using DataLab