Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 6,
fig.height = 4,
fig.align = "center"
)
set.seed(1)
## ----setup--------------------------------------------------------------------
library(cevcmm)
## ----simulate-----------------------------------------------------------------
set.seed(1)
N <- 500L
q <- 3L
t <- runif(N)
x <- runif(N)
Z <- matrix(rnorm(N * q), N, q)
beta_0 <- 2
beta_1_fun <- function(u) sin(2 * pi * u)
alpha_true <- rnorm(q, sd = 0.4)
sigma_eps <- 0.5
y <- beta_0 + beta_1_fun(t) * x +
as.vector(Z %*% alpha_true) +
rnorm(N, sd = sigma_eps)
## ----fit----------------------------------------------------------------------
fit <- vcmm(y, X = x, Z = Z, t = t,
method = "auto",
re_cov = "diag",
control = vcmm_control(sigma_eps = 0.5,
sigma_alpha = 0.4,
update_variance = TRUE))
fit
## ----inspect------------------------------------------------------------------
# Fixed-effects coefficient vector (intercept + spline basis coefs)
head(coef(fit))
# Same vector, reshaped: intercept + (basis x covariate) matrix
fx <- fixef(fit)
fx$intercept
dim(fx$varying)
# Random effects
ranef(fit)
# Sample size and residual SD
nobs(fit)
fit$sigma_eps
# Log-likelihood, AIC, BIC
logLik(fit)
AIC(fit); BIC(fit)
## ----summary------------------------------------------------------------------
summary(fit)
## ----curve, fig.cap = "Estimated and true varying coefficient."---------------
t_grid <- seq(0, 1, length.out = 100L)
vc <- varying_coef(fit, t_new = t_grid, k = 1L, se.fit = TRUE)
plot(t_grid, vc$fit, type = "l", lwd = 2, col = "steelblue",
xlab = "t", ylab = expression(hat(beta)[1](t)),
ylim = range(vc$fit - 2 * vc$se.fit,
vc$fit + 2 * vc$se.fit,
beta_1_fun(t_grid)))
polygon(c(t_grid, rev(t_grid)),
c(vc$fit + 2 * vc$se.fit, rev(vc$fit - 2 * vc$se.fit)),
col = adjustcolor("steelblue", alpha.f = 0.25), border = NA)
lines(t_grid, beta_1_fun(t_grid), col = "red", lty = 2, lwd = 2)
legend("topright", c("estimate", "truth"),
col = c("steelblue", "red"), lty = c(1, 2), lwd = 2, bty = "n")
## ----predict------------------------------------------------------------------
new_idx <- sample.int(N, 5L)
newdata <- list(t = t[new_idx],
X = x[new_idx],
Z = Z[new_idx, , drop = FALSE])
predict(fit, newdata = newdata)
y[new_idx]
## ----predict-se---------------------------------------------------------------
pred <- predict(fit, newdata = newdata, se.fit = TRUE)
cbind(fit = pred$fit, se = pred$se.fit)
## ----plot, fig.cap = "Built-in plot.vcmm_fit panel 1."------------------------
plot(fit, which = 1)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.