In his inspiring overview of generalized additive modeling, Noam Ross makes a passing mention of gaussian process smooths (bs = "gp" in mgcv syntax), noting that they are especially well-suited for modeling variation in time. The description of the gp smooths in the mgcv documentation is rather terse and abstract, and I have yet to find a good discussion of exactly how a gp smooth differs from, say, a thin-plate spline, and why and how the gp smooth should be used for modeling temporal processes in GAMs. Can we have that discussion here?

Gavin Simpson discusses gaussian process smooths and their application to time series modeling at length in this paper.

  • $\begingroup$ Thanks for adding the paper link! $\endgroup$
    – andybega
    Commented Jun 21, 2022 at 16:55

1 Answer 1


If you are interested in estimating smooth nonlinear trends for time series using approximate Gaussian Processes (GP) then you may want to consider {brms} and / or {mvgam} as useful alternatives. Using profile likelihoods to try and estimate a range parameter $\rho$ in {mgcv} can certainly be a good start, but these functions won't behave as well as a GP that is estimated using Hilbert space approximations (which is what both {brms} and {mvgam} use. A real advantage of estimating a well-behaving GP is that you can put sensible priors on $\rho$ to ensure the process is smooth, which will allow you to also model short-term autocorrelation via correlated residual processes. But trying to do this using splines is much more difficult, and you often end up with models that struggle to capture both effects simultaneously.

You can find some details on these in this blogpost about strategies for dealing with temporal autocorrelation in GAMs and in this vignette on estimating time-varying effects in GAMs. Using Gaussian Processes to model nonlinear trends in GAMs with mvgam


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.