Description Usage Arguments Details Value References Examples
Implements the PPCA algorithms from See Ilin and Raiko (2010), previously only available in MATLAB. One element of the outputs is a pcaRes object, providing an interface between PCAMV and pcaMethods.
1 2 3 4 5 6 7 8 9 10 |
X |
|
ncomp |
|
algorithm |
|
maxiters |
|
bias |
|
rotate2pca |
|
loglike |
|
verbose |
|
The algorithm
argument provides the option of
performing either 'ppca' for PPCA, 'vb' for BPCA using a
variational approximation, or 'map' for a variational
approximation ignoring posterior uncertainty (for faster
computation). See Ilin and Raiko (2010) for the full models. Setting
rotate2pca
will perform a post-estimation rotation of
the scores and loadings matrices so that they satisfy the
PCA conditions of orthonormality, see See Ilin and Raiko (2010) for the
derivations. loglike
indicates whether
log-likelihood values for the resulting estimates should
be computed. This can be useful to compare different algorithms.
A list
of 6 or 8 elements, depending on the value
of loglike
:
matrix
– the estimated loadings.
numeric
– the estimated isotropic variance.
matrix
– the estimated covariance matrix.
numeric
– the estimated mean vector.
numeric
– the log-likelihood value
of the observed data given the estimated parameters.
numeric
– the log-likelihood value
of the imputed data given the estimated parameters.
numeric
– the number of iterations taken to
converge.
class
–
see pcaRes.
Ilin, A. and Raiko, T., 2010. link
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # simulate a dataset from a zero mean factor model X = Wz + epsilon
# start off by generating a random binary connectivity matrix
n.factors <- 5
n.genes <- 200
# with dense connectivity
# set.seed(20)
conn.mat <- matrix(rbinom(n = n.genes*n.factors,
size = 1, prob = 0.7), c(n.genes, n.factors))
# now generate a loadings matrix from this connectivity
loading.gen <- function(x){
ifelse(x==0, 0, rnorm(1, 0, 1))
}
W <- apply(conn.mat, c(1, 2), loading.gen)
# generate factor matrix
n.samples <- 100
z <- replicate(n.samples, rnorm(n.factors, 0, 1))
# generate a noise matrix
sigma.sq <- 0.1
epsilon <- replicate(n.samples, rnorm(n.genes, 0, sqrt(sigma.sq)))
# by the ppca equations this gives us the data matrix
X <- W%*%z + epsilon
WWt <- tcrossprod(W)
Sigma <- WWt + diag(sigma.sq, n.genes)
# select 10% of entries to make missing values
missFrac <- 0.1
inds <- sample(x = 1:length(X),
size = ceiling(length(X)*missFrac),
replace = FALSE)
# replace them with NAs in the dataset
missing.dataset <- X
missing.dataset[inds] <- NA
# run ppca
ppf <- pca_full(missing.dataset, ncomp=5, algorithm="vb", maxiters=5,
bias=TRUE, rotate2pca=FALSE, loglike=TRUE, verbose=TRUE)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.