# Tlasso.fit: Non-Convex Optimization for Sparse Tensor Graphical Models In Tlasso: Non-Convex Optimization and Statistical Inference for Sparse Tensor Graphical Models

## Description

An alternating optimization algorithm for estimation of precision matrices of sparse tensor graphical models. See Sun et al. (2016) 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 Sun et al. (2016) 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)

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

`varcor`, `biascor`, `huge`
 ``` 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 ```