variance
Centralized variance and confidence calculations for time estimation.
This module encapsulates all uncertainty/variance calculation logic that was previously duplicated across the estimator code.
Classes¶
ConfidenceResult
dataclass
¶
Result of confidence calculation with breakdown.
Attributes:
| Name | Type | Description |
|---|---|---|
confidence |
float
|
Overall confidence score (0.0 to 1.0). |
sample_factor |
float
|
Contribution from sample size. |
recency_factor |
float
|
Contribution from data recency. |
consistency_factor |
float
|
Contribution from run consistency. |
coverage_factor |
float
|
Contribution from data coverage. |
Source code in snakesee/variance.py
VarianceCalculator ¶
Calculator for estimation uncertainty and confidence.
This class centralizes all variance and confidence calculations that were previously scattered throughout the estimator code.
Attributes:
| Name | Type | Description |
|---|---|---|
config |
EstimationConfig containing all thresholds and multipliers. |
Example
from snakesee.state import EstimationConfig from snakesee.variance import VarianceCalculator
calc = VarianceCalculator()
Calculate variance from statistics¶
result = calc.calculate_variance(stats, scenario="rule_fallback") print(f"Variance: {result.variance}, Source: {result.source}")
Calculate confidence¶
conf = calc.calculate_confidence( sample_count=20, recency_factor=0.8, consistency_factor=0.9, coverage_factor=0.7 ) print(f"Confidence: {conf.confidence}")
Source code in snakesee/variance.py
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | |
Functions¶
__init__ ¶
__init__(config: EstimationConfig | None = None) -> None
Initialize the calculator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
EstimationConfig | None
|
Configuration to use. Defaults to DEFAULT_CONFIG. |
None
|
Source code in snakesee/variance.py
adjust_variance_for_size_scaling ¶
Adjust variance when using size-scaled estimates.
Higher size-scaling confidence reduces variance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
base_variance
|
float
|
The base variance from stats. |
required |
size_confidence
|
float
|
Confidence in the size scaling (0.0 to 1.0). |
required |
Returns:
| Type | Description |
|---|---|
float
|
Adjusted variance. |
Source code in snakesee/variance.py
aggregate_variances ¶
Aggregate multiple variances (e.g., across pending jobs).
For independent jobs, variances add linearly. If counts are provided, each variance is multiplied by its count.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
variances
|
list[float]
|
List of variance values. |
required |
counts
|
list[int] | None
|
Optional counts for each variance (default: 1 each). |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Aggregated variance. |
Source code in snakesee/variance.py
calculate_bootstrap_bounds ¶
Calculate wide bounds for bootstrap estimation (no progress yet).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
estimate
|
float
|
The central estimate. |
required |
Returns:
| Type | Description |
|---|---|
tuple[float, float]
|
Tuple of (lower_bound, upper_bound). |
Source code in snakesee/variance.py
calculate_bounds ¶
Calculate confidence bounds from estimate and std dev.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
estimate
|
float
|
The central estimate. |
required |
std_dev
|
float
|
Standard deviation. |
required |
num_std_devs
|
float
|
Number of standard deviations for bounds. |
2.0
|
Returns:
| Type | Description |
|---|---|
tuple[float, float]
|
Tuple of (lower_bound, upper_bound). |
Source code in snakesee/variance.py
calculate_confidence ¶
calculate_confidence(sample_count: int, recency_factor: float, consistency_factor: float, coverage_factor: float) -> ConfidenceResult
Calculate overall confidence from component factors.
Uses weighted combination of factors as defined in config.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sample_count
|
int
|
Total number of historical samples. |
required |
recency_factor
|
float
|
How recent the data is (0.0 to 1.0). |
required |
consistency_factor
|
float
|
How consistent recent runs are (0.0 to 1.0). |
required |
coverage_factor
|
float
|
Fraction of rules with data (0.0 to 1.0). |
required |
Returns:
| Type | Description |
|---|---|
ConfidenceResult
|
ConfidenceResult with overall confidence and breakdown. |
Source code in snakesee/variance.py
calculate_simple_confidence ¶
calculate_simple_confidence(completed_jobs: int, divisor: int | None = None, max_confidence: float | None = None) -> float
Calculate simple confidence based on completed job count.
Used for simple linear estimation when no historical data.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
completed_jobs
|
int
|
Number of completed jobs. |
required |
divisor
|
int | None
|
Denominator for the confidence fraction. Uses config default. |
None
|
max_confidence
|
float | None
|
Maximum confidence value. Uses config default. |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Confidence value. |
Source code in snakesee/variance.py
calculate_variance ¶
calculate_variance(stats: RuleTimingStats, scenario: str = 'rule_fallback', mean_override: float | None = None) -> VarianceResult
Calculate variance for a set of timing statistics.
Uses observed standard deviation when multiple samples are available, otherwise falls back to a multiplier-based estimate.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
stats
|
RuleTimingStats
|
Timing statistics to compute variance from. |
required |
scenario
|
str
|
The estimation scenario (determines fallback multiplier). Valid values: "exact_thread_match", "exact_wildcard_match", "size_scaled", "rule_fallback", "aggregate_fallback", "fuzzy_match", "global_fallback", "bootstrap" |
'rule_fallback'
|
mean_override
|
float | None
|
Optional mean to use instead of stats.weighted_mean(). |
None
|
Returns:
| Type | Description |
|---|---|
VarianceResult
|
VarianceResult with the computed variance. |
Source code in snakesee/variance.py
calculate_variance_from_mean ¶
calculate_variance_from_mean(mean: float, scenario: str = 'global_fallback') -> VarianceResult
Calculate variance when only mean is available (no stats).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
mean
|
float
|
The mean duration. |
required |
scenario
|
str
|
The estimation scenario. |
'global_fallback'
|
Returns:
| Type | Description |
|---|---|
VarianceResult
|
VarianceResult with fallback variance. |
Source code in snakesee/variance.py
std_dev_from_variance ¶
Convert total variance to standard deviation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
total_variance
|
float
|
The total variance. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Standard deviation (sqrt of variance). |
Source code in snakesee/variance.py
VarianceResult
dataclass
¶
Result of variance calculation with context.
Attributes:
| Name | Type | Description |
|---|---|---|
variance |
float
|
The computed variance value. |
source |
str
|
How the variance was computed ("observed", "single_sample", "fallback"). |
multiplier_used |
float | None
|
The multiplier that was applied (if any). |
Source code in snakesee/variance.py
Functions¶
get_calculator ¶
get_calculator(config: EstimationConfig | None = None) -> VarianceCalculator
Get a variance calculator instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
EstimationConfig | None
|
Optional config. If None, uses/creates default calculator. |
None
|
Returns:
| Type | Description |
|---|---|
VarianceCalculator
|
VarianceCalculator instance. |