pub fn mae(market: &[f64], model: &[f64]) -> f64 {
market
.iter()
.zip(model.iter())
.map(|(m, d)| (m - d).abs())
.sum::<f64>()
/ market.len() as f64
}
pub fn mse(market: &[f64], model: &[f64]) -> f64 {
market
.iter()
.zip(model.iter())
.map(|(m, d)| (m - d).powi(2))
.sum::<f64>()
/ market.len() as f64
}
pub fn rmse(market: &[f64], model: &[f64]) -> f64 {
mse(market, model).sqrt()
}
pub fn mpe(market: &[f64], model: &[f64]) -> f64 {
let sum: f64 = market
.iter()
.zip(model.iter())
.map(|(m, d)| {
if m.abs() < f64::EPSILON {
0.0
} else {
(m - d) / m
}
})
.sum();
(sum / market.len() as f64) * 100.0
}
pub fn mre(market: &[f64], model: &[f64]) -> f64 {
let sum: f64 = market
.iter()
.zip(model.iter())
.map(|(m, d)| {
if m.abs() < f64::EPSILON {
0.0
} else {
(d - m) / m
}
})
.sum();
sum / market.len() as f64
}
pub fn mrpe(market: &[f64], model: &[f64]) -> f64 {
mre(market, model) * 100.0
}
pub fn mape(market: &[f64], model: &[f64]) -> f64 {
let sum: f64 = market
.iter()
.zip(model.iter())
.map(|(m, d)| {
if m.abs() < f64::EPSILON {
0.0
} else {
(m - d).abs() / m.abs()
}
})
.sum();
(sum / market.len() as f64) * 100.0
}
pub fn mspe(market: &[f64], model: &[f64]) -> f64 {
let sum: f64 = market
.iter()
.zip(model.iter())
.map(|(m, d)| {
if m.abs() < f64::EPSILON {
0.0
} else {
((m - d) / m).powi(2)
}
})
.sum();
(sum / market.len() as f64) * 100.0
}
pub fn rmspe(market: &[f64], model: &[f64]) -> f64 {
mspe(market, model).sqrt()
}