(data: &[f64])
| 339 | } |
| 340 | |
| 341 | fn std_deviation(data: &[f64]) -> Option<f64> { |
| 342 | let count = data.len(); |
| 343 | |
| 344 | if count > 0 { |
| 345 | let mean = mean(data).unwrap(); |
| 346 | let variance = data |
| 347 | .iter() |
| 348 | .map(|value| { |
| 349 | let diff = mean - *value; |
| 350 | diff * diff |
| 351 | }) |
| 352 | .sum::<f64>() |
| 353 | / count as f64; |
| 354 | |
| 355 | Some(variance.sqrt()) |
| 356 | } else { |
| 357 | None |
| 358 | } |
| 359 | } |
| 360 | |
| 361 | mod adjuster { |
| 362 | pub fn identity(v: f64) -> f64 { |