Skip to content

exametrika v1.13.0

Choose a tag to compare

@kosugitti kosugitti released this 17 May 07:54
· 113 commits to main since this release

Highlights

This release rolls up the development changes from 1.12.0–1.12.2 (never published to CRAN) together with new 1.13.0 features.

New features (1.13.0)

  • Graphical Lasso (Glasso): Sparse precision matrix estimation from ordinal item response data. Uses polychoric correlations + block coordinate descent (Friedman, Hastie & Tibshirani 2008) with EBIC-based lambda selection (Foygel & Drton 2010) and warm-starting across the lambda grid.
  • Chatterjee's xi correlation: chatterjee_xi() (single-shot), xi_stable(B = 1000) (tie-stabilized via averaging), chatterjee_matrix() (p x p asymmetric pairwise matrix). The asymmetry between xi(j, k) and xi(k, j) is exploitable for direction detection in graphical-model construction.
  • print.exametrika Glasso method for tidy summaries (lambda, EBIC, edges, precision matrix).

Rolled-up changes from 1.12.0–1.12.2

  • C++ IRM Gibbs sampler (src/irm_gibbs_core.cpp): roughly 4x speedup on the inner Gibbs loop (J20S600 nominal 82 to 20 ms/iter; J35S500 ordinal 76 to 19 ms/iter). R reference implementation preserved behind use_cpp = FALSE. Bit-identical for the first iterations; diverges sub-LSB on real data but targets the same posterior (Wilcoxon p = 0.56 / 0.81 on 50 seeds).
  • Class-side Confirmatory Biclustering: new conf_class argument fixes class memberships during EM (companion to existing conf for fields). Available for binary / ordinal / nominal / rated.
  • Vectorized EM hot path in Biclustering.ordinal().
  • Bug fixes: confirmatory Biclustering across binary/ordinal/nominal (matrix-form conf was silently dropped; NCOL(U) validation was wrong; ordinal fldmemb was being overwritten); GRM() fit indices NaN for >= 8 items; GRM() degrees of freedom; GRM() non-1..K coded ordinal responses; GridSearch() per-cell error tolerance; Biclustering.ordinal() maxiter honoring; Biclustering EM stability for empty fields/classes; dataFormat(response.type = "rated") now warns instead of erroring when a CA category is unobserved.

Documentation and check cleanup

  • Roxygen Markdown bracket expressions (`[0, 1]`, `[j, k]`, `Q[i, j]`) backticked so they are not rewritten as \link{} cross-references.
  • Glasso() ... documented; determinant(..., logarithm = TRUE) to clear partial-match NOTE.

Test suite

  • 4,844 tests across 28 files, all passing.
  • R CMD check: 0 errors | 0 warnings | 0 notes (local --as-cran, win-devel, R-hub linux / macos-arm64 / windows).

See NEWS.md for the full changelog.