(x: &[f64], y: &[f64])
| 30 | } |
| 31 | |
| 32 | fn corrcoef(x: &[f64], y: &[f64]) -> f64 { |
| 33 | let n = x.len() as f64; |
| 34 | let mean_x = x.iter().sum::<f64>() / n; |
| 35 | let mean_y = y.iter().sum::<f64>() / n; |
| 36 | |
| 37 | let mut cov = 0.0; |
| 38 | let mut var_x = 0.0; |
| 39 | let mut var_y = 0.0; |
| 40 | |
| 41 | for (xi, yi) in x.iter().zip(y.iter()) { |
| 42 | let dx = xi - mean_x; |
| 43 | let dy = yi - mean_y; |
| 44 | cov += dx * dy; |
| 45 | var_x += dx * dx; |
| 46 | var_y += dy * dy; |
| 47 | } |
| 48 | |
| 49 | cov / (var_x * var_y).sqrt() |
| 50 | } |
| 51 | |
| 52 | #[test] |
| 53 | fn test_correlations() { |
no test coverage detected