(x: &[f64], y: &[f64])
| 308 | } |
| 309 | |
| 310 | fn ols_line(x: &[f64], y: &[f64]) -> (f64, f64) { |
| 311 | let mx = x.iter().sum::<f64>() / x.len() as f64; |
| 312 | let my = y.iter().sum::<f64>() / y.len() as f64; |
| 313 | let mut cov = 0.0; |
| 314 | let mut varx = 0.0; |
| 315 | for (xi, yi) in x.iter().zip(y.iter()) { |
| 316 | cov += (*xi - mx) * (*yi - my); |
| 317 | varx += (*xi - mx).powi(2); |
| 318 | } |
| 319 | let b = if varx > 0.0 { cov / varx } else { 0.0 }; |
| 320 | let a = my - b * mx; |
| 321 | (a, b) |
| 322 | } |
no test coverage detected