| 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)