varcov_family function

Variance-covariance family of psychonetrics models

Variance-covariance family of psychonetrics models

This is the family of models that models only a variance-covariance matrix with mean structure. The type argument can be used to define what model is used: type = "cov" (default) models a variance-covariance matrix directly, type = "chol" (alias: cholesky()) models a Cholesky decomposition, type = "prec" (alias: precision()) models a precision matrix, type = "ggm" (alias: ggm()) models a Gaussian graphical model (Epskamp, Rhemtulla and Borsboom, 2017), and type = "cor" (alias: corr()) models a correlation matrix.

varcov(data, type = c("cov", "chol", "prec", "ggm", "cor"), sigma = "full", kappa = "full", omega = "full", lowertri = "full", delta = "diag", rho = "full", SD = "full", mu, tau, vars, ordered = character(0), groups, covs, means, nobs, missing = "listwise", equal = "none", baseline_saturated = TRUE, estimator = "default", optimizer, storedata = FALSE, WLS.W, sampleStats, meanstructure, corinput, verbose = FALSE, covtype = c("choose", "ML", "UB"), standardize = c("none", "z", "quantile"), fullFIML = FALSE, bootstrap = FALSE, boot_sub, boot_resample) cholesky(...) precision(...) prec(...) ggm(...) corr(...)

Arguments

  • data: A data frame encoding the data used in the analysis. Can be missing if covs and nobs are supplied.
  • type: The type of model used. See description.
  • sigma: Only used when type = "cov". Either "full" to estimate every element freely, "diag" to only include diagonal elements, or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • kappa: Only used when type = "prec". Either "full" to estimate every element freely, "diag" to only include diagonal elements, or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • omega: Only used when type = "ggm". Either "full" to estimate every element freely, "zero" to set all elements to zero, or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • lowertri: Only used when type = "chol". Either "full" to estimate every element freely, "diag" to only include diagonal elements, or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • delta: Only used when type = "ggm". Either "diag" or "zero" (not recommended), or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • rho: Only used when type = "cor". Either "full" to estimate every element freely, "zero" to set all elements to zero, or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • SD: Only used when type = "cor". Either "diag" or "zero" (not recommended), or a matrix of the dimensions node x node with 0 encoding a fixed to zero element, 1 encoding a free to estimate element, and higher integers encoding equality constrains. For multiple groups, this argument can be a list or array with each element/slice encoding such a matrix.
  • mu: Optional vector encoding the mean structure. Set elements to 0 to indicate fixed to zero constrains, 1 to indicate free means, and higher integers to indicate equality constrains. For multiple groups, this argument can be a list or array with each element/column encoding such a vector.
  • tau: Optional list encoding the thresholds per variable.
  • vars: An optional character vector encoding the variables used in the analyis. Must equal names of the dataset in data.
  • groups: An optional string indicating the name of the group variable in data.
  • covs: A sample variance--covariance matrix, or a list/array of such matrices for multiple groups. Make sure covtype argument is set correctly to the type of covariances used.
  • means: A vector of sample means, or a list/matrix containing such vectors for multiple groups.
  • nobs: The number of observations used in covs and means, or a vector of such numbers of observations for multiple groups.
  • covtype: If 'covs' is used, this is the type of covariance (maximum likelihood or unbiased) the input covariance matrix represents. Set to "ML" for maximum likelihood estimates (denominator n) and "UB" to unbiased estimates (denominator n-1). The default will try to find the type used, by investigating which is most likely to result from integer valued datasets.
  • missing: How should missingness be handled in computing the sample covariances and number of observations when data is used. Can be "listwise" for listwise deletion, or "pairwise" for pairwise deletion.
  • equal: A character vector indicating which matrices should be constrained equal across groups.
  • baseline_saturated: A logical indicating if the baseline and saturated model should be included. Mostly used internally and NOT Recommended to be used manually.
  • estimator: The estimator to be used. Currently implemented are "ML" for maximum likelihood estimation, "FIML" for full-information maximum likelihood estimation, "ULS" for unweighted least squares estimation, "WLS" for weighted least squares estimation, and "DWLS" for diagonally weighted least squares estimation.
  • optimizer: The optimizer to be used. Can be one of "nlminb" (the default R nlminb function), "ucminf" (from the optimr package), and C++ based optimizers "cpp_L-BFGS-B", "cpp_BFGS", "cpp_CG", "cpp_SANN", and "cpp_Nelder-Mead". The C++ optimizers are faster but slightly less stable. Defaults to "nlminb".
  • storedata: Logical, should the raw data be stored? Needed for bootstrapping (see bootstrap).
  • standardize: Which standardization method should be used? "none" (default) for no standardization, "z" for z-scores, and "quantile" for a non-parametric transformation to the quantiles of the marginal standard normal distribution.
  • WLS.W: Optional WLS weights matrix.
  • sampleStats: An optional sample statistics object. Mostly used internally.
  • verbose: Logical, should progress be printed to the console?
  • ordered: A vector with strings indicating the variables that are ordered catagorical, or set to TRUE to model all variables as ordered catagorical.
  • meanstructure: Logical, should the meanstructure be modeled explicitly?
  • corinput: Logical, is the input a correlation matrix?
  • fullFIML: Logical, should row-wise FIML be used? Not recommended!
  • bootstrap: Should the data be bootstrapped? If TRUE the data are resampled and a bootstrap sample is created. These must be aggregated using aggregate_bootstraps! Can be TRUE or FALSE. Can also be "nonparametric" (which sets boot_sub = 1 and boot_resample = TRUE) or "case" (which sets boot_sub = 0.75 and boot_resample = FALSE).
  • boot_sub: Proportion of cases to be subsampled (round(boot_sub * N)).
  • boot_resample: Logical, should the bootstrap be with replacement (TRUE) or without replacement (FALSE)
  • ...: Arguments sent to varcov

