Check Feasibility of Target Reliability
check_feasibility.RdScreens whether a given target reliability is attainable in the generated finite Monte Carlo design for a particular test design (number of items, model, latent distribution, item source) by computing the range of empirical reliabilities across a range of scaling factors.
This function is useful for determining whether a planned simulation study is feasible before running the (potentially expensive) calibration algorithms.
Usage
check_feasibility(
n_items,
model = c("rasch", "2pl", "3pl"),
latent_shape = "normal",
item_source = "parametric",
c_bounds = c(0.1, 10),
M = 10000L,
seed = NULL,
latent_params = list(),
item_params = list(),
target_rho = NULL,
verbose = TRUE
)
# S3 method for class 'feasibility_check'
print(x, digits = 4, ...)Arguments
- n_items
Integer. Number of items in the test form.
- model
Character. Measurement model:
"rasch","2pl", or"3pl". For 3PL, supply lower-asymptote generation controls initem_params; discrimination alone is varied underD = 1.- latent_shape
Character. Shape argument passed to
sim_latentG().- item_source
Character. Source argument passed to
sim_item_params().- c_bounds
Numeric length-2 vector. Range of scaling factors to evaluate. Default:
c(0.1, 10).- M
Integer. Monte Carlo sample size for theta. Default: 10000.
- seed
Optional integer for reproducibility.
- latent_params
List. Additional arguments passed to
sim_latentG().- item_params
List. Additional arguments passed to
sim_item_params().- target_rho
Optional numeric scalar in (0, 1). If supplied, the result includes status fields indicating whether the target is below, inside, or above the achievable range for each metric.
- verbose
Logical. If TRUE, print results.
- x
An object of class
"feasibility_check".- digits
Integer. Number of decimal places for printing.
- ...
Additional arguments (ignored).
Value
An object of class "feasibility_check" (a list) with:
rho_range_infoNumeric length-2 vector: empirical range of average-information reliability (\(\tilde{\rho}\)) computed by the configured finite scan; provisional when topology is unresolved.
rho_range_msemNumeric length-2 vector: empirical range of MSEM-based reliability (\(\bar{w}\)) computed by the configured finite scan; provisional when topology is unresolved.
rho_bounds_infoEndpoint reliabilities for average-information reliability.
rho_bounds_msemEndpoint reliabilities for MSEM-based reliability.
rho_info_max_cScaling factor at the maximum information reliability detected by the configured scan within
c_bounds; provisional when topology is unresolved.rho_msem_max_cScaling factor at the maximum MSEM reliability detected by the configured scan within
c_bounds; provisional when topology is unresolved.target_status_infoIf
target_rhois supplied, one of"below_lower","boundary_lower","feasible","boundary_upper", or"above_upper"for \(\tilde{\rho}\).target_status_msemAnalogous status for \(\bar{w}\).
topology_info,topology_msemComplete configured log-grid scans, polished extrema, detected roots, monotone branches, evaluation counts, and resolution status for each metric.
target_status_info_canonical,target_status_msem_canonicalCanonical feasibility status:
"feasible","infeasible_below_range","infeasible_above_range", or"uncertain".root_count_info,root_count_msem,admissible_root_count_info,admissible_root_count_msemDetected roots and roots on increasing crossing/boundary branches.
best_achievable_info,best_achievable_msemClosest detected point to
target_rho, including scale, reliability, residual, absolute error, and location type.n_itemsNumber of items.
modelModel used.
latent_shapeLatent distribution shape.
c_boundsScaling factor bounds evaluated.
MMonte Carlo sample size.
theta_varEstimated latent variance.
The input object, invisibly.
Details
Either reliability metric can be non-monotone over a sufficiently broad
finite empirical integration interval. Both metrics therefore use the same
adaptive log-scale topology scan as the calibrators. Endpoint values remain
available in rho_bounds_*, while rho_range_* includes all
resolved interior extrema within the user-supplied bounds.
These ranges and target classifications are conditional on the generated
finite theta sample. In particular, for the built-in
latent_shape = "heavy_tail", the population MSEM functional can be
non-integrable even though a finite Monte Carlo sample yields a numeric
rho_range_msem. Treat that MSEM range as finite-grid sensitivity
evidence, not as a population feasibility guarantee.
Examples
# Check feasibility for 25-item Rasch test
feas <- check_feasibility(n_items = 25, model = "rasch",
target_rho = 0.90, seed = 42,
M = 5000, verbose = FALSE)
print(feas)
#>
#> =======================================================
#> Feasibility Check: Achievable Reliability Range
#> =======================================================
#>
#> Number of items : 25
#> Model : RASCH
#> Latent shape : normal
#> Latent variance : 1.0099
#> c range : [0.10, 10.00]
#> Monte Carlo M : 5000
#>
#> Achievable Reliability Ranges:
#> rho_tilde (info) : [0.0591, 0.9872]
#> rho_bar (msem) : [0.0002, 0.9146]
#>
#> Target rho* : 0.9000
#> info status : feasible
#> msem status : feasible
#>
#> Note: rho_tilde >= rho_bar on the same information grid (Jensen's inequality).
#> rho_tilde range screens EQC targets; root policy must still admit a root.
#> rho_bar range screens SAC targets; stable interior-branch preflight is also required.
#>
# Metric-specific target status
feas$target_status_info
#> [1] "feasible"
feas$target_status_msem
#> [1] "feasible"