Carp/test/statistics.carp

102 lines
3.1 KiB
Plaintext
Raw Normal View History

(load "Test.carp")
(load "Statistics.carp")
2017-12-12 17:08:33 +03:00
(use-all Double Test Statistics)
2017-10-26 18:55:10 +03:00
2017-11-07 17:06:47 +03:00
(defn all-eq [a b]
(if (Int./= (Array.length a) (Array.length b))
2017-11-07 17:06:47 +03:00
false
(let [res true]
(do
(for [i 0 (Array.length a)]
2017-11-07 17:06:47 +03:00
(if (not (Double.= @(Array.nth a i) @(Array.nth b i)))
(set! res false)
2017-11-07 17:06:47 +03:00
()))
res))))
(defn all-approx [a b]
(if (Int./= (Array.length a) (Array.length b))
false
(let [res true]
(do
(for [i 0 (Array.length a)]
(if (not (Double.approx @(Array.nth a i) @(Array.nth b i)))
(set! res false)
()))
res))))
2017-10-26 18:55:10 +03:00
(defn main []
(with-test test
(assert-equal test
2.0
(median &[1.0 2.0 3.0])
2017-11-25 21:19:15 +03:00
"median works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
2.5
(mean &[1.0 2.0 4.5])
2017-11-25 21:19:15 +03:00
"mean works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
2.0
(low-median &[1.0 2.0 4.0 5.0])
2017-11-25 21:19:15 +03:00
"low-median works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
4.0
(high-median &[1.0 2.0 4.0 5.0])
2017-11-25 21:19:15 +03:00
"high-median works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
3.0
(grouped-median &[1.0 2.0 4.0 5.0] 2)
2017-11-25 21:19:15 +03:00
"grouped-median works as expected I")
2017-10-26 18:55:10 +03:00
(assert-equal test
2.5
(grouped-median &[1.0 2.0 4.0 5.0] 3)
2017-11-25 21:19:15 +03:00
"grouped-median works as expected II")
2017-10-26 18:55:10 +03:00
(assert-equal test
1.0
(variance &[1.0 2.0 4.0 5.0])
2017-11-25 21:19:15 +03:00
"variance works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
0.75
(pvariance &[1.0 2.0 4.0 5.0])
2017-11-25 21:19:15 +03:00
"pvariance works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
2.0
(stdev &[1.0 1.0 9.0 9.0])
2017-11-25 21:19:15 +03:00
"stdev works as expected")
2017-10-26 18:55:10 +03:00
(assert-equal test
2.0
(pstdev &[1.0 9.0])
2017-11-25 21:19:15 +03:00
"pstdev works as expected")
(assert-op test
&[0.0 0.0 0.0 0.0 8.0]
&(winsorize &[0.0 0.0 0.0 0.0 10.0] 5.0)
2017-11-25 21:19:15 +03:00
"winsorizing works as expected"
all-approx)
2017-11-25 21:19:15 +03:00
(assert-op test
&[2.5 5.0 7.5]
&(quartiles &[0.0 2.5 5.0 7.5 10.0])
"quartiles work as expected"
all-eq)
2017-11-07 17:06:47 +03:00
(assert-equal test
5.0
(iqr &[0.0 2.5 5.0 7.5 10.0])
2017-11-25 21:19:15 +03:00
"iqr works as expected")
2017-11-07 17:06:47 +03:00
(assert-equal test
40.0
(stdev-pct &[1.0 1.0 9.0 9.0])
2017-11-25 21:19:15 +03:00
"stdev-pct works as expected")
(assert-op test
3.7065
(median-abs-dev &[5.0 10.0])
"median-abs-dev works as expected"
Double.approx)
(assert-op test
49.42
(median-abs-dev-pct &[5.0 10.0])
"median-abs-dev-pct works as expected"
Double.approx)
2017-11-07 17:06:47 +03:00
(assert-equal test
2.0
@(Summary.median &(summary &[1.0 2.0 3.0]))
2018-09-13 02:10:17 +03:00
"summary works as expected")))