use traquer::statistic::regression::*;
mod common;
#[test]
fn test_mse() {
let stats = common::test_data();
let result = mse(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
vec![
25.0,
14.789798693847843,
41.80790510457397,
40.38594878463846,
39.460837932740105,
34.710045583599516,
29.867181340247043,
28.391596172716163,
26.01725305209887,
23.46881768005551,
22.169915400281422,
20.839098146821925,
19.719941450262784,
18.547974124469743,
17.479982548520397,
16.663108238694804,
15.741748930536286,
14.981608931136886,
14.201950559754838,
13.926978256834264,
13.27716494489245,
12.74354854569736,
12.218715978471902,
11.71110695762521,
11.266317181275808,
11.09299774745215,
10.880636212498993,
10.610342022379752,
10.374113601077939,
10.16976333630737,
9.924286942142286,
9.641181117938686,
9.777435853090013,
9.585688507460445,
],
result
);
}
#[test]
fn test_rmse() {
let stats = common::test_data();
let result = rmse(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
mse(&stats.close, &stats.high)
.map(|x| x.sqrt())
.collect::<Vec<_>>(),
result
);
}
#[test]
fn test_mae() {
let stats = common::test_data();
let result = mae(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
vec![
5.0,
3.5699996948242188,
5.643333435058594,
5.734999656677246,
5.783999633789063,
5.371665954589844,
4.732856205531529,
4.672499179840088,
4.447777218288845,
4.075999450683594,
3.9809084805575283,
3.8566662470499673,
3.7529226449819713,
3.614856719970703,
3.4798662821451822,
3.3936245441436768,
3.2528231003705192,
3.151833004421658,
3.0075259961579976,
3.0046497344970704,
2.8868092128208707,
2.8119543248956855,
2.7253476018491,
2.6197080612182617,
2.5456797790527346,
2.5477691063514123,
2.539148118760851,
2.5134642464773997,
2.4936551061169854,
2.479199981689453,
2.450838642735635,
2.4033124446868896,
2.4444241379246567,
2.4256175546085132
],
result
);
}
#[test]
fn test_mape() {
let stats = common::test_data();
let result = mape(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
vec![
10.869565217391305,
7.224079780059318,
9.82808453046002,
9.972794272967613,
10.403214971998818,
9.869402901833887,
8.714336763817764,
8.755604321509157,
8.425932445909215,
7.736829428643285,
7.630348959382129,
7.455597968038579,
7.3404487870393265,
7.108068994900376,
6.884966616732182,
6.782780964767841,
6.526777636953273,
6.3677078613281495,
6.084288589449163,
6.140886376936299,
5.908496604711524,
5.771557986517684,
5.603244458848264,
5.388425196040363,
5.240596839038663,
5.25511167683952,
5.253414080726349,
5.207466054214349,
5.1680702497721995,
5.143028328371067,
5.08404951195821,
4.984003953857399,
5.054645398122806,
5.013674348870559,
],
result
);
}
#[test]
fn test_smape() {
let stats = common::test_data();
let result = smape(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
vec![
10.309278350515463,
6.912483291571219,
9.269894351681222,
9.425467593055519,
9.826743641750468,
9.347307386005967,
8.26457324580098,
8.313146671710687,
8.014545157816704,
7.365411878300978,
7.27372561132519,
7.116279261147159,
7.01397060076308,
6.799064210679083,
6.591932840353765,
6.499668845558642,
6.258602267518184,
6.1107700219673236,
5.840620884034387,
5.89683687819611,
5.6756924602958,
5.547457157523905,
5.388109464302675,
5.18221251742101,
5.042064419304636,
5.058311391390701,
5.059004973313347,
5.01724477059905,
4.9816160856665626,
4.959608182859544,
4.904802917750622,
4.8098102061126635,
4.877908497316335,
4.8401993453835095,
],
result
);
}
#[test]
fn test_mda() {
let stats = common::test_data();
let result = mda(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
vec![
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
0.8571428571428571,
0.75,
0.7777777777777778,
0.7,
0.6363636363636364,
0.6666666666666666,
0.6923076923076923,
0.7142857142857143,
0.7333333333333333,
0.75,
0.7647058823529411,
0.7777777777777778,
0.7368421052631579,
0.75,
0.7619047619047619,
0.7727272727272727,
0.782608695652174,
0.7916666666666666,
0.8,
0.7692307692307693,
0.7777777777777778,
0.7857142857142857,
0.7586206896551724,
0.7666666666666667,
0.7741935483870968,
0.78125,
0.7878787878787878,
],
result[1..]
);
}
#[test]
fn test_mase() {
let stats = common::test_data();
let result = mase(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
[
0.2586956443618357,
0.5906157252555707,
0.6499810418057367,
0.6629225651466101,
0.7021785561555351,
0.6645714378049574,
0.7081077123039311,
0.7506796751237231,
0.7459128097414857,
0.7868962578322483,
0.8199328220627006,
0.824063446272828,
0.823141252303084,
0.8208614333821371,
0.8261013614605646,
0.8292729100447778,
0.8277639162122615,
0.8046293515788161,
0.838055482335999,
0.8333744069800522,
0.8428637803317439,
0.851792033838831,
0.8475633536685455,
0.8248455333592076,
0.8501631437433327,
0.8600553148730471,
0.8678200431183396,
0.872561058669536,
0.886738913172739,
0.8889511537019651,
0.8886292399826446,
0.9112483905653928,
0.9101752878693691
],
result[1..]
);
}
#[test]
fn test_emae() {
let stats = common::test_data();
let result = emae(&stats.close, &stats.high).collect::<Vec<_>>();
assert_eq!(stats.close.len(), result.len());
assert_eq!(
[
3.1609701950004765,
3.004329977893074,
2.279411642074049,
1.8846528761568404,
1.5081324070745339,
1.1613516217236113,
1.0184840364517995,
0.8769276902702197,
0.7337664883901667,
0.6583605094700364,
0.5913681072056433,
0.5386264166475463,
0.48645105828681245,
0.44218650424889805,
0.4093300617694232,
0.373369288841444,
0.3456666025333258,
0.31527313536376456,
0.30113560279553997,
0.27748629221038573,
0.2593089769405124,
0.2415289624260403,
0.22371297843199978,
0.2091402134785959,
0.20123096114490854,
0.19340777037589577,
0.1847392436861936,
0.17683164475568086,
0.16993788222726583,
0.16244101999900978,
0.1541488048243848,
0.1514282289577207,
0.14565246790002928
],
result[1..]
);
}