@@ -8,12 +8,90 @@ struct LikelihoodWeightedItemCriterion{
88 estimator:: AbilityEstimatorT
99end
1010
11+ function LikelihoodWeightedItemCriterion (bits... )
12+ @requiresome dist_est_integrator_pair = get_dist_est_and_integrator (bits... )
13+ (dist_est, integrator) = dist_est_integrator_pair
14+ criterion = PointwiseItemCriterion (bits... )
15+ return LikelihoodWeightedItemCriterion (criterion, integrator, dist_est)
16+ end
17+
1118function compute_criterion (
12- lwic:: LikelihoodWeightedItemCriterion ,
13- tracked_responses:: TrackedResponses ,
14- item_idx
19+ lwic:: LikelihoodWeightedItemCriterion ,
20+ tracked_responses:: TrackedResponses ,
21+ item_idx
1522)
1623 func = FunctionProduct (
17- pdf (lwic. estimator, tracked_responses), lwic. criterion (tracked_responses, item_idx))
18- lwic. integrator (func, 0 , lwic. estimator, tracked_responses)
24+ pdf (lwic. estimator, tracked_responses), ability -> compute_criterion (lwic. criterion, tracked_responses, item_idx, ability))
25+ intval (lwic. integrator (func, 0 , lwic. estimator, tracked_responses))
26+ end
27+
28+ struct PointItemCriterion{
29+ PointwiseItemCriterionT <: PointwiseItemCriterion ,
30+ AbilityEstimatorT <: PointAbilityEstimator
31+ } <: ItemCriterion
32+ criterion:: PointwiseItemCriterionT
33+ estimator:: AbilityEstimatorT
1934end
35+
36+ function compute_criterion (
37+ pic:: PointItemCriterion ,
38+ tracked_responses:: TrackedResponses ,
39+ item_idx
40+ )
41+ ability = maybe_tracked_ability_estimate (
42+ tracked_responses,
43+ pic. estimator
44+ )
45+ return compute_criterion (pic. criterion, tracked_responses, item_idx, ability)
46+ end
47+
48+ struct LikelihoodWeightedItemCategoryCriterion{
49+ PointwiseItemCategoryCriterionT <: PointwiseItemCategoryCriterion ,
50+ AbilityIntegratorT <: AbilityIntegrator ,
51+ AbilityEstimatorT <: DistributionAbilityEstimator
52+ } <: ItemCategoryCriterion
53+ criterion:: PointwiseItemCategoryCriterionT
54+ integrator:: AbilityIntegratorT
55+ estimator:: AbilityEstimatorT
56+ end
57+
58+ function LikelihoodWeightedItemCategoryCriterion (bits... )
59+ @requiresome dist_est_integrator_pair = get_dist_est_and_integrator (bits... )
60+ (dist_est, integrator) = dist_est_integrator_pair
61+ criterion = PointwiseItemCategoryCriterion (bits... )
62+ return LikelihoodWeightedItemCategoryCriterion (criterion, integrator, dist_est)
63+ end
64+
65+ function compute_criterion (
66+ lwicc:: LikelihoodWeightedItemCategoryCriterion ,
67+ tracked_responses:: TrackedResponses ,
68+ item_idx,
69+ category
70+ )
71+ func = FunctionProduct (
72+ pdf (lwicc. estimator, tracked_responses),
73+ ability -> compute_criterion (lwicc. criterion, tracked_responses, item_idx, ability, category)
74+ )
75+ intval (lwicc. integrator (func, 0 , lwicc. estimator, tracked_responses))
76+ end
77+
78+ struct PointItemCategoryCriterion{
79+ PointwiseItemCategoryCriterionT <: PointwiseItemCategoryCriterion ,
80+ AbilityEstimatorT <: PointAbilityEstimator
81+ } <: ItemCategoryCriterion
82+ criterion:: PointwiseItemCategoryCriterionT
83+ estimator:: AbilityEstimatorT
84+ end
85+
86+ function compute_criterion (
87+ pic:: PointItemCategoryCriterion ,
88+ tracked_responses:: TrackedResponses ,
89+ item_idx,
90+ category
91+ )
92+ ability = maybe_tracked_ability_estimate (
93+ tracked_responses,
94+ pic. estimator
95+ )
96+ return compute_criterion (pic. criterion, tracked_responses, item_idx, ability, category)
97+ end
0 commit comments