Changelog
Source:NEWS.md
contentValidity 0.2.0
CRAN release: 2026-06-03
New features
- All relevance-scale indices (
icvi(),mod_kappa(),aiken_v(),scvi_ave(),scvi_ua()) andcvr()now accept an optionalci = TRUEargument that returns bootstrap confidence intervals alongside the point estimate. Defaultci = FALSEpreserves the exact v0.1.0 return type (named numeric vector for item-level indices, scalar for scale-level indices), so existing code does not break. - Bootstrap CIs support both the percentile method (default; Efron & Tibshirani, 1993) and the bias-corrected accelerated (BCa) method (DiCiccio & Efron, 1996). Default 2000 replicates, following Davison & Hinkley (1997) and Hesterberg (2015).
- Resampling is performed at the expert (row) level rather than the item (column) level, matching the standard inferential frame for inter-rater reliability analyses (Gwet, 2014).
New indices
-
gwet_ac2()— Gwet’s AC2 weighted chance-corrected agreement coefficient (Gwet, 2008, 2014) for ordinal ratings. Unlike AC1 (which dichotomizes ratings before computing agreement), AC2 preserves the full ordinal information through a weight matrix. Supportsweights = "quadratic"(default),"linear","identity", or a custom q x q matrix; requires acategoriesargument to specify the full theoretical rating scale (e.g.,1:4for a standard relevance scale). Implementation matchesirrCAC::gwet.ac1.raw()exactly so that AC2 values are bit-for-bit reproducible against the canonical reference by Gwet (the original author). -
gwet_ac1()— Gwet’s AC1 chance-corrected agreement coefficient (Gwet, 2008). AC1 uses a marginal-adjusted chance-correction (p_e = 2pi(1-pi)), which is methodologically distinct from the fixed binomial null (C(N,A) * 0.5^N) used by Polit’s modified kappa. The two indices answer different questions about chance agreement and typically diverge when the prevalence of “relevant” ratings is far from 0.5; reporting both – alongside I-CVI – provides a more complete picture of inter-rater agreement than any single index. Wongpakaran et al. (2013, BMC Medical Research Methodology) compared AC1 with Cohen’s traditional kappa and recommended AC1 for high-prevalence rating contexts; the present package implements both AC1 and Polit’s modified kappa so the analyst can report whichever null model is most defensible. Accepts the bootstrap CI arguments described above.
Visualization
-
plot.content_validity()— S3 plot method forcontent_validityobjects. Produces an I-CVI vs. agreement-index scatter with reference lines at conventional adequacy cutoffs and automatic flagging of items outside the adequacy region. The y-axis index is selectable viay_index("mod_kappa","gwet_ac1","gwet_ac2", or"aiken_v"). Parallel in spirit to the difficulty-discrimination scatter used in classical item analysis (mcqAnalysis).
Multi-dimensional / subscale analysis
-
content_validity()accepts a newsubscaleargument that maps items to subscales (factors / domains). When supplied, the function computes scale-level indices (S-CVI/Ave, S-CVI/UA, mean kappa, mean AC1, mean AC2) per subscale in addition to the overall scale, and returns the per-subscale results as a$subscalesdata frame. Subscales with fewer than two items are reported withNAat the scale level. This reflects how multi-construct instruments are typically structured in practice (e.g., a depression scale with separate cognitive and somatic subscales).
Sample-size planning
-
cv_sample_size_icvi()— computes the minimum number of expert raters required to estimate I-CVI within a specified confidence-interval half-width at a chosen confidence level. Supports both the closed-form Wald (normal approximation) and the Wilson score interval (Wilson, 1927; recommended by Newcombe, 1998 and Agresti & Coull, 1998 for proportion CIs near the boundary). Fills a documented gap in the content-validity literature: Lynn- and Polit & Beck (2006) recommend 5–10 experts as a rule of thumb without statistical justification, while this function gives a precision-based answer suitable for inclusion in study protocols and grant applications.
Wrapper updates
-
content_validity()now includesgwet_ac1andgwet_ac2columns in its per-item table andmean_ac1andmean_ac2entries in its scale-level vector. New arguments:categories(defaults toseq(lo, hi)so AC2 works on the standard 4-point relevance scale with no extra input) andac2_weights(defaults to"quadratic"). All existing fields are preserved unchanged for backward compatibility. -
apa_table()now includes “Gwet’s AC1” and “Gwet’s AC2” columns when the underlyingcontent_validityobject carries them, and silently omits them for v0.1.0-style objects that lack the fields.
contentValidity 0.1.0
CRAN release: 2026-05-11
Initial CRAN release.
Item-level indices
-
icvi()— Item-level Content Validity Index (Lynn, 1986). -
mod_kappa()— Modified kappa adjusted for chance agreement (Polit, Beck, & Owen, 2007). -
aiken_v()— Aiken’s V coefficient using the full rating scale (Aiken, 1985).
Scale-level indices
-
scvi_ave()— Scale-level Content Validity Index, average method (Polit & Beck, 2006). -
scvi_ua()— Scale-level Content Validity Index, universal agreement (Polit & Beck, 2006).
Lawshe’s Content Validity Ratio
-
cvr()— Lawshe’s CVR (Lawshe, 1975). -
cvr_critical()— exact-binomial critical CVR values (Wilson, Pan, & Schumsky, 2012).
Reporting and convenience
-
content_validity()— wrapper returning all relevance-scale indices in a tidycontent_validityobject, with a customprint()method. -
apa_table()— publication-ready APA-style tables in data frame, markdown, HTML, or LaTeX format.