Learn R Programming

latentgraph (version 1.1)

lvglasso: Estimate Gaussian Graphical Models with Latent Variables

Description

Estimate Gaussian graphical models with latent variables using the method in Chandrasekaran et al. (2012).

Usage

lvglasso(data, n, p, lambda1, lambda2, rule = "AND")

Arguments

data

data set, can be a matrix or data frame with \(n\) rows and \(p\) columns.

n

the number of observations.

p

the number of observed variables.

lambda1

tuning parameter that encourages estimated graph to be sparse. Lambda1 is proportional to lambda2.

lambda2

tuning parameter that encourages the matrix \(K_{O,H} (K_H)^{-1} K_{H, O}\) to be low rank, where \(K_H\) and \(K_{O,H}\) quantify the dependecies among the latent variables and between the observed variables and latent variables, respectively. The matrix \(K_{O,H} (K_H)^{-1} K_{H, O}\) summarizes the impact of marginalization over the latent variables.

rule

rules to combine the inverse covariance matrices. Options are "AND" and "OR". Default is "AND".

Value

omega

a matrix that encodes the conditional dependence relationships between sets of two observed variables

theta

the adjacency matrix with 0 and 1 encoding conditional independence and dependence between sets of two observed variables, respectively

penalties

the penalty values

Details

The lvglasso method assumes that all the variables, both observed and latent, are jointly Gaussian, and specifies the conditional distribution of observed variables on the latent variables by a graphical model. Under the high-dimentional setting, this method provides consistent estimators for the conditional graphical model of observed variables conditioned on latent variables.

References

Chandrasekaran, V., Parrilo, P. A. & Willsky, A. S. (2012), `Latent variable graphical model selection via convex optimization', Ann. Statist. 40(4), 1935--1967.

Examples

Run this code
# NOT RUN {
#Gaussian distribution with "AND" rule
n <- 50
R <- 20
p <- 30
l <- 2
s <- 2
data <- generate_Gaussian(n, R, p, l, s, sparsityA = 0.95, sparsityobserved = 0.9,
sparsitylatent = 0.2, lwb = 0.3, upb = 0.3, seed = 1)$X

result <- lvglasso(data, n, p, lambda1 = 0.222, lambda2 = 0.1*0.222, rule = "AND")
# }

Run the code above in your browser using DataLab