Skip to content

contentvalidR 0.10.0

Choose a tag to compare

@JUhalt JUhalt released this 28 Sep 18:04
· 17 commits to master since this release
aff485a

Tenth public release, and the last planned before the joint 1.0 release
candidate on 2026-10-17. v0.10.0 adds figures for papers, posters, and
teaching: the item flow diagram and the item evidence profile of
content_evidence(), and the full distribution of a panel's ratings, each in
APA gray or in color. It also states the handoff contract nomologR reads, makes
this package's walkthrough the joint one, and separates the Delphi printout's
caveats from its teaching.

contentvalidR is on CRAN: 0.4.0 was published there on 2026-09-28. CRAN asks
for updates no more often than every one to two months, so 0.10.0 is released
on GitHub and R-universe, and the next CRAN submission is the joint 1.0.

The package continues to declare Imports: stats only.

No computed value changes. Across 25 analyses spanning every workflow,
every value 0.9.0 returns is identical in 0.10.0. Relevance fits gain
details$ratings. Some printed wording changes: the Delphi printout's method
paragraphs move into its key, anova_content() prints within 80 columns, the
printed handoff advises passing the whole handoff to nomologR, and the
citation a handoff carries for stability = "percent_change" reads
"Scheibe et al. (1975/2002)".

No breaking changes. The plot methods gain arguments after their existing
ones: type, apa, and labels for expert-panel fits, and
which = "distribution", apa, and labels for Delphi fits.
agreement_summary() remains deprecated and is removed in 1.0.0.

Figures for papers, posters, and teaching

Each new figure draws what the fits and handoffs already decided, and says
whether it follows a published form or is this package's own design.

  • content_evidence() (new) brings the handoffs from several review
    stages together, such as a relevance panel and then an item sort. It prints
    one row per item with each stage's decision beside the statistic its rule
    read, and draws two figures:
    • plot(x, type = "flow"), the item flow diagram, modeled on the PRISMA
      2020 flow diagram (Page et al., 2021): what each stage reviewed, what it
      held back and the number behind each decision, and what went forward;
    • plot(x), the item evidence profile, this package's own design: one
      panel per stage with each statistic, its interval, and its criterion, so
      agreement and disagreement between methods can be seen item by item.
  • The distribution view draws every rating behind an index as diverging
    stacked bars (Heiberger & Robbins, 2014), split at the cut the decision rule
    counts: plot(fit, type = "distribution") for a relevance panel and
    plot(fit, which = "distribution") for a Delphi study, one bar per round. It
    shows what the I-CVI cannot: two items at 1.00, one rated relevant with 4s
    and the other with 3s. Relevance fits now keep their ratings in
    details$ratings to draw it.
  • apa switches these figures between gray (TRUE, the default, as an
    APA figure is printed) and a colorblind-safe scheme for slides and posters
    (FALSE): teal for evidence that met its criterion, brown for evidence under
    review. Symbols carry the decision either way, so no reading depends on
    color.
  • A relevance panel for the walkthrough items, walkthrough_relevance.csv,
    gives the twelve items a second source of content evidence.
    vignette("reporting-examples") uses it to show both figures, with a sample
    caption. The ratings are constructed, and a separate script,
    data-raw/build-walkthrough-panel.R, says what each is built to show. The
    three walkthrough files that nomologR ships are unchanged.
  • The printed handoff and vignette("handoff-to-empirical-validation") now
    pass the whole handoff to nomologR, nomo_screen(data, items = handoff),
    rather than handoff$items, so the keying and the reasons for anything held
    back travel with the items. The vignette no longer calls the handoff reader
    in nomologR future work.

On CRAN

  • contentvalidR 0.4.0 was published on CRAN on 2026-09-28. The README now
    gives install.packages("contentvalidR") first, carries a CRAN badge, and
    explains why CRAN's version can trail the newest release on R-universe:
    CRAN asks packages to update no more than every one to two months.

Finishing touches before 1.0

  • The Delphi printout separates what changes a reading from what teaches
    it.
    Two short caveats always print: read kappa as a trend beside the
    share of experts who kept their rating, not against a cut-off; and with
    fewer than about 40 experts the kappa intervals cover less than their
    stated 95%. The fuller explanation (the weights, why kappa falls as a panel
    converges, Klar et al.'s coverage figures) now sits in the key under "How
    the stability statistic works", so an instructor's students see it and a
    researcher can hide it with options(contentvalidR.show_key = FALSE). The
    critique printed for an alternative stability method still always prints.
    The example printout goes from 100 lines to 92, or 58 with the key hidden.
  • anova_content() prints within 80 columns. The strongest competitor, which
    htd() and the construct-rating workflow already show, stays in the
    strongest_competitor column.
  • The website's Articles menu lists every guide under a heading, in the order
    a course would use them: Start here, Workflow guides, Planning and
    reporting, and After content review. The workflow guides were hidden under
    "More articles".
  • Scheibe et al. is cited from the edition the package's method was checked
    against:
    the editors' 2002 web edition of Linstone and Turoff, with the
    chapter's pages (257–281), a link, and "(Original work published 1975)", as
    APA 7 requires for a republished work. In-text citations read
    "Scheibe et al. (1975/2002)", including the citation a handoff carries for
    stability = "percent_change". The 1975 printing's pages could not be
    checked.

The handoff contract, stated for readers

Asked for by nomologR before handoff schema 1 becomes a 1.0 promise. The
schema and every handoff are unchanged.

  • ?content_handoff has a new section, "Reading the decisions": take each
    item's decision from carried and status, never re-derive it by
    comparing value with criterion or by branching on the producer version.
    The example is the nine-expert correction in 0.8.0, where an item's I-CVI
    stayed at .778 while its decision changed. The section also restates that
    keying of NA means unknown, never forward-worded.
  • ?content_handoff says an item sits in at most one scale, the one its
    item_evidence$scale names. A test holds the sort, rating, and congruence
    workflows to it, and checks that each refuses an item with two targets.

The joint walkthrough lives here

  • vignette("one-item-set-both-stages") is the joint walkthrough for
    contentvalidR and nomologR, as the maintainer decided for the joint 1.0.
    It now says so, passes the handoff itself to nomo_screen() and
    nomo_run() rather than h$items, and links to the section of the
    nomologR guided workflow that continues from content review. Two stale
    sentences are corrected. The handoff reader in nomologR, which the vignette
    called future work, has shipped. And the nomologR guided workflow starts
    from the same handoff but simulates its own responses, so its screening
    numbers differ from these.
  • The walkthrough links to the companion article in nomologR, "From content
    review to empirical screening", which continues it on the same responses.
    nomologR ships the item and response files of the walkthrough unchanged,
    with the script that generates them.