mgm (version 1.2-1)

mvarsampler: Sampling from a mixed VAR model

Description

Function to sample from a mixed VAR (mVAR) model

Usage

mvarsampler(coefarray, lags, thresholds, sds,
            type, level, N, pbar)

Arguments

coefarray

A p x p x max(level) x max(level) x n_lags array, where p are the number of variables, level is the input argument level and n_lags is the number of specified lags in lags, so n_lags = length(n_lags). The first four dimensions specify the parameters involved in the cross-lagged effects of the lag specified in the 5th dimension. I.e. coefarray[5, 6, 1, 1, 3] indicates the cross-lagged effect of variable 6 on variable 5 (if both are continuous), for the third lag specified in lags. If variable 1 and 3 are categorical with m = 2 and = 4 categories, respectively, then coefarray[1, 3, 1:2, 1:4, 1] indicates the m*s=8 parameters specifying this interaction for the first lag specified in lags. See the examples below for an illustration.

lags

A vector indicating the lags in the mVAR model. E.g. lags = c(1, 4, 9) specifies lags of order 1, 3, 9. The number of specified lags has to match the 5th dimension in coefarray.

thresholds

A list with p entries, each consisting of a vector indicating a threshold for each category of the given variable. For continuous variable, the vector has length 1.

sds

A vector of length p indicating the standard deviations of the included Gaussian nodes. If non-Gaussian variables are included in the mVAR model, the corresponding entries are ignored.

type

p vector indicating the type of variable for each column in data. 'g' for Gaussian, 'p' for Poisson, 'c' for categorical.

level

p vector indicating the number of categories of each variable. For continuous variables set to 1.

N

The number of samples to be drawn from the specified mVAR model.

pbar

If pbar = TRUE, a progress bar is shown.

Value

A list with two entries:

call

The function call

data

The sampled n x p data matrix

Details

We sample from the mVAR model by separately sampling from its corresponding p conditional distributions.

References

Haslbeck, J., & Waldorp, L. J. (2016). mgm: Structure Estimation for time-varying Mixed Graphical Models in high-dimensional Data. arXiv preprint arXiv:1510.06871.

Examples

Run this code
# NOT RUN {
# }
# NOT RUN {

# a) Set up 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)

# Specify thresholds
thresholds[[1]] <- c(0, 0)
thresholds[[2]] <- c(0, 0)
thresholds[[3]] <- c(0, 0, 0, 0)
thresholds[[4]] <- c(0, 0, 0, 0)
thresholds[[5]] <- c(0)
thresholds[[6]] <- c(0)

# Specify standard deviations for the Gaussians
sds <- rep(NULL, p)
sds[5:6] <- 1

# Create coefficient array
coefarray <- array(0, dim=c(p, p, max_level, max_level, n_lags))

# a.1) interaction between continuous 5<-6, lag=3
coefarray[5, 6, 1, 1, 2] <- .4
# 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)


# b) Sample
set.seed(1)
dlist <- mvarsampler(coefarray = coefarray,
                     lags = lags,
                     thresholds = thresholds,
                     sds = sds,
                     type = type,
                     level = level,
                     N = 200,
                     pbar = TRUE)



# c) Recover
set.seed(1)
mvar_obj <- mvar(data = dlist$data,
                 type = type,
                 level = level,
                 lambdaSel = 'CV',
                 lags = c(1, 3, 9))

# Did we recover the true parameters?
mvar_obj$wadj[5, 6, 2] # yes
mvar_obj$wadj[1, 3, 1] # yes
mvar_obj$wadj[1, 5, 3] # yes


# }
# NOT RUN {
# }

Run the code above in your browser using DataCamp Workspace