Type: | Package |
Title: | Analyzing Censored Factor Models |
Version: | 0.6.0 |
Description: | Provides generation and estimation of censored factor models for high-dimensional data with censored errors (normal, t, logistic). Includes Sparse Orthogonal Principal Components (SOPC), and evaluation metrics. Based on Guo G. (2023) <doi:10.1007/s00180-022-01270-z>. |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
Language: | en-US |
Depends: | R (≥ 3.5.0) |
Imports: | stats, MASS, psych, matrixcalc, crch |
Suggests: | testthat (≥ 3.0.0), ggplot2 |
NeedsCompilation: | no |
Packaged: | 2025-10-18 01:51:44 UTC; 86188 |
RoxygenNote: | 7.3.3 |
Author: | Guangbao Guo [aut, cre], Tong Meng [aut] |
Maintainer: | Guangbao Guo <ggb11111111@163.com> |
Repository: | CRAN |
Date/Publication: | 2025-10-22 18:50:10 UTC |
Censored Factor Models Data Generation
Description
Generate multivariate data that follow a latent factor structure
with censoring errors drawn from Normal, Student-t or Logistic
distributions. Convenience wrapper around rcnorm
,
rct
, and rclogis
.
Usage
CFM(n, p, m, cens.dist = c("normal", "t", "logistic"), df = 5, seed = NULL)
Arguments
n |
sample size ( |
p |
number of manifest variables. |
m |
number of latent factors. |
cens.dist |
censoring error distribution:
|
df |
degrees of freedom when |
seed |
optional random seed for reproducibility. |
Value
A named list with components:
data |
numeric |
F |
factor scores matrix ( |
A |
factor loadings matrix ( |
D |
unique variances diagonal matrix ( |
Examples
set.seed(2025)
# Normal censoring
obj <- CFM(n = 200, p = 10, m = 3, cens.dist = "normal")
head(obj$data)
# t-censoring with 6 d.f.
obj <- CFM(n = 300, p = 12, m = 4, cens.dist = "t", df = 6)
psych::KMO(obj$data)
Censored Factor Analysis via Principal Component (FanPC, pure R)
Description
Censored Factor Analysis via Principal Component (FanPC, pure R)
Usage
FanPC.CFM(
data,
m,
A = NULL,
D = NULL,
p = NULL,
cens.dist = c("normal", "t", "logistic"),
df = NULL,
cens.method = c("winsorise", "em"),
cens_prop = 0.01,
surv.obj = NULL,
ctrl = NULL,
verbose = NULL
)
Arguments
data |
Numeric matrix or data frame of dimension |
m |
Number of factors (< p). |
A |
Optional true loading matrix, used only for error calculation. |
D |
Optional true unique-variance diagonal matrix, used only for error calculation. |
p |
Number of variables (deprecated; detected automatically). |
cens.dist |
Error distribution, reserved for future use. |
df |
Degrees of freedom, reserved for future use. |
cens.method |
Censoring handling method; currently only |
cens_prop |
Winsorisation proportion, default 0.01. |
surv.obj |
Reserved for future use. |
ctrl |
Reserved for future use. |
verbose |
Reserved for future use. |
Value
- AF
Estimated loading matrix, p × m.
- DF
Estimated unique-variance diagonal matrix, p × p.
- MSESigmaA
Mean squared error of loadings (if A is provided).
- MSESigmaD
Mean squared error of unique variances (if D is provided).
- LSigmaA
Relative error of loadings (if A is provided).
- LSigmaD
Relative error of unique variances (if D is provided).
Examples
library(CFM)
obj <- CFM(n = 500, p = 10, m = 2, cens.dist = "normal")
res <- FanPC.CFM(obj$data, m = 2, A = obj$A, D = obj$D, cens.method = "winsorise")
print(res$MSESigmaA)
PC2 for censored factor models (Top-2 principal components, pure R)
Description
PC2 for censored factor models (Top-2 principal components, pure R)
Usage
PC2.CFM(
data,
m,
A = NULL,
D = NULL,
p = NULL,
cens.dist = c("normal", "t", "logistic"),
df = NULL,
cens.method = c("winsorise", "em"),
cens_prop = 0.01,
surv.obj = NULL,
ctrl = NULL,
verbose = NULL
)
Arguments
data |
Numeric matrix or data frame of dimension |
m |
Number of factors (< p). |
A |
Optional true loading matrix, used only for error calculation. |
D |
Optional true unique-variance diagonal matrix, used only for error calculation. |
p |
Number of variables (deprecated; detected automatically). |
cens.dist |
Error distribution, reserved for future use. |
df |
Degrees of freedom, reserved for future use. |
cens.method |
Censoring handling method; currently only |
cens_prop |
Winsorisation proportion, default 0.01. |
surv.obj |
Reserved for future use. |
ctrl |
Reserved for future use. |
verbose |
Reserved for future use. |
Value
- AF
Estimated loading matrix, p × 2.
- DF
Estimated unique-variance diagonal matrix, p × p.
- MSESigmaA
Mean squared error of loadings (if A is provided).
- MSESigmaD
Mean squared error of unique variances (if D is provided).
- LSigmaA
Relative error of loadings (if A is provided).
- LSigmaD
Relative error of unique variances (if D is provided).
Examples
library(CFM)
obj <- CFM(n = 500, p = 12, m = 2, cens.dist = "normal")
res <- PC2.CFM(obj$data, A = obj$A, D = obj$D)
print(res$MSESigmaA)
PPC2 for censored factor models (Top-2 principal components, pure R)
Description
PPC2 for censored factor models (Top-2 principal components, pure R)
Usage
PPC2.CFM(
data,
m,
A = NULL,
D = NULL,
p = NULL,
cens.dist = c("normal", "t", "logistic"),
df = NULL,
cens.method = c("winsorise", "em"),
cens_prop = 0.01,
surv.obj = NULL,
ctrl = NULL,
verbose = NULL
)
Arguments
data |
Numeric matrix or data frame of dimension |
m |
Number of factors (< p). |
A |
Optional true loading matrix, used only for error calculation. |
D |
Optional true unique-variance diagonal matrix, used only for error calculation. |
p |
Number of variables (deprecated; detected automatically). |
cens.dist |
Error distribution, reserved for future use. |
df |
Degrees of freedom, reserved for future use. |
cens.method |
Censoring handling method; currently only |
cens_prop |
Winsorisation proportion, default 0.01. |
surv.obj |
Reserved for future use. |
ctrl |
Reserved for future use. |
verbose |
Reserved for future use. |
Value
- AF
Estimated loading matrix, p × 2.
- DF
Estimated unique-variance diagonal matrix, p × p.
- MSESigmaA
Mean squared error of loadings (if A is provided).
- MSESigmaD
Mean squared error of unique variances (if D is provided).
- LSigmaA
Relative error of loadings (if A is provided).
- LSigmaD
Relative error of unique variances (if D is provided).
Examples
library(CFM)
obj <- CFM(n = 500, p = 12, m = 2, cens.dist = "normal")
res <- PPC2.CFM(obj$data, A = obj$A, D = obj$D, cens.method = "winsorise")
print(res$MSESigmaA)
Basic censored-factor data simulator
Description
Generates multivariate data that follow a latent factor structure with censored errors (Normal, Student-t or Logistic).
Usage
censored_factor_models(
n,
p,
m,
distribution = c("normal", "t", "logistic"),
df = NULL,
seed = NULL
)
Arguments
n |
Sample size (> 0). |
p |
Number of observed variables (> 0). |
m |
Number of latent factors (< p). |
distribution |
Error distribution: "normal" (default), "t", "logistic". |
df |
Degrees of freedom when distribution = "t". |
seed |
Optional random seed. |
Value
A list with components:
data |
numeric n × p matrix of observations |
loadings |
p × m factor loadings matrix |
uniqueness |
p × p diagonal uniqueness matrix |
KMO |
KMO measure of sampling adequacy |
Bartlett_p |
p-value of Bartlett's test |
distribution |
error distribution used |
seed |
random seed |
Examples
set.seed(2025)
obj <- censored_factor_models(200, 6, 2)
psych::KMO(obj$data)