nimcx/cxstats

::

Library     : nimcx.nim

Module      : cxstats.nim

Status      : stable

License     : MIT opensource

Latest      : 2020-06-12

Compiler    : latest stable or devel branch

OS          : Linux

Description : provides functions pertaining to statistcs and calculations

Procs

proc median(xs: openArray[float]): float {....raises: [], tags: [], forbids: [].}
proc rolling_zscore(data: openArray[float]; observed_window: openArray[float];
                    decay: float = 0.9): float {....raises: [], tags: [],
    forbids: [].}
proc showRegression(rr: RunningRegress; n: int = 5; xpos: int = 1) {.
    ...raises: [IOError, ValueError], tags: [WriteIOEffect], forbids: [].}

showRegression

Displays RunningRegress data from an already formed RunningRegress

proc showRegression(x, y: openArray[float | int]; n: int = 5; xpos: int = 1)

showRegression

quickly display RunningRegress data based on input of two openarray data series

import nimcx
var a = @[1,2,3,4,5]
var b = @[1,2,3,4,7]
showRegression(a,b)
proc showStats(x: RunningStat; n: int = 3; xpos: int = 1) {.
    ...raises: [IOError, ValueError], tags: [WriteIOEffect], forbids: [].}

showStats

quickly display runningStat data

adjust decimals default n = 3 as needed

import nimcx

var rsa:Runningstat
var rsb:Runningstat
for x in 1 .. 100:
   cleanscreen()
   decho(2)
   rsa.clear
   rsb.clear
   var a = createSeqint(500,0,100000)
   var b = createSeqint(500,0,100000)
   rsa.push(a)
   rsb.push(b)
   showStats(rsa,5)
   curup(14)
   showStats(rsb,5,xpos = 40)
   decho(2)
   printLnBiCol("Regression Run  : " & $x)
   showRegression(a,b,xpos = 20)
   sleepy(0.05)
   curup(4)

curdn(6)
doFinish()
proc zscore(data: openArray[SomeNumber]): seq[float] {.inline.}

zscore

returns the z-score in a seqfloat for each data point

import nimcx
printLn("DATA SERIES FLOAT",yellowgreen,xpos=2)
let data = createSeqFloat(12)
showSeq(data,maxitemwidth=8)
printLn("ZSCORE",salmon,xpos=2)
showSeq(zscore(data),maxitemwidth=8)
decho(3)
printLn("DATA SERIES INTEGER",yellowgreen,xpos=2)
let data2 = createSeqint(12,1,1000)
showSeq(data2,maxitemwidth=8)
printLn("ZSCORE",salmon,xpos=2)
showSeq(zscore(data2),maxitemwidth=8)
doFinish()