Sizes the human-labelling budget for an evaluation graded by a model judge. Given how many items the judge will score and how well it tracks human labels, returns the number of human labels needed to hit a target precision.
Usage
ev_judge_power(
n_total,
correlation = NULL,
target_se = NULL,
target_mde = NULL,
sd_gold = 0.5,
sd_judge = NULL,
pilot = NULL,
power = 0.8,
alpha = 0.05
)Arguments
- n_total
Number of items the judge will score.
- correlation
Correlation between judge and human scores, from a pilot. A fitted
ev_judge_debias()result may be passed instead viapilot.- target_se
Target standard error for the final estimate. Supply this or
target_mde.- target_mde
Target minimum detectable effect, converted to a standard error at the given
powerandalpha.- sd_gold
Standard deviation of the human scores. Defaults to
0.5, the maximum for a binary score, which is conservative.- sd_judge
Standard deviation of the judge scores. Defaults to
sd_gold.- pilot
Optional
ev_judge_debias()result to takecorrelation,sd_goldandsd_judgefrom.- power, alpha
Used only when
target_mdeis supplied. Defaults0.8and0.05.
Value
An evaluatellm_judge_power object with elements n_labels,
n_labels_without_judge, saving, achieved_se, target_se,
correlation, lambda, and n_total.
Details
This is the question that actually has a budget attached, since human labels are the expensive input. The function evaluates the variance of the tuned prediction-powered estimator across candidate label counts and returns the smallest one that meets the target, alongside the number of labels that would have been needed without a judge.
A judge correlated at 0.8 with human labels typically cuts the required labelling budget by around two thirds. Below about 0.4 the judge is barely worth the pipeline.
See also
Other judge:
ev_judge_agreement(),
ev_judge_debias()
Examples
# 20,000 judge-scored items, judge correlates 0.8 with humans,
# want a standard error of 0.01
ev_judge_power(n_total = 20000, correlation = 0.8, target_se = 0.01)
#>
#> Human labels required
#>
#> Human labels 979
#> Without a judge 2500
#> Saving 61%
#>
#> Target SE 0.0100
#> Achieved SE 0.0100
#> Judge-scored 20000
#> Correlation 0.80
#> Lambda 0.761
#>
# A weaker judge needs far more human labels
ev_judge_power(n_total = 20000, correlation = 0.4, target_se = 0.01)
#>
#> Human labels required
#>
#> Human labels 2143
#> Without a judge 2500
#> Saving 14%
#>
#> Target SE 0.0100
#> Achieved SE 0.0100
#> Judge-scored 20000
#> Correlation 0.40
#> Lambda 0.357
#>