Type: | Package |
Title: | Robust Matrix Factor Model |
Version: | 1.1.0 |
Date: | 2024-11-23 |
Author: | Wei Liu [aut, cre] |
Maintainer: | Wei Liu <liuwei8@scu.edu.cn> |
Description: | We introduce a robust matrix factor model that explicitly incorporates tail behavior and employs a mean-shift term to avoid efficiency losses through pre-centering of observed matrices. More details on the methods related to our paper are currently under submission. A full reference to the paper will be provided in future versions once the paper is published. |
License: | GPL-3 |
Depends: | irlba, R (≥ 3.5.0) |
Imports: | stats, LaplacesDemon, MixMatrix, COAP, Rcpp (≥ 1.0.10) |
Suggests: | knitr, rmarkdown |
LinkingTo: | Rcpp, RcppArmadillo |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
NeedsCompilation: | yes |
Packaged: | 2024-11-25 12:23:13 UTC; 10297 |
Repository: | CRAN |
Date/Publication: | 2024-11-26 12:50:09 UTC |
Select the structure dimension of factor matrix
Description
Select the structure dimension of factor matrix in the high-dimensional robust matrix factor model
Usage
ER.RMFM(
X,
r_max = 10,
epsELBO = 1e-09,
maxIter = 20,
verbose = FALSE,
seed = 1
)
Arguments
X |
a p1* p2*T array, which is the observed matrix from each individual, where T is the sample size. |
r_max |
an optional positive integer, specify the upper bound of row and column factors; default as 10. |
epsELBO |
an optional positive value, tolerance of relative variation rate of the variational lower bound value, default as '1e-9'. |
maxIter |
the maximum iteration of the VEM algorithm. The default is 30. |
verbose |
a logical value, whether output the information in iteration. |
seed |
an optional integer, specify the random seed for reproducibility in initialization. |
Details
None
Value
return a list including the following components:
-
rvec
- a two-dimensional vector, the estimated row and column numbers of factors. -
svrMat
- a r_max-by-2 matrix, the singular value ratios.
References
None
See Also
None
Examples
r1 <- 4; r2 <- 3;
Tt <- 100; type <- 'MatrixT'
p1 <- 50; p2 <- 50
datlist <- gendata_rmfm(Tt = Tt,p1 =p1, p2=p2, r1=r1, r2=r2,
rho=1, type= 'MatrixT', nu=3)
str(datlist)
res <- ER.RMFM(datlist$X, r_max=10, epsELBO=1e-9, maxIter=10, verbose=FALSE, seed=1)
res
Fit the high-dimensional robust matrix factor model
Description
Fit the high-dimensional robust matrix factor model via variational inference.
Usage
RMFM(
X,
r1 = 10,
r2 = 10,
epsELBO = 1e-09,
maxIter = 30,
verbose = TRUE,
seed = 1,
cal_eigs = FALSE
)
Arguments
X |
a p1* p2*T array, which is the observed matrix from each individual, where T is the sample size. |
r1 |
an optional positive integer, specify the number of row factors; default as 10. |
r2 |
an optional positive integer, specify the number of column factors; default as 10. |
epsELBO |
an optional positive value, tolerance of relative variation rate of the variational lower bound value, default as '1e-9'. |
maxIter |
the maximum iteration of the VEM algorithm. The default is 30. |
verbose |
a logical value, whether output the information in iteration. |
seed |
an optional integer, specify the random seed for reproducibility in initialization. |
cal_eigs |
an optional logical value, specify whether calculate the eigenvalues of covariance matrix, default as |
Details
None
Value
return a list including the following components:
-
hF
- a r1* r2*T array, which is the estimated factor matrix for each individual, where T is the sample size. -
hmu
- a p1-by-p2 matrix, the estimated mean matrix. -
hR
- the estimated row loading matrix. -
hC
- the estimated column loading matrix. -
hnu
- the estimated degree of freedom for the error term. -
hLambda1
- a p1 vector, the estimated row scatter matrix for error. -
hLambda2
- a p2 vector, the estimated column scatter matrix for error. -
dR
-NULL
ifcal_eigs=FALSE
; a group of eigenvalues of the sample covariance across rows ifcal_eigs=TRUE
. -
dC
-NULL
ifcal_eigs=FALSE
; a group of eigenvalues of the sample covariance across columns ifcal_eigs=TRUE
. -
ELBO
- the ELBO value when algorithm stops; -
ELBO_seq
- the sequence of ELBO values. -
time_use
- the running time in model fitting of RMFM;
References
None
See Also
None
Examples
r1 <- 4; r2 <- 3;
Tt <- 100; type <- 'MatrixT'
p1 <- 50; p2 <- 50
datlist <- gendata_rmfm(Tt = Tt,p1 =p1, p2=p2, r1=r1, r2=r2,
rho=1, type= 'MatrixT', nu=1)
str(datlist)
reslist <- RMFM(X=datlist$X, r1=r1, r2=r2, verbose = TRUE, maxIter = 6)
Generate simulated data
Description
Generate simulated data from robust matrix factor models
Usage
gendata_rmfm(
Tt = 100,
p1 = 50,
p2 = 40,
r1 = 4,
r2 = 3,
rho = 0.01,
type = c("MatrixT", "MatrixN"),
nu = 1
)
Arguments
Tt |
a positive integer, specify the sample size. |
p1 |
a positive integer, specify the row dimension of the observed matrix. |
p2 |
a positive integer, specify the column dimension of the observed matrix. |
r1 |
a positive integer, specify the number of row factors; default as 4 |
r2 |
a positive integer, specify the number of column factors; default as 3. |
rho |
a positive real, specify the signal strength of factor matrices. |
type |
a string, specify the type of error matrix, default as |
nu |
a positive integer, specify the degree freedom of the matrix t distribution when |
Value
return a list including the following components:
-
X
- p1* p2*T array, which is the observed matrix from each individual, where T is the sample size. -
CC
- p1* p2*T array, which is the common component matrix for each individual. -
F0
- r1* r2*T array, which is the generated factor matrix for each individual, where T is the sample size. -
R0
- a p1-by-r1 matrix, the row loading matrix. -
C0
- a p2-by-r2 matrix, the column loading matrix. -
mu0
- a p1-by-p2 matrix, the mean matrix.
Examples
r1 <- 4; r2 <- 3;
Tt <- 100; type <- 'MatrixT'
p1 <- 100; p2 <- 50
datlist <- gendata_rmfm(Tt = Tt,p1 =p1, p2=p2, r1=r1, r2=r2,
rho=0.01, type=type, nu=1)
str(datlist)