Tlasso.fit: Non-Convex Optimization for Sparse Tensor Graphical Models

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/Tlasso.fit.R

Description

An alternating optimization algorithm for estimation of precision matrices of sparse tensor graphical models. See Lyu et al. (2019) for details.

Usage

1
Tlasso.fit(data, T = 1, lambda.vec = NULL, norm.type = 2, thres = 1e-05)

Arguments

data

tensor object stored in a m1 * m2 * ... * mK * n array, where n is sample size and mk is dimension of the kth tensor mode.

T

number of maximal iteration, default is 1. Each iteration involves update on all modes. If output change less than thres after certain iteration, in terms of summation on Frobenius norm, this function will be terminated (before Tth iteration).

lambda.vec

vector of tuning parameters (λ_1,...,λ_K). Defalut is NULL, s.t. it is tuned via HUGE package directly.

norm.type

normalization method of precision matrix, i.e., Ω_{11}=1 if norm.type = 1 and ||Ω||_F =1 if norm.type = 2. Default value is 2.

thres

thresholding value that terminates algorithm before Tth iteration if output change less than thres after certain iteration, in terms of summation over Frobenius norm. If thres is negative or zero, this algorithm will iterate T times.

Details

This function conducts an alternating optimization algorithm to sparse tensor graphical model. The output is optimal consistent even when T=1, see Lyu et al. (2019) for details. There are two ternimation criteria, T and thres. Algorithm will be terminated if output in certain iteration change less than thres. Otherwise, T iterations will be fully operated.

Value

A length-K list of estimation of precision matrices.

Author(s)

Xiang Lyu, Will Wei Sun, Zhaoran Wang, Han Liu, Jian Yang, Guang Cheng.

See Also

varcor, biascor, huge

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
m.vec = c(5,5,5)  # dimensionality of a tensor 
n = 5   # sample size 
lambda.thm = 20*c( sqrt(log(m.vec[1])/(n*prod(m.vec))), 
                  sqrt(log(m.vec[2])/(n*prod(m.vec))), 
                  sqrt(log(m.vec[3])/(n*prod(m.vec))))
DATA=Trnorm(n,m.vec,type='Chain') 
# obersavations from tensor normal distribution
out.tlasso = Tlasso.fit(DATA,T=10,lambda.vec = lambda.thm,thres=10)   
# terminate by thres
out.tlasso = Tlasso.fit(DATA,T=3,lambda.vec = lambda.thm,thres=0)   
# thres=0, iterate 10 times

Tlasso documentation built on Feb. 1, 2022, 9:07 a.m.