Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,26 @@
|
|||
# Compute the standard deviation of the observations
|
||||
# seen so far, given the current state as input:
|
||||
def standard_deviation: .ssd / .n | sqrt;
|
||||
|
||||
def update_state(observation):
|
||||
def sq: .*.;
|
||||
((.mean * .n + observation) / (.n + 1)) as $newmean
|
||||
| (.ssd + .n * ((.mean - $newmean) | sq)) as $ssd
|
||||
| { "n": (.n + 1),
|
||||
"ssd": ($ssd + ((observation - $newmean) | sq)),
|
||||
"mean": $newmean }
|
||||
;
|
||||
|
||||
def initial_state: { "n": 0, "ssd": 0, "mean": 0 };
|
||||
|
||||
# Given an array of observations presented as input:
|
||||
def simulate:
|
||||
def _simulate(i; observations):
|
||||
if (observations|length) <= i then empty
|
||||
else update_state(observations[i])
|
||||
| standard_deviation, _simulate(i+1; observations)
|
||||
end ;
|
||||
. as $in | initial_state | _simulate(0; $in);
|
||||
|
||||
# Begin:
|
||||
simulate
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
$ jq -s -f Dynamic_standard_deviation.jq observations.txt
|
||||
0
|
||||
1
|
||||
0.9428090415820634
|
||||
0.8660254037844386
|
||||
0.9797958971132711
|
||||
0.9999999999999999
|
||||
1.3997084244475302
|
||||
1.9999999999999998
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# requires jq version > 1.4
|
||||
def simulate(stream):
|
||||
foreach stream as $observation
|
||||
(initial_state;
|
||||
update_state($observation);
|
||||
standard_deviation);
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
|
||||
# jq is assumed to be on PATH
|
||||
|
||||
PROGRAM='
|
||||
def standard_deviation: .ssd / .n | sqrt;
|
||||
|
||||
def update_state(observation):
|
||||
def sq: .*.;
|
||||
((.mean * .n + observation) / (.n + 1)) as $newmean
|
||||
| (.ssd + .n * ((.mean - $newmean) | sq)) as $ssd
|
||||
| { "n": (.n + 1),
|
||||
"ssd": ($ssd + ((observation - $newmean) | sq)),
|
||||
"mean": $newmean }
|
||||
;
|
||||
|
||||
def initial_state: { "n": 0, "ssd": 0, "mean": 0 };
|
||||
|
||||
# Input should be [observation, null] or [observation, state]
|
||||
def standard_deviations:
|
||||
. as $in
|
||||
| if type == "array" then
|
||||
(if .[1] == null then initial_state else .[1] end) as $state
|
||||
| $state | update_state($in[0])
|
||||
| standard_deviation, .
|
||||
else empty
|
||||
end
|
||||
;
|
||||
|
||||
standard_deviations
|
||||
'
|
||||
state=null
|
||||
while read -p "Next observation: " observation
|
||||
do
|
||||
result=$(echo "[ $observation, $state ]" | jq -c "$PROGRAM")
|
||||
sed -n 1p <<< "$result"
|
||||
state=$(sed -n 2p <<< "$result")
|
||||
done
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
$ ./standard_deviation_server.sh
|
||||
Next observation: 10
|
||||
0
|
||||
Next observation: 20
|
||||
5
|
||||
Next observation: 0
|
||||
8.16496580927726
|
||||
Loading…
Add table
Add a link
Reference in a new issue