@@ -36,18 +36,20 @@ function AbilityVarianceStateCriterion(bits...)
3636 return AbilityVarianceStateCriterion (dist_est, integrator, skip_zero)
3737end
3838
39- function (criterion:: AbilityVarianceStateCriterion )(tracked_responses:: TrackedResponses ):: Float64
39+ function compute_criterion (criterion:: AbilityVarianceStateCriterion ,
40+ tracked_responses:: TrackedResponses ):: Float64
4041 # XXX : Not sure if the estimator should come from somewhere else here
4142 denom = normdenom (criterion. integrator,
4243 criterion. dist_est,
4344 tracked_responses)
4445 if denom == 0.0 && criterion. skip_zero
4546 return Inf
4647 end
47- criterion (DomainType (tracked_responses. item_bank), tracked_responses, denom)
48+ compute_criterion (
49+ criterion, DomainType (tracked_responses. item_bank), tracked_responses, denom)
4850end
4951
50- function (criterion:: AbilityVarianceStateCriterion )(
52+ function compute_criterion (criterion:: AbilityVarianceStateCriterion ,
5153 :: Union{OneDimContinuousDomain, DiscreteDomain} ,
5254 tracked_responses:: TrackedResponses ,
5355 denom):: Float64
@@ -59,9 +61,12 @@ function (criterion::AbilityVarianceStateCriterion)(
5961 )
6062end
6163
62- function (criterion:: AbilityVarianceStateCriterion )(:: Vector ,
64+ function compute_criterion (
65+ criterion:: AbilityVarianceStateCriterion ,
66+ :: Vector ,
6367 tracked_responses:: TrackedResponses ,
64- denom):: Float64
68+ denom
69+ ):: Float64
6570 # XXX : Not quite sure about this --- is it useful, the MIRT rules cover this case
6671 mean = expectation (IntegralCoeffs. id,
6772 ndims (tracked_responses. item_bank),
@@ -77,25 +82,26 @@ function (criterion::AbilityVarianceStateCriterion)(::Vector,
7782 denom)
7883end
7984
80- struct AbilityCovarianceStateCriteria {
85+ struct AbilityCovarianceStateMultiCriterion {
8186 DistEstT <: DistributionAbilityEstimator ,
8287 IntegratorT <: AbilityIntegrator
83- } <: StateCriteria
88+ } <: StateMultiCriterion
8489 dist_est:: DistEstT
8590 integrator:: IntegratorT
8691 skip_zero:: Bool
8792end
8893
89- function AbilityCovarianceStateCriteria (bits... )
94+ function AbilityCovarianceStateMultiCriterion (bits... )
9095 skip_zero = false
9196 @requiresome (dist_est, integrator) = _get_dist_est_and_integrator (bits... )
92- return AbilityCovarianceStateCriteria (dist_est, integrator, skip_zero)
97+ return AbilityCovarianceStateMultiCriterion (dist_est, integrator, skip_zero)
9398end
9499
95100# XXX : Should be at type level
96- should_minimize (:: AbilityCovarianceStateCriteria ) = true
101+ should_minimize (:: AbilityCovarianceStateMultiCriterion ) = true
97102
98- function (criteria:: AbilityCovarianceStateCriteria )(
103+ function compute_multi_criterion (
104+ criteria:: AbilityCovarianceStateMultiCriterion ,
99105 tracked_responses:: TrackedResponses ,
100106 denom = normdenom (criteria. integrator,
101107 criteria. dist_est,
0 commit comments