NEWS
spexvb 0.1.0.9001
spexvb 0.1.0.9001
Output
spexvb() now returns sigma, the slab posterior standard deviation of each
coefficient (length p). The marginal posterior SD of beta_j is
sqrt(omega*sigma^2 + omega*(1 - omega)*mu^2).
Fixes
get.initials() now respects a user-supplied tau_e instead of always
re-estimating it, so a known error precision is held fixed (as the
documentation already stated). The algorithm is unchanged.
spexvb 0.1.0.9000
Performance
- Hoisted iteration-constant computations (
sigma, log-odds,
sqrt(tau_b * tau_e)) out of coordinate-ascent inner loops in all three
C++ backends (fit_linear_alpha_remap, fit_linear_gamma_hierarchy,
fit_logistic_alpha_remap).
- Replaced O(np) post-remapping matrix-vector product (
W = X * approx_mean)
with O(n) scalar multiply (W *= alpha).
- Vectorized
entropy(), replaced std::pow(x, 2) with x * x, reused
precomputed X_2 in the logistic backend, and removed dead allocations.
- R side: direct C++ function calls instead of
do.call() string lookup,
eliminated redundant lapply copy in return list, reduced standardization
from two scale() passes to one via Var = E[X^2] - E[X]^2.
- Measured 24--33% speedup on moderate to high-p settings with identical
coefficients (within tolerance 1e-8) and zero iteration count changes.
spexvb 0.1.0
- Initial CRAN release.
- Implements
spexvb() (linear PX-VB), hspvb() (hierarchical Gamma prior),
and spexvb.logistic() (logistic PX-VB) for high-dimensional variable
selection with spike-and-slab priors.
- Cross-validation via
cv.spexvb() and cv.spexvb.fit() with parallel
support through foreach.