Details

The model used in this family is:

var(y)=sigmavar(y) = sigma

E(y)=muE(y) = mu

in which the covariance matrix can further be modeled in three ways. With type = "chol" as Cholesky decomposition:

sigma=lowertrilowertrisigma = lowertri * lowertri,

with type = "prec" as Precision matrix:

sigma=kappa(1)sigma = kappa^(-1),

and finally with type = "ggm" as Gaussian graphical model:

sigma=delta(Iomega)(1)deltasigma = delta * (I - omega)^(-1) * delta.

Returns

An object of the class psychonetrics

References

Epskamp, S., Rhemtulla, M., & Borsboom, D. (2017). Generalized network psychometrics: Combining network and latent variable models. Psychometrika, 82(4), 904-927.

Author(s)

Sacha Epskamp

See Also

lvm, var1, dlvm1

Examples

# Load bfi data from psych package: library("psychTools") data(bfi) # Also load dplyr for the pipe operator: library("dplyr") # Let's take the agreeableness items, and gender: ConsData <- bfi %>% select(A1:A5, gender) %>% na.omit # Let's remove missingness (otherwise use Estimator = "FIML) # Define variables: vars <- names(ConsData)[1:5] # Saturated estimation: mod_saturated <- ggm(ConsData, vars = vars) # Run the model: mod_saturated <- mod_saturated %>% runmodel # We can look at the parameters: mod_saturated %>% parameters # Labels: labels <- c( "indifferent to the feelings of others", "inquire about others' well-being", "comfort others", "love children", "make people feel at ease") # Plot CIs: CIplot(mod_saturated, "omega", labels = labels, labelstart = 0.2) # We can also fit an empty network: mod0 <- ggm(ConsData, vars = vars, omega = "zero") # Run the model: mod0 <- mod0 %>% runmodel # We can look at the modification indices: mod0 %>% MIs # To automatically add along modification indices, we can use stepup: mod1 <- mod0 %>% stepup # Let's also prune all non-significant edges to finish: mod1 <- mod1 %>% prune # Look at the fit: mod1 %>% fit # Compare to original (baseline) model: compare(baseline = mod0, adjusted = mod1) # We can also look at the parameters: mod1 %>% parameters # Or obtain the network as follows: getmatrix(mod1, "omega")
  • Maintainer: Sacha Epskamp
  • License: GPL-2
  • Last published: 2024-06-20