fosr_ar: MCMC Sampling Algorithm for the Function-on-Scalars...

Description Usage Arguments Value Note Examples

View source: R/mcmc_sampler.R

Description

Runs the MCMC for the function-on-scalars regression model based on an reduced-rank expansion. Here we assume the factor regression has AR(1) errors.

Usage

1
2
3
fosr_ar(Y, tau, X = NULL, K = NULL, nsave = 1000, nburn = 1000,
  nskip = 3, mcmc_params = list("beta", "fk", "alpha"), X_Tp1 = 1,
  use_obs_SV = FALSE, includeBasisInnovation = FALSE, Con_mat = NULL)

Arguments

Y

the T x m data observation matrix, where T is the number of time points and m is the number of observation points (NAs allowed)

tau

the m x d matrix of coordinates of observation points

X

the T x p matrix of predictors; if NULL, only include an intercept

K

the number of factors; if NULL, use SVD-based proportion of variability explained

nsave

number of MCMC iterations to record

nburn

number of MCMC iterations to discard (burin-in)

nskip

number of MCMC iterations to skip between saving iterations, i.e., save every (nskip + 1)th draw

mcmc_params

named list of parameters for which we store the MCMC output; must be one or more of

  • "beta" (dynamic factors)

  • "fk" (loading curves)

  • "alpha" (regression coefficients)

  • "mu_k" (intercept term for factor k)

  • "ar_phi" (AR coefficients for each k under AR(1) model)

  • "sigma_et" (observation error SD)

  • "Yhat" (fitted values)

  • "Ypred" (posterior predictive values)

  • "Yfore" (one-step forecast; includes the estimate and the distribution)

X_Tp1

the p x 1 matrix of predictors at the forecasting time point T + 1

use_obs_SV

logical; when TRUE, include a stochastic volatility model for the observation error variance

includeBasisInnovation

logical; when TRUE, include an iid basis coefficient term for residual correlation (i.e., the idiosyncratic error term for a factor model on the full basis matrix)

Con_mat

a Jc x m matrix of constraints for the loading curves such that Con_mat*fk = 0 for each loading curve fk; default is NULL for no constraints.

Value

A named list of the nsave MCMC samples for the parameters named in mcmc_params

Note

If Tm is large, then storing all posterior samples for Yhat or Ypred, which are nsave x T x m, may be inefficient

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
## Not run: 
# Simulate some data:
sim_data = simulate_dfosr(T = 100, m = 20, p_0 = 2, p_1 = 2, use_dynamic_reg = FALSE)
Y = sim_data$Y; X = sim_data$X; tau = sim_data$tau
T = nrow(Y); m = ncol(Y); p = ncol(X) # Dimensions

# Run the MCMC w/ K = 6:
out = fosr_ar(Y = Y, tau = tau, X = X, K = 6,
              mcmc_params = list("beta", "fk", "alpha", "ar_phi", "Yhat", "Ypred"))

# Plot a regression coefficient function (Note: these are non-dynamic)
j = 3 # choose a predictor
post_alpha_tilde_j = get_post_alpha_tilde(out$fk, out$alpha[,1,j,])
plot_curve(post_f = post_alpha_tilde_j,
           tau = tau,
           main = paste('Posterior Mean and Credible bands, j =',j))
# Add the true regression coefficient function:
lines(tau, sim_data$alpha_tilde_true[1,j,], lwd=8, col='black', lty=6)

# Evidence for autocorrelation via the AR(1) coefficients:
plot(as.ts(out$ar_phi))
apply(out$ar_phi, 2, quantile, c(0.05/2, 1 - 0.05/2)) # 95% credible intervals

# Plot the factors:
plot_factors(post_beta = out$beta)

# Plot the loading curves:
plot_flc(post_fk = out$fk, tau = tau)

# Plot a fitted value w/ posterior predictive credible intervals:
i = sample(1:T, 1); # Select a random time i
plot_fitted(y = Y[i,],
            mu = colMeans(out$Yhat)[i,],
            postY = out$Ypred[,i,],
            y_true = sim_data$Y_true[i,],
            t01 = tau)



## End(Not run)

drkowal/dfosr documentation built on May 7, 2020, 3:09 p.m.