Produces predicted responses at new (X, t) (and optionally
Z) values, using the paper's subject-specific predictor
$$\hat y_i = \tilde{\mathbf x}_i^{\top} \hat{\tilde\beta}
+ \mathbf z_i^{\top} \hat\alpha$$
by default (Jalili and Lin, 2025, Section 5). For the alternative
"new groups not seen in training" scenario, pass
include_random = FALSE to use the marginal predictor
\(\hat y_i = \tilde{\mathbf x}_i^{\top} \hat{\tilde\beta}\).
Usage
# S3 method for class 'vcmm_fit'
predict(object, newdata, include_random = TRUE, se.fit = FALSE, ...)Arguments
- object
A
vcmm_fitobject.- newdata
A named list or data frame. See Details.
- include_random
Logical. If
TRUE(default) andnewdata\$Zis supplied, adds \(Z\hat\alpha\) to the prediction. SetFALSEfor the marginal predictor (new groups scenario).- se.fit
Logical. If
TRUE, also returns per-prediction standard errors.- ...
Unused.
Value
Either a numeric vector of length \(N_{\mathrm{new}}\), or
(when se.fit = TRUE) a list with components fit and
se.fit.
Details
newdata format. A named list (or data frame whose columns match these names) containing:
t: numeric vector of length \(N_{\mathrm{new}}\).X: numeric matrix \(N_{\mathrm{new}} \times K\) (or length-\(N_{\mathrm{new}}\) vector when \(K = 1\)) of varying- coefficient covariates, in the same column order used at fit time.Z: optional \(N_{\mathrm{new}} \times q\) random- effects design matrix. Must follow the same column-stacking convention as the trainingZso thatZ %*% alphareferences the appropriate random-effect slots.
Standard errors. With se.fit = TRUE the per-prediction
standard error is the square root of
\([W, Z]\,\hat\sigma_\varepsilon^2 K^{-1}\,[W, Z]^{\top}\) when
include_random = TRUE (joint uncertainty of fixed and random
effects), where \(W\) is the spline-expanded fixed-effects row;
the random-effect block is omitted when include_random = FALSE.
These are confidence-interval SEs on the mean; for prediction intervals
add \(\hat\sigma_\varepsilon^2\) to the variance.
References
Jalili, L. and Lin, L.-H. (2025). Scalable and Communication-Efficient Varying Coefficient Mixed-Effects Models.
Examples
set.seed(1)
n <- 400
t <- runif(n); x <- runif(n); Z <- matrix(rnorm(n * 3), n, 3)
y <- 2 + sin(2 * pi * t) * x +
as.vector(Z %*% rnorm(3, sd = 0.5)) + rnorm(n, sd = 0.5)
fit <- vcmm(y, X = x, Z = Z, t = t,
control = vcmm_control(sigma_eps = 0.5, sigma_alpha = 0.5))
# Default: subject-specific predictor (training-group prediction)
yhat_train <- predict(fit, newdata = list(t = t, X = x, Z = Z))
mean((y - yhat_train)^2) # ~ sigma_eps^2 = 0.25
#> [1] 0.2853015
# Marginal predictor (new groups scenario)
yhat_marg <- predict(fit, newdata = list(t = t, X = x, Z = Z),
include_random = FALSE)