Repository navigation
contentvalidR 0.4.0
Fourth public release.
v0.4.0 connects content validation to what comes after it. A content-validity pretest ends with a decision about which items go forward into data collection. Until now that decision travelled as retyped item names, and the reasons behind it stayed behind. content_handoff() packages the decision, so the item set and its evidence move together into empirical scale development.
The package still declares Imports: stats only, so it installs without a compiler toolchain. No default changes: existing calls return the same values as in 0.3.1.
Install
install.packages(
"contentvalidR",
repos = c("https://juhalt.r-universe.dev", "https://cloud.r-project.org")
)Handoff to empirical validation
handoff <- content_handoff(fit)
handoff$items # the carried items, ready for the next stage
handoff$item_evidence # every reviewed item, with the rule that decided itThe handoff carries:
- the item names that survived content review;
- the construct each belongs to, where the design defines one;
- a per-item evidence table with the effective number of judges and the decision rule, in words;
- the statistics behind each decision, with the criterion each was compared against;
- the provenance of the analysis: workflow, settings, method, citations, version, and date.
Items that did not qualify are not dropped. They stay in the evidence table with carried = FALSE, because review is not deletion. The printed output says plainly that surviving content review is evidence about relevance and representation, not a prediction that an item will behave well empirically.
The object shape is schema version 1, agreed with nomologR, the companion package for the empirical stage, after a round of counter-proposals between the two. Every field is a base type, so neither package depends on the other. Two refusals are built into the agreement:
- contentvalidR never labels a held-back item as "dropped".
- nomologR never invents construct membership for an expert panel that rated a single item set.
New vignette: From Content Validity to Empirical Validation.
A stricter parallel analysis criterion
v0.3.0 made Horn's (1965) parallel analysis the default for qfactor_content(). Glorfeld (1995) found Horn's mean criterion still tends to retain one or two factors too many, and proposed comparing each eigenvalue against an upper percentile of the simulated distribution instead.
qfactor_content(ratings, parallel_criterion = "percentile") # Glorfeld, 95th percentileHorn's mean stays the default. Both criteria read the same simulation, so one seeded run compares them directly, and the result records which criterion produced the retained number of factors.
Packaging
Both 0.3.x CRAN submissions were returned by the incoming checks, each for a problem neither the local --as-cran run nor the CI matrix could see:
- 0.3.0 was returned because README links pointed at files excluded from the built package. 0.3.1 fixed that.
- 0.3.1 was returned because its tarball, built from a git worktree, carried a
.gitfile thatR CMD builddoes not drop..Rbuildignorenow excludes it, and release tarballs are now listed to confirm they contain no hidden files before upload.
0.4.0 goes to CRAN with both fixes.
Benched, with reasons
Bayesian content-validity extensions stay out of this package. Bayesian Instrument Development needs participant response data and MCMC, which puts it past the handoff and outside the zero-dependency profile. It is recommended for nomologR, where the interesting version would use content-validity evidence as informative priors. The reasoning is recorded in #2.
Verification
R CMD check --as-cranon the built 0.4.0 tarball: 0 errors, 0 warnings. Its two notes are "New submission" and a component missing on the local check machine.- The built tarball contains no hidden files and no build-ignored files, confirmed by listing its contents rather than inferred from a passing check.
- A clean-library install of the tarball ran the examples for all 40 help topics, all eight vignettes, and the citation.
- The handoff has 14 tests covering all three item-level workflows, both congruence modes, the construct mapping, per-workflow judge counts and decision rules, and refusals. Its output was shared with nomologR as real objects rather than prose.
- The percentile criterion is tested to be no less strict than Horn's mean on the same simulation, and to retain no more factors on pure noise across replications.
Full changelog: https://juhalt.github.io/contentvalidR/news/index.html