npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jgdina/kernels-js

v1.0.0-rc.1

Published

Pure TypeScript numerical backend for jGDINA.

Readme

@jgdina/kernels-js

Pure TypeScript numerical backend for the binary, single-group jGDINA v1 estimator. It supports per-item GDINA, DINA, and DINO models; estimated saturated or fixed latent-class priors; missing responses; deterministic multiple starts; and full or scores-only posterior output.

Numerical conventions

  • Attribute profiles use GDINA's alpha2 order: the zero profile followed by profiles in increasing mastery count and lexicographic subset order.
  • GDINA design columns use the same subset order: intercept, main effects, then increasing-order interactions. DINA and DINO use intercept plus their ideal response indicator.
  • The E-step uses row-wise log-sum-exp. Missing responses contribute zero to the conditional log-likelihood.
  • The closed-form M-step applies smallSampleCorrection to each free success probability and then applies strict-interior probabilityBounds. Exact 0/1 item bounds are rejected during validation so all log likelihoods stay finite. DINA pools all non-master groups; DINO pools all nonzero groups.
  • Estimated saturated class probabilities are floored at Number.MIN_VALUE after each M-step and renormalized. Fixed priors, including explicit zeros, are never changed.
  • Convergence is the maximum absolute change across item success probabilities and, for a saturated prior, class probabilities.
  • Multiple starts follow GDINA's fast workflow: evaluate every candidate under the initial prior, select the largest initial observed likelihood (lowest index on ties), and run EM only from that candidate. Callers may provide all candidates through initialItemProbabilityCandidates; the legacy initialItemProbabilities continues to define only start 0.

Reproducibility

Random candidates use xoshiro128** with SplitMix32 state expansion. Every operation is explicit unsigned 32-bit arithmetic, so the same unsigned seed, start index, input, and package version produce identical candidates in Node and browsers. This is deterministic across JavaScript runtimes but is not intended to reproduce R's random-number stream.

The public backend is available as jsBackend or via createJsBackend(). fitValidated() is the direct entry point for worker adapters, while evaluateValidated() evaluates supplied parameters without fitting for golden likelihood and posterior fixtures.

Numerical parity and convergence are not evidence of substantive model fit. The complete local jGDINA workspace contains the validation and statistical responsibility evidence. This archive includes the preferred TypeScript source and exact package-local rebuild procedure in SOURCE.md, compatibility provenance in UPSTREAM.md, and the GPL-3.0-only license with NOTICE.