| Title: | Robust Exponential Factor Analysis |
|---|---|
| Description: | A robust alternative to the traditional principal component estimator is proposed within the framework of factor models, known as Robust Exponential Factor Analysis, specifically designed for the modeling of high-dimensional datasets with heavy-tailed distributions. The algorithm estimates the latent factors and the loading by minimizing the exponential squared loss function. To determine the appropriate number of factors, we propose a modified rank minimization technique, which has been shown to significantly enhance finite-sample performance. For more detail of Robust Exponential Factor Analysis, please refer to Hu et al. (2026) <doi:10.1016/j.jmva.2025.105567>. |
| Authors: | Jiaqi Hu [cre, aut], Xueqin Wang [aut] |
| Maintainer: | Jiaqi Hu <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.2.0 |
| Built: | 2026-05-06 05:48:55 UTC |
| Source: | https://github.com/cran/REFA |
Estimation of errors for common component
ECC(Chat, C0)ECC(Chat, C0)
Chat |
The estimated common component. |
C0 |
The true common component. |
A numeric value of the ECC.
Jiaqi Hu
Robust factor analysis with exponential squared loss. Jiaqi Hu, Tingyin Wang, Xueqin Wang. Journal of Multivariate Analysis 2026, 213 105567; doi:10.1016/j.jmva.2025.105567
dat = gendata() Y = dat$Y F0 = dat$F0 L0 = dat$L0 C0 = F0 %*% t(L0) res = REFA(dat$Y, r = 3) Fhat = res$Fhat Lhat = res$Lhat Chat = Fhat %*% t(Lhat) ECC(Chat, C0)dat = gendata() Y = dat$Y F0 = dat$F0 L0 = dat$L0 C0 = F0 %*% t(L0) res = REFA(dat$Y, r = 3) Fhat = res$Fhat Lhat = res$Lhat Chat = Fhat %*% t(Lhat) ECC(Chat, C0)
Estimating Factor Numbers Corresponding PCA
est_num(X, kmax = 8, type = "BIC3")est_num(X, kmax = 8, type = "BIC3")
X |
Input matrix, of dimension |
kmax |
The user-supplied maximum factor numbers. |
type |
The method used. Options include "PC1", "PC2", "PC3", "IC1", "IC2", "IC3", "AIC3", "BIC3", "ER", "GR". |
The estimated factor numbers.
Jiaqi Hu
dat = gendata() est_num(dat$Y, kmax = 8, type = "BIC3")dat = gendata() est_num(dat$Y, kmax = 8, type = "BIC3")
Principal Component Analysis for Factor Models
FA(X, r)FA(X, r)
X |
Input matrix, of dimension |
r |
A positive integer indicating the factor numbers. |
A list containing:
Fhat |
The estimated factor matrix. |
Lhat |
The estimated loading matrix. |
Jiaqi Hu
dat = gendata() FA(dat$Y, r = 3)dat = gendata() FA(dat$Y, r = 3)
Generate heavy-tailed data.
gendata(seed = 1, T = 50, N = 50, type = "1a")gendata(seed = 1, T = 50, N = 50, type = "1a")
seed |
The |
T |
Time dimension. |
N |
Cross-sectional dimension. |
type |
The type of the data generation process. Options include "1a", "1b", "1c", "1d", "2a", "2b", "2c", "2d", "3a", "3b". |
A list containing:
Y |
The observed matrix. |
F0 |
The true factor matrix. |
L0 |
The true loading matrix. |
Jiaqi Hu
Robust factor analysis with exponential squared loss. Jiaqi Hu, Tingyin Wang, Xueqin Wang. Journal of Multivariate Analysis 2026, 213 105567; doi:10.1016/j.jmva.2025.105567
dat = gendata() Y = dat$Y head(Y)dat = gendata() Y = dat$Y head(Y)
Robust Exponential Factor Analysis
REFA(Y, r = 3, tau = 0.75, q = 0.05, eps = 1e-05, init = TRUE)REFA(Y, r = 3, tau = 0.75, q = 0.05, eps = 1e-05, init = TRUE)
Y |
Input matrix, of dimension |
r |
A positive integer indicating the factor numbers. |
tau |
Hyper parameter in selecting |
q |
Hyper parameter used in the initializations, truncated PCA. |
eps |
The stopping criterion parameter. The default is 1e-5. |
init |
Warm start of the algorithm. If |
A list containing:
Fhat |
The estimated factor matrix. |
Lhat |
The estimated loading matrix. |
loss |
The value of the loss function. |
Jiaqi Hu
Robust factor analysis with exponential squared loss. Jiaqi Hu, Tingyin Wang, Xueqin Wang. Journal of Multivariate Analysis 2026, 213 105567; doi:10.1016/j.jmva.2025.105567
# Assuming gendata() is defined in your package dat = gendata() REFA(dat$Y, r = 3)# Assuming gendata() is defined in your package dat = gendata() REFA(dat$Y, r = 3)
Estimating Factor Numbers via Modified Rank Minimization
REFA_FN(Y, rmax = 8, tau = 0.75, q = 0.1, eps = 1e-04, init = TRUE)REFA_FN(Y, rmax = 8, tau = 0.75, q = 0.1, eps = 1e-04, init = TRUE)
Y |
Input matrix, of dimension |
rmax |
The bound of the number of factors. |
tau |
Hyper parameter in selecting |
q |
Hyper parameter used in the initializations, truncated PCA. Default is |
eps |
The stopping criterion parameter. Default is |
init |
Warm start by truncated PCA algorithm. Default is |
A list containing:
rhat |
The estimated factor number. |
Fhat |
The estimated factor matrix. |
Lhat |
The estimated loading matrix. |
loss |
The value of the loss function. |
Jiaqi Hu
Robust factor analysis with exponential squared loss. Jiaqi Hu, Tingyin Wang, Xueqin Wang. Journal of Multivariate Analysis 2026, 213 105567; doi:10.1016/j.jmva.2025.105567
# Assuming gendata() is defined in your package dat = gendata() REFA_FN(dat$Y, rmax = 8)# Assuming gendata() is defined in your package dat = gendata() REFA_FN(dat$Y, rmax = 8)
Trace ratios
TR(Fhat, F0)TR(Fhat, F0)
Fhat |
The estimated factors. |
F0 |
The true factors. |
A numeric value of the trace ratios.
Jiaqi Hu
Robust factor analysis with exponential squared loss. Jiaqi Hu, Tingyin Wang, Xueqin Wang. Journal of Multivariate Analysis 2026, 213 105567; doi:10.1016/j.jmva.2025.105567
dat = gendata() Y = dat$Y F0 = dat$F0 res = REFA(dat$Y, r = 3) Fhat = res$Fhat TR(Fhat, F0)dat = gendata() Y = dat$Y F0 = dat$F0 res = REFA(dat$Y, r = 3) Fhat = res$Fhat TR(Fhat, F0)