Sampling from a time-varying mixed VAR model
Function to sample from a time-varying mixed VAR (mVAR) model
tvmvarsampler(coefarray, lags, thresholds, sds, type, level, pbar)
coefarray |
A p x p x max(level) x max(level) x n_lags x N array, where p are the number of variables, level is the input argument |
lags |
A vector indicating the lags in the mVAR model. E.g. |
thresholds |
A list with p entries, each consisting of a matrix indicating a threshold for each category of the given variable (column) and time point (row). For continuous variable, the matrix has 1 column. |
sds |
A N x p matrix specifying the standard deviation of Gaussian variables (columns) at each time point (rows)If non-Gaussian variables are included in the mVAR model, the corresponding columns are ignored. |
type |
p vector indicating the type of variable for each column in |
level |
p vector indicating the number of categories of each variable. For continuous variables set to 1. |
pbar |
If |
We sample from the mVAR model by separately sampling from its corresponding p conditional distributions.
A list with two entries:
call |
The function call |
data |
The sampled n x p data matrix |
Jonas Haslbeck <jonashaslbeck@gmail.com>
Haslbeck, J. M. B., & Waldorp, L. J. (2020). mgm: Estimating time-varying Mixed Graphical Models in high-dimensional Data. Journal of Statistical Software, 93(8), pp. 1-46. DOI: 10.18637/jss.v093.i08
## Not run: ## We specify a tvmvar model, sample from it and recover it # a) Set up time-varying mvar model p <- 6 # Six variables type <- c("c", "c", "c", "c", "g", "g") # 4 categorical, 2 gaussians level <- c(2, 2, 4, 4, 1, 1) # 2 categoricals with 2 categories, 2 with 5 max_level <- max(level) lags <- c(1, 3, 9) # include lagged effects of order 1, 3, 9 n_lags <- length(lags) N <- 5000 # Specify thresholds thresholds <- list() thresholds[[1]] <- matrix(0, ncol=2, nrow=N) thresholds[[2]] <- matrix(0, ncol=2, nrow=N) thresholds[[3]] <- matrix(0, ncol=4, nrow=N) thresholds[[4]] <- matrix(0, ncol=4, nrow=N) thresholds[[5]] <- matrix(0, ncol=1, nrow=N) thresholds[[6]] <- matrix(0, ncol=1, nrow=N) # Specify standard deviations for the Gaussians sds <- matrix(NA, ncol=6, nrow=N) sds[,5:6] <- 1 # Create coefficient array coefarray <- array(0, dim=c(p, p, max_level, max_level, n_lags, N)) # a.1) interaction between continuous 5<-6, lag=3 coefarray[5, 6, 1, 1, 2, ] <- c(rep(.5, N/2), rep(0, N/2)) # a.2) interaction between 1<-3, lag=1 m1 <- matrix(0, nrow=level[2], ncol=level[4]) m1[1, 1:2] <- 1 m1[2, 3:4] <- 1 coefarray[1, 3, 1:level[2], 1:level[4], 1, ] <- m1 # a.3) interaction between 1<-5, lag=9 coefarray[1, 5, 1:level[1], 1:level[5], 3, ] <- c(0, 1) dim(coefarray) # b) Sample set.seed(1) dlist <- tvmvarsampler(coefarray = coefarray, lags = lags, thresholds = thresholds, sds = sds, type = type, level = level, pbar = TRUE) # c) Recover: time-varying mVAR model set.seed(1) tvmvar_obj <- tvmvar(data = dlist$data, type = type, level = level, lambdaSel = "CV", lags = c(1, 3, 9), estpoints = seq(0, 1, length=10), bandwidth = .05) tvmvar_obj$wadj[5, 6, 2, ] # parameter goes down, as specified tvmvar_obj$wadj[1, 3, 1, ] tvmvar_obj$wadj[1, 5, 3, ] # For more examples see https://github.com/jmbh/mgmDocumentation ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.