| 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 <- 50datlist <- 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)resFit 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-NULLifcal_eigs=FALSE; a group of eigenvalues of the sample covariance across rows ifcal_eigs=TRUE.dC-NULLifcal_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 <- 50datlist <- 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 <- 50datlist <- gendata_rmfm(Tt = Tt,p1 =p1, p2=p2, r1=r1, r2=r2, rho=0.01, type=type, nu=1)str(datlist)