Description Usage Arguments Details Value Examples
Perform variational Bayes NMF and store factor matrices in object
1 2 3 4 5 6 | vb_factorize(object, ranks = 2, nrun = 1, verbose = 2,
progress.bar = TRUE, initializer = "random", Itmax = 10000,
hyper.update = rep(TRUE, 4), gamma.a = 1, gamma.b = 1,
Tol = 1e-05, hyper.update.n0 = 10, hyper.update.dn = 1,
connectivity = TRUE, fudge = NULL, ncores = 1, useC = TRUE,
unif.stop = TRUE)
|
object |
|
ranks |
Rank for factorization; can be a vector of multiple values. |
nrun |
No. of runs with different initial guesses. |
verbose |
The verbosity level: 3, each iteration output printed; 2, each run output printed; 1, each randomized sample output printed; 0, silent. |
progress.bar |
Display progress bar with |
initializer |
If |
Itmax |
Maximum no. of iteration. |
hyper.update |
Vector of four logicals, each indcating whether
hyperparameters |
gamma.a |
Gamma distribution shape parameter. |
gamma.b |
Gamma distribution mean. These two parameters are used for
fixed hyperparameters with |
Tol |
Tolerance for terminating iteration. |
hyper.update.n0 |
Initial number of steps in which hyperparameters are fixed. |
hyper.update.dn |
Step intervals for hyperparameter updates. |
connectivity |
If |
fudge |
Small positive number used as lower bound for factor matrix
elements to avoid singularity. If |
ncores |
Number of processors (cores) to run. If |
useC |
Use C++ version of updates for speed. |
unif.stop |
Terminate if any of columns in basis matrix is uniform. |
The main input is the scNMFSet object with count matrix.
This function performs non-negative factorization using Bayesian algorithm
and gamma priors. Slots basis, coeff, and ranks
are filled.
When run with multiple values of ranks, factorization is
repeated for each rank and the slot measure contains
log evidence and optimal hyperparameters for each rank.
With nrun > 1, the solution
with the maximum log evidence is stored for a given rank.
Object of class scNMFSet with factorization slots filled.
1 2 3 4 5 | set.seed(1)
x <- simulate_whx(nrow=50,ncol=100,rank=5)
s <- scNMFSet(x$x)
s <- vb_factorize(s,ranks=seq(2,8),nrun=5)
plot(s)
|
Run 1
Rank = 2: Nsteps =31, log(evidence) =-3.220272, hyper = (0.3125798,2.421532,0.2553286,1.090867), dispersion = 1
Rank = 3: Nsteps =40, log(evidence) =-2.301975, hyper = (0.1956184,1.692225,0.1743059,1.03016), dispersion = 1
Rank = 4: Nsteps =90, log(evidence) =-1.915525, hyper = (0.133439,1.341696,0.1292562,0.9847309), dispersion = 1
Rank = 5: Nsteps =101, log(evidence) =-1.910936, hyper = (0.1036276,0.9849012,0.1268327,1.034932), dispersion = 1
Rank = 6: Nsteps =105, log(evidence) =-1.298224, hyper = (0.1065642,0.9108574,0.09708988,0.9640453), dispersion = 1
Rank = 7: Nsteps =75, log(evidence) =-1.337305, hyper = (0.0883038,0.7927825,0.09726714,0.9526487), dispersion = 1
Rank = 8: Nsteps =187, log(evidence) =-1.319013, hyper = (0.08472345,0.7047214,0.07931773,0.8275366), dispersion = 1
Run 2
Rank = 2: Nsteps =43, log(evidence) =-2.985025, hyper = (0.2881739,2.510032,0.2511396,1.066041), dispersion = 0.5093711
Rank = 3: Nsteps =52, log(evidence) =-2.443278, hyper = (0.1834726,1.663126,0.2023086,1.063268), dispersion = 0.6676385
Rank = 4: Nsteps =51, log(evidence) =-1.82324, hyper = (0.1378883,1.358771,0.1377949,0.9858606), dispersion = 0.7315702
Rank = 5: Nsteps =44, log(evidence) =-1.272718, hyper = (0.1279342,1.102526,0.102211,0.9632341), dispersion = 0.8052895
Rank = 6: Nsteps =71, log(evidence) =-1.290593, hyper = (0.1137154,0.8591203,0.08183998,1.025736), dispersion = 0.8359017
Rank = 7: Nsteps =157, log(evidence) =-1.308199, hyper = (0.09161253,0.760215,0.07688123,0.9508089), dispersion = 0.846314
Rank = 8: Nsteps =127, log(evidence) =-1.348637, hyper = (0.07479673,0.6652848,0.0931084,0.9389081), dispersion = 0.8540192
Run 3
Rank = 2: Nsteps =42, log(evidence) =-2.985772, hyper = (0.294905,2.547975,0.2522155,1.058072), dispersion = 0.5638854
Rank = 3: Nsteps =58, log(evidence) =-2.363379, hyper = (0.192261,1.851054,0.1755101,0.9589808), dispersion = 0.6923504
Rank = 4: Nsteps =54, log(evidence) =-1.766811, hyper = (0.1404713,1.448887,0.123031,0.9150137), dispersion = 0.7837938
Rank = 5: Nsteps =59, log(evidence) =-1.25892, hyper = (0.1129743,1.027335,0.1021369,1.039533), dispersion = 0.8278495
Rank = 6: Nsteps =67, log(evidence) =-1.2778, hyper = (0.1051466,0.9334776,0.08698342,0.918255), dispersion = 0.8411773
Rank = 7: Nsteps =90, log(evidence) =-1.314135, hyper = (0.08338692,0.7330196,0.09298199,0.9727505), dispersion = 0.8620945
Rank = 8: Nsteps =89, log(evidence) =-1.340424, hyper = (0.06542349,0.6762856,0.09491738,0.9386752), dispersion = 0.8776436
Run 4
Rank = 2: Nsteps =39, log(evidence) =-2.985024, hyper = (0.2885209,2.558508,0.253911,1.042096), dispersion = 0.6320283
Rank = 3: Nsteps =49, log(evidence) =-2.71742, hyper = (0.1948697,1.755059,0.1770911,1.009096), dispersion = 0.7486985
Rank = 4: Nsteps =47, log(evidence) =-1.815812, hyper = (0.1398367,1.316441,0.1391811,1.004942), dispersion = 0.7913369
Rank = 5: Nsteps =102, log(evidence) =-1.645365, hyper = (0.1039625,1.107128,0.09529263,0.9356816), dispersion = 0.8360058
Rank = 6: Nsteps =83, log(evidence) =-1.285885, hyper = (0.09426568,0.8839006,0.0968866,0.9795459), dispersion = 0.869117
Rank = 7: Nsteps =206, log(evidence) =-1.279008, hyper = (0.08081835,0.8035273,0.09014077,0.8104198), dispersion = 0.8875469
Rank = 8: Nsteps =130, log(evidence) =-1.300439, hyper = (0.06378508,0.6629304,0.09130791,0.8810435), dispersion = 0.8916077
Run 5
Rank = 2: Nsteps =39, log(evidence) =-3.220411, hyper = (0.3099831,2.656032,0.2550805,1.009785), dispersion = 0.68
Rank = 3: Nsteps =50, log(evidence) =-2.559947, hyper = (0.1693791,1.572724,0.1597977,1.120149), dispersion = 0.7872886
Rank = 4: Nsteps =59, log(evidence) =-1.771486, hyper = (0.1394539,1.289718,0.1234046,1.045998), dispersion = 0.8453978
Rank = 5: Nsteps =55, log(evidence) =-1.248135, hyper = (0.1156881,1.069702,0.09765931,0.9793849), dispersion = 0.875252
Rank = 6: Nsteps =156, log(evidence) =-1.267798, hyper = (0.1041198,0.8776958,0.08466639,0.9334439), dispersion = 0.8932445
Rank = 7: Nsteps =106, log(evidence) =-1.300903, hyper = (0.08248962,0.7908929,0.08963676,0.9036839), dispersion = 0.90404
Rank = 8: Nsteps =183, log(evidence) =-1.305394, hyper = (0.07657741,0.6521651,0.07984908,0.8457556), dispersion = 0.911237
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.