nomo_screen() performs a conservative audit of candidate item data before
factor-retention, EFA, or CFA decisions are made. It summarizes item storage
and observed response patterns, missingness, response concentration, and
case-level completeness. It also creates a decision log that distinguishes
observations from recommendations.
Usage
nomo_screen(
data,
items = NULL,
guidance = nomo_defaults(),
effort = FALSE,
scales = NULL,
reverse = NULL,
scale_range = NULL,
pair_magnitude = 0.6
)Arguments
- data
A data frame containing candidate items.
- items
Optional character vector identifying item columns. If
NULL, all columns are audited and the decision log reminds the user to verify that identifiers, demographics, and other non-item columns were not included. May also be a handoff fromcontentvalidR'scontent_handoff(); see Items from content review.- guidance
Guidance settings from
nomo_defaults().- effort
Logical. If
TRUE, case-level indices of careless or insufficient-effort responding are added. See Careless responding.- scales
Optional named list of character vectors assigning items to scales. Needed for even-odd consistency and for the within-scale versions of long-string and inter-item standard deviation. With two or more scales, each item's corrected item-rest correlation is also computed against the rest of its own scale, and the item review uses that value. Negative inter-item correlations are then reviewed only within a scale, since items of different constructs need not correlate positively. A
contentvalidRhandoff supplies its scales here.- reverse
Optional character vector naming reverse-keyed items. Used only to recode an internal copy for the indices that need it; the data is never recoded.
- scale_range
Numeric
c(min, max)of the response scale. Required wheneverreverseis supplied, and never inferred from the data.- pair_magnitude
Minimum absolute between-person correlation for an item pair to count as a psychometric antonym or synonym. Curran (2016) suggests .60 while saying there is no firm basis for it, so it is an argument rather than a constant.
Value
An object of class nomo_screen. The fields to read are:
items: the items screened, andn_cases, the number of rows.item_summary: one row per item, with its storage, inferred type, missingness, most common response, descriptive statistics, and near-zero-variance indicators.response_distribution: counts and proportions of each response.case_summary: missingness per row.relationship_summary: each item's corrected item-rest correlation and summary of its inter-item correlations. With two or more declared scales,scale,scale_item_rest_r, andscale_item_rest_ngive each item's scale and its item-rest correlation within that scale, andscale_negative_interitem_ncounts its negative correlations with items of the same scale; otherwise they areNA.inter_item_correlations: one row per item pair.decision_log: the evidence and its explanations (seenomo_table()).effort,effort_pairs, andeffort_settings: the careless-responding indices per row, the pairs they used, and their settings, wheneffort = TRUE.handoff: the content-review handoff read fromitems, when one was supplied.
Other fields record the call, the settings used, and intermediate engine
results. They may change between releases and are not part of the stable
interface (see ?nomologR).
Details
The function never removes rows or items, changes scores, reverse-keys items, or decides whether a scale is valid.
Item-type labels are descriptive, not modeling decisions. In particular,
numeric_discrete means that the observed numeric values are integer-like
with 10 or fewer distinct observed values. It does not automatically mean
that the item should be treated as ordinal in later analyses.
A constant item has only one distinct observed value. An all_missing item
has no observed values. These are hard data conditions rather than
psychometric cutoff rules.
Response concentration and near-zero-variance flags use configurable
teaching references from nomo_defaults(). They are screening heuristics,
not psychometric laws or automatic item-retention rules. Ordered and
numeric-discrete items also receive descriptive boundary concentration
summaries. Continuous-like numeric indicators receive descriptive skewness
and excess-kurtosis summaries without a pass/fail normality judgment.
Careless responding. With effort = TRUE, each case receives the indices
Meade and Craig (2012), Huang et al. (2012), and Curran (2016) describe:
long-string, inter-item standard deviation (Marjanovic et al., 2015),
Mahalanobis distance, even-odd consistency, and psychometric antonym and
synonym correlations. Curran recommends these be used in series because each
has blind spots, and the output is built to show where they disagree rather
than to combine them into one score.
They disagree for a reason. Inter-item standard deviation detects random responding and gives a respondent who answers every item identically the best possible score; long-string detects exactly that respondent. When the two disagree about a case, the decision log says so.
A case is flagged only where a source states a rule, and each flag carries the source's own qualification: long-string at half the number of items, which Curran offers as a conservative starting point and says is not the best cut score for every scale, and a positive antonym or negative synonym correlation. The other indices have no stated cut score and are reported without a flag. Huang et al. found the indices they recommended identified attentive respondents well and random responders poorly, so an unflagged case is not thereby shown to be attentive.
Each respondent's antonym, synonym, and even-odd value is a correlation whose N is the number of pairs or scales. With two, every value is exactly +1 or -1, so at least three are required; with fewer than five the log says the flags are coarse. Cases are flagged, never removed.
Items from content review. items may be the handoff that
contentvalidR's content_handoff() produces after content review. Only
items it marks as carried are screened. Every item it held back is listed in
the decision log with its status and recommendation quoted in
contentvalidR's own words, and is never analyzed or reinstated here. The log
also records the producing version, workflow, and carry rule, and that item
membership came from content review rather than from these data.
A carried item that is not a column of data is refused, never dropped.
Where the call leaves scales, reverse, or scale_range unset, the
handoff's scales and declared keying fill them. An item is never treated as
forward keyed because keying was undeclared, and a response scale the
handoff did not record is never inferred. A handoff with a schema version
this release does not read is refused, naming both package versions. The
interface is specified in nomologR issue #46, and contentvalidR is not
needed to read it.
References
Curran, P. G. (2016). Methods for the detection of carelessly invalid responses in survey data. Journal of Experimental Social Psychology, 66, 4-19. doi:10.1016/j.jesp.2015.07.006
Huang, J. L., Curran, P. G., Keeney, J., Poposki, E. M., & DeShon, R. P. (2012). Detecting and deterring insufficient effort responding to surveys. Journal of Business and Psychology, 27(1), 99-114. doi:10.1007/s10869-011-9231-8
Marjanovic, Z., Holden, R., Struthers, W., Cribbie, R., & Greenglass, E. (2015). The inter-item standard deviation (ISD): An index that discriminates between conscientious and random responders. Personality and Individual Differences, 84, 79-83. doi:10.1016/j.paid.2014.08.021
Meade, A. W., & Craig, S. B. (2012). Identifying careless responses in survey data. Psychological Methods, 17(3), 437-455. doi:10.1037/a0028085
Clark, L. A., & Watson, D. (2019). Constructing validity: New developments in creating objective measuring instruments. Psychological Assessment, 31(12), 1412-1427. doi:10.1037/pas0000626
Kuhn, M., & Johnson, K. (2013). Applied predictive modeling. Springer. doi:10.1007/978-1-4614-6849-3
Nunnally, J. C., & Bernstein, I. H. (1994). Psychometric theory (3rd ed.). McGraw-Hill.
Examples
dat <- data.frame(
item1 = c(1, 2, 3, 4, 5),
item2 = c(1, 2, NA, 4, 5),
item3 = c(3, 3, 3, 3, 3)
)
out <- nomo_screen(dat)
out$item_summary
#> # A tibble: 3 × 23
#> item storage item_type n n_observed n_missing pct_missing n_unique mode_n
#> <chr> <chr> <chr> <int> <int> <int> <dbl> <int> <int>
#> 1 item1 numeric numeric_… 5 5 0 0 5 1
#> 2 item2 numeric numeric_… 5 4 1 0.2 4 1
#> 3 item3 numeric binary 5 5 0 0 1 5
#> # ℹ 14 more variables: mode_prop <dbl>, min <dbl>, max <dbl>, mean <dbl>,
#> # sd <dbl>, constant <lgl>, all_missing <lgl>, percent_unique <dbl>,
#> # frequency_ratio <dbl>, near_zero_variance <lgl>, floor_prop <dbl>,
#> # ceiling_prop <dbl>, skewness <dbl>, excess_kurtosis <dbl>
out$decision_log
#> # A tibble: 5 × 10
#> stage object metric value reference severity observation recommendation
#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr>
#> 1 screen item_select… all_c… 3 "" info Because `i… Verify that i…
#> 2 screen item1 item_… 5 "Descrip… info `item1` ha… Do not infer …
#> 3 screen item2 missi… 0.2 "Descrip… info `item2` ha… Inspect the p…
#> 4 screen item2 item_… 4 "Descrip… info `item2` ha… Do not infer …
#> 5 screen item3 const… 1 "At leas… concern `item3` ha… Inspect codin…
#> # ℹ 2 more variables: decision <chr>, rationale <chr>
# Simulated scale-development data with known teaching features
scr <- nomo_screen(nomo_demo_continuous)
summary(scr)
#> <nomo_screen summary> Item and data audit
#> Cases: 500 | Items: 10 | Flags: 1 review, 0 concern
#> Items with missing responses: 2 | Constant: 0 | All missing: 0
#> Relationship eligible: 10
#>
#> Item review
#> Item Type Missing Top share Item-rest r Flag
#> a1 continuous 0.0% 1.0% 0.559
#> a2 continuous 3.0% 1.2% 0.580
#> a3 continuous 0.0% 1.0% 0.511
#> a4 continuous 0.0% 1.2% 0.549
#> a5 continuous 0.0% 1.6% 0.588
#> b1 continuous 0.0% 1.6% 0.602
#> b2 continuous 0.0% 1.4% 0.513
#> b3 continuous 2.4% 1.0% 0.571
#> b4 continuous 0.0% 1.2% 0.481
#> b5 continuous 0.0% 1.4% 0.279 review
#> Top share is the proportion of responses in the most common category.
#>
#> Flagged items
#> - b5 (review): `b5` has a corrected item-rest correlation of r = 0.28 (n =
#> 473), below the teaching reference.
#>
#> Flags are review aids, not decisions to keep or delete an item.