Skip to content

Releases: joonho112/pvstackr

pvstackr 0.2.1

Choose a tag to compare

@joonho112 joonho112 released this 11 Sep 18:33

This release changes the documentation only. The R code, the computations and
the printed output are the same as in 0.2.0.

  • The help pages, the ten articles and the README are rewritten in plain
    language and checked against the code, the companion methods preprint and the
    cited literature.

  • Statements that did not match the package are corrected:

    • pvstackr fits a single-level linear regression weighted by the survey
      weights and reports its fixed effects. A formula with a random-effect term
      stops pv_brr_target(), stack_direct and stack_psis with an error. The
      earlier articles presented a two-level model with a school variance.
    • The likelihood of each plausible value is survey-weighted, and each row of
      the stacked data has as its weight the final weight divided by its mean and
      by the number of plausible values. The earlier text called the likelihood
      unweighted and gave the row weight as one over the number of plausible
      values.
    • pvstackr runs no part of Pareto smoothed importance sampling: stack_psis
      takes importance weights and Pareto k-hat values computed elsewhere. The
      thresholds of Vehtari et al. (2017, 2024) are now stated apart from
      pvstackr's single threshold, psis_k_threshold.
    • The companion methods paper is cited as its Zenodo preprint
      (https://doi.org/10.5281/zenodo.22407935). Its stacked fixed-effect point
      identity is Theorem 4.1, with conditions (R1)–(R5). Coverage results that
      the preprint does not report are no longer attributed to it; the interval
      labels (interval_role, coverage_claim_allowed) are pvstackr's
      reporting rule.
    • The covariance that pv_brr_target() computes from the replicate weights
      is called the BRR–Fay replicate covariance, not a sandwich estimator.
  • The interval label coverage_claim_allowed is described as what it is:
    a record of how an interval was built, by pvstackr's reporting rule. It does
    not certify the coverage of the interval.

  • The package title and description are rewritten in plain words.

  • The articles have new titles; their file names and web addresses are
    unchanged. The website has a "Get started" link to the first article.

  • The tests that check phrases in the documentation follow the new wording and
    check the same facts.

pvstackr 0.2.0

Choose a tag to compare

@joonho112 joonho112 released this 14 Aug 18:16

The first hardening release. It makes stored objects portable across R
versions and machines, opens the bundled brms adapter as a public three-function
interface, and tightens what a fit is allowed to retain when it is blocked.

Portability (changes hash values)

  • Content hashes and validation stamps no longer depend on the R version that
    wrote them. Both hashed the whole serialization stream, whose fourteen-byte
    header records the writing R version. Content hashes computed by earlier
    releases will not match the ones this release derives
    , so a stored
    design_hash from 0.1.x is expected to differ.
  • A saved fit no longer refuses its own accessors after an R upgrade.
  • pv_revalidate_brr_target() no longer requires a legacy target's weighted
    least-squares estimates to match bit-for-bit. Those last bits differ between
    BLAS implementations, so a target built on one machine could not be
    revalidated on another. Structure, declared inputs, and the input-derived
    design hash are still compared exactly; the estimates go through the
    package's numeric policy (absolute 1e-12, relative 1e-10). A difference
    large enough to matter still fails closed.

Backend

  • The bundled brms adapter is public: pv_backend_brms_fit_function(),
    pv_backend_brms_draws_function(), and pv_backend_brms_sampler_diagnostics().
    Injecting all three runs the same code the bundled backend runs; any one can
    be replaced to attach a different engine. The routes differ in recorded
    provenance, and a reportable injected fit needs all three.
  • pv_fit(method = "stack_direct") with pv_control(backend = "brms") now runs
    without an injected adapter pair.
  • A population-level prior (class = "b" with no coef) is expanded onto the
    individual slope coefficients instead of being refused.

Fail-closed behaviour

  • Final fits carry an exact validation record with a deep tier and a cheap
    rehash tier.
  • Blocked fits use a generic retention firewall: heavy payloads are absent, and
    only canonical evidence is retained.
  • stack_psis separates weight input route, Pareto-k source, and smoothing
    provenance; supplied weights enter the reportable route only when the caller
    declares an external producer and version.
  • pv_migrate_legacy_psis_fit() gives historical PSIS results an
    inspection-only migration path.

See NEWS.md for the
full list, and the package website for
documentation.