summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorJamesP <jlp765@gmail.com>2015-11-12 06:33:26 +1000
committerJamesP <jlp765@gmail.com>2015-11-12 06:33:26 +1000
commit52e40995b7adfec8c1a837bed5a84d475f394602 (patch)
treea839844777771942d952ba696c5d771e8bae65cd /lib
parent4cefbc2914c5ca470b1214cc1b77bf263aebd35a (diff)
downloadNim-52e40995b7adfec8c1a837bed5a84d475f394602.tar.gz
added helper procs for standalone calc of stats for array/seq
Changed derivation to use runningstats, so there
is a single point of truth for the calculations, and provides
more stats functions
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/stats.nim45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/pure/stats.nim b/lib/pure/stats.nim
index 5811e141e..43d9c35f6 100644
--- a/lib/pure/stats.nim
+++ b/lib/pure/stats.nim
@@ -166,6 +166,51 @@ proc `+`*(a, b: RunningStat): RunningStat =
 proc `+=`*(a: var RunningStat, b: RunningStat) {.inline.} =
   ## add a second RunningStats `b` to `a`
   a = a + b
+# ---------------------- standalone array/seq stats ---------------------
+proc mean*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.mean()
+
+proc variance*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.variance()
+
+proc varianceS*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.varianceS()
+
+proc standardDeviation*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.standardDeviation()
+
+proc standardDeviationS*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.standardDeviationS()
+
+proc skewness*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.skewness()
+
+proc skewnessS*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.skewnessS()
+
+proc kurtosis*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.kurtosis()
+
+proc kurtosisS*[T](x: openArray[T]): float =
+  var rs: RunningStat
+  rs.push(x)
+  result = rs.kurtosisS()
 
 # ---------------------- Running Regression -----------------------------