Skip to content

contentvalidR 0.6.0

Choose a tag to compare

@JUhalt JUhalt released this 20 Sep 16:22
· 48 commits to master since this release
74ffa40

Sixth public release. v0.6.0 finishes the Delphi workflow: a Delphi study can
now be handed off to empirical validation, carrying for each item the round it
settled in, and plot() shows the two trends a Delphi is about. It also adds
a test layer that checks the package's printed claims against what the code
actually computes.

The package continues to declare Imports: stats only.

No default changes. Existing calls return the same values as in 0.5.0.

New method: plot() for delphi_validity(). content_handoff() accepts a
Delphi fit.

Published on GitHub and R-universe. 0.4.0 remains in CRAN's review queue, and
CRAN policy asks that no further version be submitted while one is pending.

Seeing a Delphi's trends

  • plot() for delphi_validity()
    (#44), so the Delphi
    workflow matches the others in having one.
    • which = "consensus" (default) draws each item's share of experts
      agreeing, round by round. A line that stops early belongs to an item that
      settled and was set aside, so the picture shows when each item left the
      study.
    • which = "stability" draws the stability statistic per pair of rounds,
      with the share of experts who kept their rating as open circles.
    • Nothing is drawn that the analysis did not apply. The consensus
      threshold appears only when one was set, and kappa gets no shaded bands,
      because its verbal benchmarks are arbitrary and it falls as a panel
      converges.
    • Item labels sit at the end of each line and are nudged apart when items
      finish at the same height.

Printed claims are tested against what the code computes

  • A new test file checks the package's printed output against the fitted
    objects it describes, rather than against strings copied from the print
    methods (#41). A test
    that asserts what the documentation claims can pass while being false. It
    checks that:
    • every number printed for an item is the number the object holds;
    • the printed settings are the settings that ran;
    • a method's critique appears when that method ran, and not otherwise;
    • percentages written into prose match the computed proportions;
    • a claim about how a statistic was computed holds of the numbers. The
      note that quadratic weighting makes kappa an intraclass correlation is
      checked against the intraclass correlation itself, and is absent under
      linear weights, where it would be false;
    • compare_rounds() claims comparability only when the settings match;
    • the status legend's example words are real recommendation values in some
      workflow;
    • statistics stay inside the ranges the glossary claims, under unanimous,
      rejected, and evenly split panels.
  • .print_key() now fails on an unknown term instead of dropping it. A typo
    in a print method's key used to remove a column's explanation in silence.

A Delphi study can hand off

  • content_handoff() now accepts a delphi_validity() fit
    (#42). It used to
    refuse one, and its message did not even mention Delphi.
    • Each item travels with its own last round. A Delphi settles one item
      at a time: an item that reached consensus early was set aside before the
      final round. round now holds that round's index, so it varies between
      items. This is the first workflow where it carries real information.
    • Relevance evidence comes from the item's last round, taken from that
      round's expert_validity() fit, with intervals: I-CVI against the
      consensus threshold, Aiken's V, and modified kappa. Modified kappa
      carries no criterion, because a Delphi decides on the consensus
      threshold rather than on the 0.74 rule.
    • Stability travels as evidence, never as a carry decision:
      proportion unchanged plus the statistic that ran, named for its
      method, such as weighted kappa (quadratic) or Goodman-Kruskal lambda. The chi-square methods add stability p_value. The names are
      qualified so a downstream report cannot misread them
      (nomologR#46).
    • round cannot be set by hand for a Delphi fit, since the fit supplies it.
  • No schema change. These are new values in existing columns, so a schema
    version 1 reader still reads the object.