| 217 | let (a, b) = ols_line(x, y); |
| 218 | let y_mean = y.iter().sum::<f64>() / y.len() as f64; |
| 219 | let effect = x.iter().map(|v| (a + b * *v - y_mean).abs()).sum::<f64>() / x.len() as f64; |
| 220 | store.insert(j, effect); |
| 221 | } |
| 222 | store |
| 223 | } |
| 224 | |
| 225 | fn get_non_linear_effect( |
| 226 | feature_values: &[Vec<f64>], |
| 227 | partial_dep: &[Vec<f64>], |
| 228 | ) -> BTreeMap<usize, f64> { |
| 229 | let mut store = BTreeMap::new(); |
| 230 | for j in 0..feature_values.len() { |
| 231 | let x = &feature_values[j]; |
| 232 | let y = &partial_dep[j]; |
| 233 | let (a, b) = ols_line(x, y); |
| 234 | let effect = x.iter().zip(y.iter()).map(|(vx, vy)| (a + b * *vx - *vy).abs()).sum::<f64>() |
| 235 | / x.len() as f64; |
| 236 | store.insert(j, effect); |